<?php

use RetailCrm\ApiClient;

/** @var $APPLICATION */

if (!check_bitrix_sessid()) {
    return;
}

IncludeModuleLangFile(__FILE__);

$MODULE_ID = 'intaro.retailcrm';
$CRM_API_HOST_OPTION = 'api_host';
$CRM_API_KEY_OPTION = 'api_key';
$CRM_SITES_LIST= 'sites_list';
$CRM_ORDER_PROPS = 'order_props';
$CRM_CONTRAGENT_TYPE = 'contragent_type';
$CRM_LEGAL_DETAILS = 'legal_details';
$api_host = COption::GetOptionString($MODULE_ID, $CRM_API_HOST_OPTION, 0);
$api_key = COption::GetOptionString($MODULE_ID, $CRM_API_KEY_OPTION, 0);
$arResult['arSites'] = RCrmActions::getSitesList();

$RETAIL_CRM_API = new ApiClient($api_host, $api_key);
COption::SetOptionString($MODULE_ID, $CRM_API_HOST_OPTION, $api_host);
COption::SetOptionString($MODULE_ID, $CRM_API_KEY_OPTION, $api_key);
COption::SetOptionString($MODULE_ID, $CRM_SITES_LIST, serialize([]));

if (!isset($arResult['bitrixOrderTypesList'])) {
    $arResult['bitrixOrderTypesList'] = RCrmActions::OrderTypesList($arResult['arSites']);
    $arResult['arProp'] = RCrmActions::OrderPropsList();
    $arResult['ORDER_PROPS'] = unserialize(COption::GetOptionString($MODULE_ID, $CRM_ORDER_PROPS, 0));
}

if (!isset($arResult['LEGAL_DETAILS'])) {
    $arResult['LEGAL_DETAILS'] = unserialize(COption::GetOptionString($MODULE_ID, $CRM_LEGAL_DETAILS, 0));
}

if (!isset($arResult['CONTRAGENT_TYPES'])) {
    $arResult['CONTRAGENT_TYPES'] = unserialize(COption::GetOptionString($MODULE_ID, $CRM_CONTRAGENT_TYPE, 0));
}

if (isset($arResult['ORDER_PROPS'])) {
    $defaultOrderProps = $arResult['ORDER_PROPS'];
} else {
    $defaultOrderProps = [
        1 => [
            'fio'   => 'FIO',
            'index' => 'ZIP',
            'text'  => 'ADDRESS',
            'phone' => 'PHONE',
            'email' => 'EMAIL',
        ],
        2 => [
            'fio'   => 'CONTACT_PERSON',
            'index' => 'ZIP',
            'text'  => 'ADDRESS',
            'phone' => 'PHONE',
            'email' => 'EMAIL',
        ],
    ];
}
?>
<script type="text/javascript" src="/bitrix/js/main/jquery/jquery-1.7.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        const individual = $("[name='contragent-type-1']").val();
        const legalEntity = $("[name='contragent-type-2']").val();

        if (legalEntity !== 'individual') {
            $('tr.legal-detail-2').each(function(){
                if($(this).hasClass(legalEntity)){
                    $(this).show();
                    $('.legal-detail-title-2').show();
                }
            });
        }

        if (individual !== 'individual') {
            $('tr.legal-detail-1').each(function(){
                if($(this).hasClass(individual)){
                    $(this).show();
                    $('.legal-detail-title-1').show();
                }
            });
        }

        $('input.addr').change(function(){
            const splitName = $(this).attr('name').split('-');
            const orderType = splitName[2];

            if(parseInt($(this).val()) === 1)
                $('tr.address-detail-' + orderType).show('slow');
            else if(parseInt($(this).val()) === 0)
                $('tr.address-detail-' + orderType).hide('slow');
        });
        
        $('tr.contragent-type select').change(function(){
            const splitName      = $(this).attr('name').split('-');
            const contragentType = $(this).val();
            const orderType = splitName[2];
            let legalDetailOrderType = $('tr.legal-detail-' + orderType);
            
            legalDetailOrderType.hide();
            $('.legal-detail-title-' + orderType).hide();

            legalDetailOrderType.each(function(){
                if($(this).hasClass(contragentType)){
                    $(this).show();
                    $('.legal-detail-title-' + orderType).show();
                }
            });
        });
     });
