<?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"
       xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.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.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>
