<?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.
-->

<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
    <description>Content Component Services</description>
    <vendor>OFBiz</vendor>

    <!--
        This service must do two things:

        First, call persistContentAndAssoc service to create the Content, DataResource and ImageDataResource/ElectronicText/??? entities.
            Note that it will not create a ContentAssoc entity, which persistContentAndAssoc can do.
            It should be able to auto populate the service parameters for persistContentAndAssoc from this service's input parameters
            using ModelService.makeValid (or the simple method equivalent).
            persistContentAndAssoc will return contentId.
            
        Second, it must create a CommEventContentAssoc record.
            The fromData should be defaulted if not passed in.
    -->
    <service name="createCommContentDataResource" engine="simple"
                location="component://content/script/org/ofbiz/content/content/ContentServices.xml" invoke="createCommContentDataResource" auth="true">
        <description>Create CommunicationEvent and Content</description>
        <implements service="persistContentAndAssoc"/>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="OUT" optional="false"/>
    </service>

    <service name="updateCommContentDataResource" engine="simple"
                location="component://content/script/org/ofbiz/content/content/ContentServices.xml" invoke="updateCommContentDataResource" auth="true">
        <description>Update CommunicationEvent and Content</description>
        <implements service="persistContentAndAssoc"/>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
    </service>

    <service name="createCommEventContentAssoc" engine="simple"
                location="component://content/script/org/ofbiz/content/content/ContentServices.xml" invoke="createCommEventContentAssoc" auth="true">
        <description>Create CommEventContentAssoc</description>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="contentId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="INOUT" optional="true"/>
        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
         <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
    </service>

    <service name="updateCommEventContentAssoc" engine="simple"
                location="component://content/script/org/ofbiz/content/content/ContentServices.xml" invoke="updateCommEventContentAssoc" auth="true">
        <description>Update CommEventContentAssoc</description>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="contentId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
        <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
         <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
    </service>

    <service name="removeCommEventContentAssoc" engine="simple"
                location="component://content/script/org/ofbiz/content/content/ContentServices.xml" invoke="removeCommEventContentAssoc" auth="true">
        <description>Remove CommEventContentAssoc</description>
        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
        <attribute name="contentId" type="String" mode="IN" optional="false"/>
        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
    </service>

</services>
