<?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="sendMailFromTemplateSetting" short-description="Send Mail from Email Template Setting">
        <!-- if partyIdTo provided but no emailAddress, get it from the partyContactMech -->
        <if-empty field="parameters.sendTo">
            <if-empty field="parameters.partyIdTo">
                <log level="error" message="PartyId or SendTo should be specified!"></log>
                <add-error>
                    <fail-property resource="CommonUiLabels" property="CommonEmailShouldBeSpecified"/>
                </add-error>
            <check-errors/>
            </if-empty>
        </if-empty>
        <if-not-empty field="parameters.partyIdTo">
            <if-empty field="parameters.sendTo">
                <set field="getEmail.partyId" from-field="parameters.partyIdTo"/>
                <call-service service-name="getPartyEmail" in-map-name="getEmail">
                    <result-to-field result-name="emailAddress" field="parameters.sendTo"/>
                </call-service>
                <if-empty field="parameters.sendTo">
                    <log level="info" message="PartyId: ${parameters.partyIdTo} has no valid email address, not sending email"></log>
                    <return/>
                </if-empty>
            </if-empty>
        </if-not-empty>
        <entity-one entity-name="EmailTemplateSetting" value-field="emailTemplateSetting"/>
        <if-not-empty field="emailTemplateSetting">
            <set field="emailParams.bodyScreenUri" from-field="emailTemplateSetting.bodyScreenLocation"/>
            <set field="emailParams.xslfoAttachScreenLocation" from-field="emailTemplateSetting.xslfoAttachScreenLocation"/>
            <set field="emailParams.partyId" from-field="parameters.partyIdTo"/>
            <if-not-empty field="emailTemplateSetting.fromAddress">
                <set field="emailParams.sendFrom" from-field="emailTemplateSetting.fromAddress"/>
                <else>
                    <property-to-field resource="general" property="defaultFromEmailAddress" field="emailParams.sendFrom" default="ofbiztest@example.com"/>                    
                </else>
            </if-not-empty>
            <set field="emailParams.sendCc" from-field="emailTemplateSetting.ccAddress"/>
            <set field="emailParams.sendBcc" from-field="emailTemplateSetting.bccAddress"/>
            <set field="emailParams.subject" from-field="emailTemplateSetting.subject"/>
            <set field="emailParams.contentType" from-field="emailTemplateSetting.contentType" default-value="text/html"/>
            <if-not-empty field="parameters.custRequestId">
                <set field="emailParams.bodyParameters.custRequestId" from-field="parameters.custRequestId"/>
            </if-not-empty>
            <!-- copy the incoming parameter fields AFTER setting the ones from EmailTemplateSetting so they can override things like subject, sendFrom, etc -->
            <set-service-fields service-name="sendMailFromScreen" map="parameters" to-map="emailParams"/>
            <call-service service-name="sendMailFromScreen" in-map-name="emailParams">
                <result-to-result result-name="messageWrapper"/>
                <result-to-result result-name="body"/>
                <result-to-result result-name="communicationEventId"/>
            </call-service>
            <else>
                <log level="error" message="sendMailFromTemplateSetting service could not find the emailTemplateSettingId: ${parameters.emailTemplateSettingId}"></log>
            </else>
        </if-not-empty>
    </simple-method>
</simple-methods>
