<?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="createCustRequestContent"
        short-description="Create Customer Request Content" login-required="false">
        <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="dataResourceName"/>
        </call-class-method>

        <!-- Check input parameters -->
        <if>
            <condition>
                <and>
                    <if-empty field="formInput.formInput.contentId"/>
                    <if-empty field="formInput.imageFileName"/>
                </and>
            </condition>
            <then>
                <add-error>
                    <fail-property resource="ContentUiLabels" property="ContentContentIdOrUploadFileIsMissing"/>
                </add-error>
            </then>
        </if>
        <check-errors/>
        <!-- Create new content form upload file / set content from Existing content -->
        <if-empty field="formInput.formInput.contentId">
                <if>
                    <condition>
                        <or>
                            <!-- Compaire MimeType between upload file and selected MimeType -->
                            <if-compare-field field="formInput.uploadMimeType" operator="equals" to-field="formInput.formInput.mimeTypeId"/>
                            <if-compare field="formInput.formInput.mimeTypeId" operator="equals"  value="application/octet-stream"/>
                            <if-compare field="formInput.formInput.mimeTypeId" operator="equals"  value=""/>
                        </or>
                    </condition>
                    <then>
                        <!-- Create new content from upload file -->
                        <set-service-fields service-name="createContentFromUploadedFile"
                            map="formInput.formInput" to-map="inMap"/>
                        <set field="inMap._uploadedFile_fileName" from-field="formInput.imageFileName"/>
                        <set field="inMap.uploadedFile" from-field="formInput.imageData"/>
                        <set field="inMap._uploadedFile_contentType" from-field="formInput.uploadMimeType"/>
                        <call-service service-name="createContentFromUploadedFile" in-map-name="inMap">
                            <result-to-field result-name="contentId" field="context.contentId"/>
                        </call-service>
                    </then>
                    <else>
                        <add-error>
                            <fail-property resource="ContentUiLabels" property="ContentUploadFileTypeNotMatch"/>
                        </add-error>
                    </else>
                </if>
                <check-errors/>
            <else>
                <!--set content from Existing content-->
                <set field="context.contentId" from-field="formInput.formInput.contentId"/>
            </else>
        </if-empty>
        
        <!-- 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="context.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>
        
        <set field="context.custRequestId" from-field="formInput.formInput.custRequestId"/>
        <call-map-processor in-map-name="context" out-map-name="custRequestContext">
            <simple-map-processor name="newCustRequestContent">
                <process field="contentId">
                    <copy to-field="contentId"/>
                </process>
                <process field="custRequestId">
                    <copy to-field="custRequestId"/>
                </process>
                <process field="fromDate">
                    <copy to-field="fromDate"/>
                </process>
            </simple-map-processor>
        </call-map-processor>

        <!-- Create CustRequestContent -->
        <call-service service-name="createCustRequestContent" in-map-name="custRequestContext">
            <result-to-field result-name="contentId" field="contentId"/>
        </call-service>
    </simple-method>
</simple-methods>
