<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd">

    <simple-method method-name="createCommunicationEventContent"
        short-description="Upload Content and Create Communication Content Association">
        <!-- Call layout to get field -->
        <call-class-method class-name="org.apache.ofbiz.content.layout.LayoutWorker"
            method-name="uploadImageAndParameters" ret-field="formInput">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <string value="uploadedFile"/>
        </call-class-method>

        <if-empty field="formInput.formInput.contentId">
            <if-empty field="formInput.imageFileName">
                <add-error>
                    <fail-property resource="PartyUiLabels" property="PartyCreateCommunicationEventUploadFileMissing"/>
                </add-error>
            </if-empty>
            <check-errors/>
            
            <set field="parameters.imageFileName" from-field="formInput.imageFileName"/>
            
            <!-- Create Data Resource -->
            <set-service-fields service-name="createContentFromUploadedFile"
                map="formInput.formInput" to-map="data"/>
            <set field="data.dataResourceTypeId" value="LOCAL_FILE"/>
            <set field="data.dataTemplateTypeId" value="NONE"/>
            <set field="data.dataCategoryId" from-field="formInput.formInput.dataCategoryId"/>
            
            <set field="data.statusId" from-field="formInput.formInput.resourceStatusId"/>
            <set field="data.dataResourceName" from-field="formInput.imageFileName"/>
            <set field="data.mimeTypeId" from-field="mimeType.mimeTypeId"/>
            <set field="data.uploadedFile" from-field="formInput.imageData"/>
            <set field="data._uploadedFile_fileName" from-field="formInput.imageFileName"/>
            <set field="data._uploadedFile_contentType" from-field="formInput.formInput.mimeTypeId"/>
            <call-service service-name="createDataResource" in-map-name="data">
                <result-to-field result-name="dataResourceId" field="parameters.dataResourceId"/>
            </call-service>
            
            <!-- Create attach upload to data resource -->
            <set-service-fields service-name="attachUploadToDataResource" map="formInput.formInput"
                to-map="attachMap"/>
            <set field="attachMap.uploadedFile" from-field="formInput.imageData"/>
            <set field="attachMap._uploadedFile_fileName" from-field="formInput.imageFileName"/>
            <set field="attachMap._uploadedFile_contentType" from-field="formInput.formInput.mimeTypeId"/>
            <set field="attachMap.dataResourceId" from-field="parameters.dataResourceId"/>
            <set field="attachMap.mimeTypeId" from-field="mimeType.mimeTypeId"/>
            <call-service service-name="attachUploadToDataResource" in-map-name="attachMap"/>
            
            <!-- Create content from dataResource -->
            <set-service-fields service-name="createContentFromDataResource"
                map="formInput.formInput" to-map="contentMap"/>
            <set field="contentMap.roleTypeId" from-field="formInput.formInput.roleTypeId"/>
            <set field="contentMap.partyId" from-field="formInput.formInput.partyId"/>
            <set field="contentMap.contentTypeId" from-field="formInput.formInput.contentTypeId"/>
            <set field="contentMap.dataResourceId" from-field="parameters.dataResourceId"/>
            <call-service service-name="createContentFromDataResource" in-map-name="contentMap">
                <result-to-field result-name="contentId" field="parameters.contentId"/>
            </call-service>
            <log level="always" message=" Content : ${parameters.contentId}"/>
        </if-empty>
        <!-- Create party content -->
        <set-service-fields service-name="createPartyContent" map="formInput.formInput"
            to-map="partycontent"/>
        <set field="partycontent.contentId" from-field="parameters.contentId"/>
        <set field="partycontent.partyContentTypeId"
            from-field="formInput.formInput.partyContentTypeId"/>
        <set field="partycontent.partyId" from-field="formInput.formInput.partyId"/>
        <call-service service-name="createPartyContent" in-map-name="partycontent"/>

        <!-- save header fields -->
        <set-service-fields service-name="updateCommunicationEvent" map="formInput.formInput" to-map="updateMap"/>
        <call-service service-name="updateCommunicationEvent" in-map-name="updateMap"/>

        <!-- Create communication event and content association -->
        <set-service-fields service-name="createCommEventContentAssoc"
            map="formInput.formInput" to-map="contentAssoc"/>
        <set field="contentAssoc.contentId" from-field="parameters.contentId"/>
        <set field="contentAssoc.communicationEventId"
            from-field="formInput.formInput.communicationEventId"/>
        <call-service service-name="createCommEventContentAssoc" in-map-name="contentAssoc">
            <result-to-field result-name="fromDate" field="fromDate"/>
        </call-service>

        <!-- create ContentAssoc-->
        <set-service-fields service-name="createContentAssoc" map="formInput.formInput" to-map="contentMap"/>
        <if-not-empty field="formInput.formInput.contentIdFrom">
            <set field="contentMap.contentAssocTypeId" value="SUB_CONTENT"/>
            <set field="contentMap.contentIdFrom" from-field="formInput.formInput.contentIdFrom"/>
            <set field="contentMap.contentId" from-field="formInput.formInput.contentIdFrom"/>
            <set field="contentMap.contentIdTo" from-field="parameters.contentId"/>
            <now-timestamp field="contentMap.fromDate"/>
            <entity-and entity-name="ContentAssoc" list="contentAssoList">
                <field-map field-name="contentId" from-field="contentMap.contentId"/>
                <field-map field-name="contentIdTo" from-field="contentMap.contentIdTo"/>
            </entity-and>
            <if-empty field="contentAssonList">
                <call-service service-name="createContentAssoc" in-map-name="contentMap"/>           
            </if-empty>
        </if-not-empty>

        <!-- Return to request -->
        <field-to-request field="formInput.formInput.communicationEventId" request-name="communicationEventId"/>
        <set field="my" value="My"/>
        <field-to-request field="my"/>
    </simple-method>

    <simple-method method-name="createCommunicationEventRole"
        short-description="Add a role to a communictaion event and save communication event itseld">

        <!-- save header fields -->
        <set-service-fields service-name="updateCommunicationEvent" map="formInput" to-map="updateMap"/>
        <set field="updateMap.communicationEventId" from-field="parameters.communicationEventId"/>
        <call-service service-name="updateCommunicationEvent" in-map-name="updateMap"/>

        <!-- add role -->
        <set-service-fields service-name="createCommunicationEventRole" to-map="createRole" map="parameters"/>
        <call-service service-name="createCommunicationEventRole" in-map-name="createRole"/>

        <!-- Return to request -->
        <field-to-request field="parameters.communicationEventId" request-name="communicationEventId"/>
        <set field="my" value="My"/>
        <field-to-request field="my"/>
    </simple-method>

    <simple-method method-name="allocateMsgToParty" short-description="Allocate an emailaddress to an existing/new party, update the communication event accordingly">
        <entity-one entity-name="CommunicationEvent" value-field="communicationEvent"/>
        <if-empty field="communicationEvent">
            <add-error>
                <fail-property resource="PartyUiLabels" property="PartyCommunicationEventNotFound"/>
            </add-error>
        </if-empty>
        
        <if-empty field="parameters.partyId">
            <if-empty field="parameters.emailAddress">
                <add-error>
                    <fail-property resource="PartyUiLabels" property="PartyEmailAddressRequired"/>
                </add-error>
            </if-empty>
            
            <if-empty field="parameters.lastName">
                <add-error>
                    <fail-property resource="PartyUiLabels" property="PartyLastNameRequested"/>
                </add-error>
            </if-empty>
            
            <if-empty field="parameters.firstName">
                <add-error>
                    <fail-property resource="PartyUiLabels" property="PartyFirstNameRequested"/>
                </add-error>
                <check-errors/>
            </if-empty>
        </if-empty>
        
        <check-errors/>
        
        <!-- create partyId if not provided -->
        <if-empty field="parameters.partyId">
            <set-service-fields service-name="createPerson" map="parameters" to-map="newParty"/>
            <call-service service-name="createPerson" in-map-name="newParty">
                <result-to-field result-name="partyId" field="parameters.partyId"/>
            </call-service>
        </if-empty>
        
        <!-- allocate email to the party -->
        <if-not-empty field="parameters.emailAddress">
            <entity-one entity-name="Party" value-field="party"/>
            <if-empty field="party">
                <add-error>
                    <fail-property resource="PartyUiLabels" property="PartyPartyIdMissing"/>
                </add-error>
                <check-errors />
            </if-empty>
            <set field="newEmail.contactMechPurposeTypeId" value="PRIMARY_EMAIL"/>
            <set field="newEmail.partyId" from-field="parameters.partyId"/>
            <set field="newEmail.emailAddress" from-field="parameters.emailAddress"/>
            <call-service service-name="createPartyEmailAddress"
                in-map-name="newEmail">
                <result-to-field result-name="contactMechId" field="inCom.contactMechIdFrom"/>
            </call-service>
        </if-not-empty>
        
        <!-- update the communication event -->
        <set field="inCom.communicationEventId" from-field="parameters.communicationEventId"/>
        <set field="inCom.partyIdFrom" from-field="parameters.partyId"/>
        <set field="inCom.statusId" value="COM_ENTERED"/>
        <call-service service-name="updateCommunicationEvent" in-map-name="inCom"/>
        
        <field-to-request field="parameters.communicationEventId" request-name="communicationEventId"/>
        <entity-one entity-name="PartyNameView" value-field="nameView"/>
        <set field="_event_message_" value="Email addres: ${parameters.emailAddress} allocated to party: ${nameView.groupName}${nameView.firstName} ${nameView.middleName} ${nameView.lastName}[${parameters.partyId}]"/>
    </simple-method>
    
</simple-methods>
