<?php

// Check nonce
PHPCUS_PARAM::CUS_REQUIRES_NONCE();

// Check Array Input
PHPCUS_PARAM::CUS_DOES_NOT_SUPPORT_ARRAY();

if
(
    PHPRC_HTTP_PARAM::REF_ISSET_IN_ARRAY
    (
        [
            'PARAM_SYS_MODULE_ID',
            'PARAM_SYS_MODULE_CATEGORY',
            'PARAM_SYS_MODULE_KEYWORD',
            'PARAM_SYS_MODULE_NAME',
            'PARAM_SYS_MODULE_DESCRIPTION',
            'PARAM_SYS_MODULE_SHOW_ACCESS_RIGHTS',
            'PARAM_SYS_MODULE_STATUS',
            
            'PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_FROM',
            'PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_TO',
            'PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_FROM',
            'PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_TO',
            'PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_FROM',
            'PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_TO',
            'PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_FROM',
            'PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_TO',
            
            'PARAM_ORDER_FIELD',
            'PARAM_ORDER_TYPE',
            'PARAM_SKIP'
        ], True
        )
    )
{
    Try
    {
        // Read params
        // ------------------------------------------------------------------
        $PARAM_SYS_MODULE_ID = PHPCUS_PARAM::CUS_READ_BIGINT('PARAM_SYS_MODULE_ID');
        $PARAM_SYS_MODULE_CATEGORY = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_SYS_MODULE_CATEGORY');
        $PARAM_SYS_MODULE_KEYWORD = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_SYS_MODULE_KEYWORD');
        $PARAM_SYS_MODULE_NAME = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_SYS_MODULE_NAME');
        $PARAM_SYS_MODULE_DESCRIPTION = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_SYS_MODULE_DESCRIPTION');
        $PARAM_SYS_MODULE_SHOW_ACCESS_RIGHTS = PHPCUS_PARAM::CUS_READ_INT('PARAM_SYS_MODULE_SHOW_ACCESS_RIGHTS');
        $PARAM_SYS_MODULE_STATUS = PHPCUS_PARAM::CUS_READ_INT('PARAM_SYS_MODULE_STATUS');
        
        $PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_FROM = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_FROM');
        $PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_TO = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_TO');
        $PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_FROM = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_FROM');
        $PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_TO = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_TO');
        $PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_FROM = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_FROM');
        $PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_TO = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_TO');
        $PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_FROM = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_FROM');
        $PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_TO = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_TO');
        
        $PARAM_ORDER_FIELD = PHPCUS_PARAM::CUS_READ_SORT_FIELD
        (
            'PARAM_ORDER_FIELD',
            [
                'SYS_MODULE_ID',
                'SYS_MODULE_CATEGORY',
                'SYS_MODULE_KEYWORD',
                'SYS_MODULE_NAME',
                'SYS_MODULE_DESCRIPTION',
                'SYS_MODULE_SHOW_ACCESS_RIGHTS',
                'SYS_MODULE_STATUS',
                'SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP',
                'SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP',
                'SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP',
                'SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP'
            ]
            );
        
        $PARAM_ORDER_TYPE = PHPCUS_PARAM::CUS_READ_SORT_TYPE('PARAM_ORDER_TYPE');
        $PARAM_SKIP	= PHPCUS_PARAM::CUS_READ_BIGINT('PARAM_SKIP');
        // ------------------------------------------------------------------
        
        
        // Execute Stored Procedure
        // ...........................................
        $GET_MAP_ARRAY = PHPCUS_System::CUS_PREPARE_MAPPED_ARRAY_FOR_MODULE_GET();
        
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_ID'] = $PARAM_SYS_MODULE_ID;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_CATEGORY'] = $PARAM_SYS_MODULE_CATEGORY;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_KEYWORD'] = $PARAM_SYS_MODULE_KEYWORD;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_NAME'] = $PARAM_SYS_MODULE_NAME;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_DESCRIPTION'] = $PARAM_SYS_MODULE_DESCRIPTION;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SHOW_ACCESS_RIGHTS'] = $PARAM_SYS_MODULE_SHOW_ACCESS_RIGHTS;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_STATUS'] = $PARAM_SYS_MODULE_STATUS;
        
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_FROM'] = $PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_FROM;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_TO'] = $PARAM_SYS_MODULE_SYNC_SAVE_UP_TIMESTAMP_TO;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_FROM'] = $PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_FROM;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_TO'] = $PARAM_SYS_MODULE_SYNC_SAVE_DL_TIMESTAMP_TO;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_FROM'] = $PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_FROM;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_TO'] = $PARAM_SYS_MODULE_SYNC_DELETE_UP_TIMESTAMP_TO;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_FROM'] = $PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_FROM;
        $GET_MAP_ARRAY['PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_TO'] = $PARAM_SYS_MODULE_SYNC_DELETE_DL_TIMESTAMP_TO;
        
        $GET_MAP_ARRAY["PARAM_ORDER_FIELD"] = $PARAM_ORDER_FIELD;
        $GET_MAP_ARRAY["PARAM_ORDER_TYPE"] = $PARAM_ORDER_TYPE;
        $GET_MAP_ARRAY["PARAM_SKIP"] = $PARAM_SKIP;
        
        
        // Execute Stored Procedure
        // ...........................................
        $DATA_SET = PHPCUS_System::CUS_MODULE_GET_MA($GET_MAP_ARRAY);
        
        
        // Return JSON response
        // ...........................................
        if(empty($DATA_SET) === False)
        {
            PHPCUS_PARAM::CUS_JSON_SUCCESS($DATA_SET);
        }
        else
        {
            PHPCUS_PARAM::CUS_JSON_SUCCESS('');
        }
        
    }
    Catch(Exception $ERR)
    {
        PHPCUS_PARAM::CUS_JSON_ERROR($ERR);
    }
}
else
{
    PHPCUS_PARAM::CUS_JSON_ERROR('Missing parameters');
}

?>