<?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">
    <!-- MarketingCampaignRole methods -->
    <simple-method method-name="createMarketingCampaignRole" short-description="Add Role To MarketingCampaign">
        <!-- allow if userLogin.partyId = parameters.partyId or has permission -->
        <if>
            <condition>
                <and>
                    <if-compare-field field="userLogin.partyId" to-field="parameters.partyId" operator="not-equals" />
                    <not><if-has-permission permission="MARKETING" action="_CREATE" /></not>
                </and>
            </condition>
            <then>
                <add-error>
                    <fail-property resource="MarketingUiLabels.xml" property="MarketingCreatePermissionError" />
                </add-error>
            </then>
        </if>
        <entity-one entity-name="MarketingCampaignRole" value-field="marketingCampaignRole" />
        <if-empty field="marketingCampaignRole">
            <make-value entity-name="MarketingCampaignRole" value-field="marketingCampaignRole" map="parameters" />
            <create-value value-field="marketingCampaignRole" />
            <check-errors />
        </if-empty>
    </simple-method>
</simple-methods>
