<?php

// Check nonce
PHPCUS_PARAM::CUS_REQUIRES_NONCE();

// Check array size
PHPCUS_PARAM::CUS_ARRAY_TOO_LARGE();

// Check already authenticated
PHPCUS_PARAM::CUS_REQUIRES_AUTHENTICATION();

// Check access rights
PHPCUS_PARAM::CUS_HAS_PERMISSION(PHPCUS_SYSTEM::AUTHORITY_VIEW_EDIT, 'addon_license_group');

if
(
    PHPRC_HTTP_PARAM::REF_ISSET_IN_ARRAY
    (
        [
            'PARAM_ADD_GLICENSE_ID',
            'PARAM_ADD_GLICENSE_ACC_GROUP_ID',
            'PARAM_ADD_GLICENSE_DATE_RENEW',
            'PARAM_ADD_GLICENSE_DATE_EXPIRY',
            'PARAM_ADD_GLICENSE_VOLUME',
            'PARAM_ADD_GLICENSE_STATUS'
        ], True
        )
    )
{
    Try
    {
        // Read params
        // ------------------------------------------------------------------
        $PARAM_ADD_GLICENSE_ID = PHPCUS_PARAM::CUS_READ_BIGINT('PARAM_ADD_GLICENSE_ID', true);
        $PARAM_ADD_GLICENSE_ACC_GROUP_ID = PHPCUS_PARAM::CUS_READ_BIGINT('PARAM_ADD_GLICENSE_ACC_GROUP_ID', true);
        $PARAM_ADD_GLICENSE_DATE_RENEW = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_ADD_GLICENSE_DATE_RENEW', true);
        $PARAM_ADD_GLICENSE_DATE_EXPIRY = PHPCUS_PARAM::CUS_READ_DATETIME('PARAM_ADD_GLICENSE_DATE_EXPIRY', true);
        $PARAM_ADD_GLICENSE_VOLUME = PHPCUS_PARAM::CUS_READ_BIGINT('PARAM_ADD_GLICENSE_VOLUME', true);
        $PARAM_ADD_GLICENSE_STATUS = PHPCUS_PARAM::CUS_READ_INT('PARAM_ADD_GLICENSE_STATUS', true);
        
        $PARAM_ARRAY_COUNT = count($PARAM_ADD_GLICENSE_ID);
        
        
        // Validate if array has same size
        // ------------------------------------------------------------------
        PHPCUS_PARAM::CUS_ARRAY_SIZE_MISMATCH
        (
            [
                $PARAM_ADD_GLICENSE_ID,
                $PARAM_ADD_GLICENSE_ACC_GROUP_ID,
                $PARAM_ADD_GLICENSE_DATE_RENEW,
                $PARAM_ADD_GLICENSE_DATE_EXPIRY,
                $PARAM_ADD_GLICENSE_VOLUME,
                $PARAM_ADD_GLICENSE_STATUS
            ]
            );
        
        
        // Prepare PDO Handler
        // ------------------------------------------------------------------
        $FULL_DATA_SET = [];
        $ARRAY_CTR = 0;
        
        $PDO_HANDLE = PHPRC_PDO_MYSQL::REF_CONNECT();
        PHPRC_PDO_MYSQL::REF_TRANSACTION_BEGIN($PDO_HANDLE);
        
        
        // Execute Stored Procedure
        // ------------------------------------------------------------------
        Try
        {
            while($ARRAY_CTR < $PARAM_ARRAY_COUNT)
            {
                $DATA_SET = PHPCUS_ADDON_LICENSE_GROUP::CUS_SAVE
                (
                    $PARAM_ADD_GLICENSE_ID[$ARRAY_CTR],
                    $PARAM_ADD_GLICENSE_ACC_GROUP_ID[$ARRAY_CTR],
                    $PARAM_ADD_GLICENSE_DATE_RENEW[$ARRAY_CTR],
                    $PARAM_ADD_GLICENSE_DATE_EXPIRY[$ARRAY_CTR],
                    $PARAM_ADD_GLICENSE_VOLUME[$ARRAY_CTR],
                    $PARAM_ADD_GLICENSE_STATUS[$ARRAY_CTR],
                    
                    true,
                    $PDO_HANDLE
                    );
                
                $FULL_DATA_SET = PHPRC_PDO_MYSQL_ARRAY::REF_MERGE($FULL_DATA_SET, $DATA_SET);
                $ARRAY_CTR ++;
            }
            
        }
        Catch(Exception $PDO_ERR)
        {
            PHPRC_PDO_MYSQL::REF_TRANSACTION_ROLLBACK($PDO_HANDLE);
            PHPCUS_PARAM::CUS_JSON_ERROR($PDO_ERR);
        }
        PHPRC_PDO_MYSQL::REF_TRANSACTION_COMMIT($PDO_HANDLE);
        
        
        
        // Return JSON response
        // ------------------------------------------------------------------
        PHPCUS_PARAM::CUS_JSON_SUCCESS($FULL_DATA_SET);
        
    }
    Catch(Exception $ERR)
    {
        PHPCUS_PARAM::CUS_JSON_ERROR($ERR);
    }
}
else
{
    PHPCUS_PARAM::CUS_JSON_ERROR('Missing parameters');
}

?>