<?php

// Perform Login
$SHORTCODE_STATUS = PHPCUS_SHORTCODE::CUS_QUICK_LOGIN();

// Check nonce
if($SHORTCODE_STATUS == false)
{
    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, 'account_linksvr');

if
(
    PHPRC_HTTP_PARAM::REF_ISSET_IN_ARRAY
    (
        [
            'PARAM_ACC_LINKSVR_ID',
            'PARAM_ACC_LINKSVR_ACC_GROUP_ID',
            'PARAM_ACC_LINKSVR_BRANCH_ID',
            'PARAM_ACC_LINKSVR_DESCRIPTION',
            'PARAM_ACC_LINKSVR_USERNAME',
            'PARAM_ACC_LINKSVR_PASSWORD',
            'PARAM_ACC_LINKSVR_URL',
            'PARAM_ACC_LINKSVR_AUTH_LEVEL',
            'PARAM_ACC_LINKSVR_IS_SELF',
            'PARAM_ACC_LINKSVR_STATUS'
            // , 'PARAM_ACC_LINKSVR_ID_FILE'
        ], True
        )
    )
{
    Try
    {
        // Read params
        // ------------------------------------------------------------------
        $PARAM_ACC_LINKSVR_ID = PHPCUS_PARAM::CUS_READ_BIGINT('PARAM_ACC_LINKSVR_ID', true);
        $PARAM_ACC_LINKSVR_ACC_GROUP_ID = PHPCUS_PARAM::CUS_READ_BIGINT('PARAM_ACC_LINKSVR_ACC_GROUP_ID', true);
        $PARAM_ACC_LINKSVR_BRANCH_ID = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_ACC_LINKSVR_BRANCH_ID', true);
        $PARAM_ACC_LINKSVR_DESCRIPTION = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_ACC_LINKSVR_DESCRIPTION', true);
        $PARAM_ACC_LINKSVR_USERNAME = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_ACC_LINKSVR_USERNAME', true);
        $PARAM_ACC_LINKSVR_PASSWORD = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_ACC_LINKSVR_PASSWORD', true);
        $PARAM_ACC_LINKSVR_URL = PHPCUS_PARAM::CUS_READ_NVARCHAR('PARAM_ACC_LINKSVR_URL', true);
        $PARAM_ACC_LINKSVR_AUTH_LEVEL = PHPCUS_PARAM::CUS_READ_INT('PARAM_ACC_LINKSVR_AUTH_LEVEL', true);
        $PARAM_ACC_LINKSVR_IS_SELF = PHPCUS_PARAM::CUS_READ_INT('PARAM_ACC_LINKSVR_IS_SELF', true);
        $PARAM_ACC_LINKSVR_STATUS = PHPCUS_PARAM::CUS_READ_INT('PARAM_ACC_LINKSVR_STATUS', true);
        
        //$PARAM_ACC_LINKSVR_ID_FILE = PHPCUS_PARAM::CUS_READ_FILES('PARAM_ACC_LINKSVR_ID_FILE');
        $PARAM_ARRAY_COUNT = count($PARAM_ACC_LINKSVR_ID);
        
        
        // Validate if array has same size
        // ------------------------------------------------------------------
        PHPCUS_PARAM::CUS_ARRAY_SIZE_MISMATCH
        (
            [
                $PARAM_ACC_LINKSVR_ID,
                $PARAM_ACC_LINKSVR_ACC_GROUP_ID,
                $PARAM_ACC_LINKSVR_BRANCH_ID,
                $PARAM_ACC_LINKSVR_DESCRIPTION,
                $PARAM_ACC_LINKSVR_USERNAME,
                $PARAM_ACC_LINKSVR_PASSWORD,
                $PARAM_ACC_LINKSVR_URL,
                $PARAM_ACC_LINKSVR_AUTH_LEVEL,
                $PARAM_ACC_LINKSVR_IS_SELF,
                $PARAM_ACC_LINKSVR_STATUS
                // ,$PARAM_ACC_LINKSVR_ID_FILE['name']
            ]
            );
        
        
        // Prepare PDO Handler
        // ------------------------------------------------------------------
        $FULL_DATA_SET = [];
        $ARRAY_CTR = 0;
        
        $SAVE_MAP_ARRAY = [];
        $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)
            {
                $SAVE_MAP_ARRAY = PHPCUS_ACCOUNT_LINKSVR::CUS_PREPARE_MAPPED_ARRAY_FOR_SAVE();
                
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_ID'] = $PARAM_ACC_LINKSVR_ID[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_ACC_GROUP_ID'] = $PARAM_ACC_LINKSVR_ACC_GROUP_ID[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_BRANCH_ID'] = $PARAM_ACC_LINKSVR_BRANCH_ID[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_DESCRIPTION'] = $PARAM_ACC_LINKSVR_DESCRIPTION[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_USERNAME'] = $PARAM_ACC_LINKSVR_USERNAME[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_PASSWORD'] = $PARAM_ACC_LINKSVR_PASSWORD[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_URL'] = $PARAM_ACC_LINKSVR_URL[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_AUTH_LEVEL'] = $PARAM_ACC_LINKSVR_AUTH_LEVEL[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_IS_SELF'] = $PARAM_ACC_LINKSVR_IS_SELF[$ARRAY_CTR];
                $SAVE_MAP_ARRAY['PARAM_ACC_LINKSVR_STATUS'] = $PARAM_ACC_LINKSVR_STATUS[$ARRAY_CTR];
                
                $DATA_SET = PHPCUS_ACCOUNT_LINKSVR::CUS_SAVE_MA
                (
                    $SAVE_MAP_ARRAY,
                    true,
                    $PDO_HANDLE
                    );
                
                /*
                 if
                 (
                 isset($PARAM_ACC_LINKSVR_ID_FILE['name'][$ARRAY_CTR]) &&
                 empty($DATA_SET) == false &&
                 isset($DATA_SET[0]['INSERTED_ID'])
                 )
                 {
                 $FILE_PATH = PHPRC_UPLOAD::REF_SUGGEST_PATH
                 (
                 PHPSET::$ROOT . '/Upload/priv/Account/linksvr/',
                 $DATA_SET[0]['INSERTED_ID'],
                 $PARAM_ACC_LINKSVR_ID_FILE['name'][$ARRAY_CTR]
                 );
                 PHPRC_UPLOAD::REF_UPLOAD_TRANSACTION_MOVEFILE
                 (
                 $PARAM_ACC_LINKSVR_ID_FILE['tmp_name'][$ARRAY_CTR],
                 $FILE_PATH,
                 true
                 );
                 }
                 */
                
                $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);
            //PHPRC_UPLOAD::REF_UPLOAD_TRANSACTION_ROLLBACK();
            PHPCUS_PARAM::CUS_JSON_ERROR($PDO_ERR);
        }
        PHPRC_PDO_MYSQL::REF_TRANSACTION_COMMIT($PDO_HANDLE);
        //PHPRC_UPLOAD::REF_UPLOAD_TRANSACTION_COMMIT();
        
        
        
        // 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');
}

?>