</script>

<div class="adm-detail-content-item-block">
<form action="<?= $APPLICATION->GetCurPage() ?>" method="POST">
    <?= bitrix_sessid_post()?>
    <input type="hidden" name="lang" value="<?= LANGUAGE_ID ?>">
    <input type="hidden" name="id" value="intaro.retailcrm">
    <input type="hidden" name="install" value="Y">
    <input type="hidden" name="step" value="4">
    <input type="hidden" name="continue" value="3">

    <table class="adm-detail-content-table edit-table" id="edit1_edit_table">
        <tbody>
            <tr class="heading">
                <td colspan="2"><b><?= GetMessage('STEP_NAME')?></b></td>
            </tr>
            <tr class="heading">
                <td colspan="2"><b><?= GetMessage('ORDER_PROPS')?></b></td>
            </tr>
            <tr align="center">
                <td colspan="2"><b><?= GetMessage('INFO_2')?></b></td>
            </tr>
            <?php foreach($arResult['bitrixOrderTypesList'] as $bitrixOrderType): ?>
            <tr class="heading">
                <td colspan="2"><b><?= GetMessage('ORDER_TYPE_INFO') . ' ' . $bitrixOrderType['NAME']?></b></td>
            </tr>
            <tr class="contragent-type">
                <td width="50%" class="adm-detail-content-cell-l">
                    <?= GetMessage('CONTRAGENT_TYPE')?>
                </td>
                <td width="50%" class="adm-detail-content-cell-r">
                    <select name="contragent-type-<?= $bitrixOrderType['ID']?>" class="typeselect">
                        <?php foreach ($arResult['contragentType'] as $contragentType): ?>
                        <option value="<?= $contragentType['ID']; ?>"
                            <?=
                            (isset($arResult['CONTRAGENT_TYPES'][$bitrixOrderType['ID']])
                                && $arResult['CONTRAGENT_TYPES'][$bitrixOrderType['ID']] == $contragentType['ID']) ?
                                'selected'
                                : ''
                             ?>
                        >
                            <?= $contragentType['NAME']?>
                        </option>
                        <?php endforeach; ?>
                    </select>
                </td>
            </tr>
            
            <?php $countProps = 0; foreach($arResult['orderProps'] as $orderProp): ?>
            <?php if($orderProp['ID'] === 'text'): ?>
            <tr class="heading">
                <td colspan="2" style="background-color: transparent;">
                    <b>
                        <label>
                            <input class="addr" type="radio" name="address-detail-<?= $bitrixOrderType['ID']?>" value="0"
                                <?= (count($defaultOrderProps[$bitrixOrderType['ID']]) < 6) ? 'checked' : '' ?>>
                            <?= GetMessage('ADDRESS_SHORT')?>
                        </label>
                        <label>
                            <input class="addr" type="radio" name="address-detail-<?= $bitrixOrderType['ID']?>" value="1"
                                <?= (count($defaultOrderProps[$bitrixOrderType['ID']]) > 5) ? 'checked' : '' ?>
                            >
                            <?= GetMessage('ADDRESS_FULL')?>
                        </label>
                    </b>
                </td>
            </tr>
            <?php endif; ?>
            
            <tr <?= ($countProps > 3) ? 'class="address-detail-' . $bitrixOrderType['ID'] . '"' : ''?>
            <?= (($countProps > 3) && (count($defaultOrderProps[$bitrixOrderType['ID']]) < 6))
                ? 'style="display:none;"'
                : ''
            ?>
            >
                <td width="50%" class="adm-detail-content-cell-l" name="<?= $orderProp['ID']?>">
                    <?= $orderProp['NAME']; ?>
                </td>
                <td width="50%" class="adm-detail-content-cell-r">
                    <select name="order-prop-<?= $orderProp['ID'] . '-' . $bitrixOrderType['ID']?>" class="typeselect">
                        <option value=""></option>              
                        <?php foreach ($arResult['arProp'][$bitrixOrderType['ID']] as $arProp): ?>
                        <option value="<?= $arProp['CODE']?>"
                            <?= ($defaultOrderProps[$bitrixOrderType['ID']][$orderProp['ID']] === $arProp['CODE'])
                                ? 'selected'
                                : '' ?>
                        >
                            <?= $arProp['NAME']?>
                        </option>
                        <?php endforeach; ?>
                    </select>
                </td>
            </tr>
            <?php $countProps++; endforeach; ?>

            <?if (isset($arResult['customFields']) && count($arResult['customFields']) > 0):?>
                <tr class="heading custom-detail-title">
                    <td colspan="2" style="background-color: transparent;">
                        <b>
                            <?=GetMessage('ORDER_CUSTOM'); ?>
                        </b>
                    </td>
                </tr>
                <?foreach($arResult['customFields'] as $customFields):?>
                    <tr class="custom-detail-<?=$customFields['ID'];?>">
                        <td width="50%" class="" name="">
                            <?=$customFields['NAME']; ?>
                        </td>
                        <td width="50%" class="">
                            <select name="custom-fields-<?=$customFields['ID'] . '-' . $bitrixOrderType['ID']?>" class="typeselect">
                                <option value=""></option>              
                                <?foreach ($arResult['arProp'][$bitrixOrderType['ID']] as $arProp):?>
                                    <option value="<?=$arProp['CODE']?>"
                                        <?= (isset($arResult['CUSTOM_FIELDS'][$bitrixOrderType['ID']][$customFields['ID']])
                                            && $arResult['CUSTOM_FIELDS'][$bitrixOrderType['ID']][$customFields['ID']]
                                            === $arProp['CODE'])
                                            ? 'selected'
                                            : ''
                                        ?>>
                                    <?=$arProp['NAME']?>
                                    </option>
                                <?php endforeach;?>
                            </select>
                        </td>
                    </tr>
                    <?php endforeach;?>
                <?php endif;?>
    
            <tr class="heading legal-detail-title-<?= $bitrixOrderType['ID']?>" style="display:none">
                <td colspan="2" style="background-color: transparent;">
                    <b>
                        <?= GetMessage('ORDER_LEGAL_INFO'); ?>
                    </b>
                </td>
            </tr>

            <?php foreach($arResult['legalDetails'] as $legalDetails): ?>
            <tr class="legal-detail-<?= $bitrixOrderType['ID']?> <?php foreach($legalDetails['GROUP'] as $gr) echo $gr . ' ';?>" style="display:none">
                <td width="50%" class="adm-detail-content-cell-l">
                    <?= $legalDetails['NAME']; ?>
                </td>
                <td width="50%" class="adm-detail-content-cell-r">
                    <select name="legal-detail-<?= $legalDetails['ID'] . '-' . $bitrixOrderType['ID']?>" class="typeselect">
                        <option value=""></option>              
                        <?php foreach ($arResult['arProp'][$bitrixOrderType['ID']] as $arProp): ?>
                        <option value="<?= $arProp['CODE']?>"
                            <?= (isset($arResult['LEGAL_DETAILS'][$bitrixOrderType['ID']][$legalDetails['ID']])
                                && $arResult['LEGAL_DETAILS'][$bitrixOrderType['ID']][$legalDetails['ID']] === $arProp['CODE'])
                                ? 'selected' : ''
                            ?>
                        >
                            <?= $arProp['NAME']?>
                        </option>
                        <?php endforeach; ?>
                    </select>
                </td>
            </tr>   
            <?php endforeach; ?>
            <?php endforeach; ?>
        </tbody>
    </table>
    <br />
    <div style="padding: 1px 13px 2px; height:28px;">
        <div align="right" style="float:right; width:50%; position:relative;">
            <input type="submit" name="inst" value="<?= GetMessage('MOD_NEXT_STEP')?>" class="adm-btn-save">
        </div>
        <div align="left" style="float:right; width:50%; position:relative; visible: none;">
            <input type="submit" name="back" value="<?= GetMessage('MOD_PREV_STEP')?>" class="adm-btn-save">
        </div>
    </div>
</form>
</div>