Skip to content

MagicInput

francis-agarwal edited this page Apr 5, 2018 · 3 revisions

Request from client/front-end

Type: POST

content-type: application/json

{
"icno":"7801263",
"kp":"2.23",
"emel":"ilham.fuead@gmail.com",
"jantina":"a",
"tkhlahir":"1979-01-29 21:59:59",
"hackedInput":"6469aaa898%$#"
}

API/Back-end process script

Retrieving input in JSON. Using JSON as input for DB operation

$inputObj = new MagicInput();

/**
 * Use INPUT DEFINITION - to establish acceptable input trait
 * Definition is in Array format - [inputName(string),inputType(string),requiredStatus(boolean),inputAlias(string)] 
 * Notes: 
 * 
 *    i. inputType(string) to denote input datatype/format as:
 *       [i] Integer
 *       [f] Float
 *       [n] Numeric(integer/float) 
 *       [d] Date(yyyy-mm-dd)
 *       [dt] Datetime(yyyy-mm-dd HH:mm:ss)
 *       [s] String
 *       [e] E-mail
 *       [u] Unknown
 *      
 *   ii. requiredStatus is use to denote input is mandatory
 *
 *  iii. inputAlias(string) is use for input mapping in other component/object/array
 *       If no alias given, inputName will be used for mapping
 * 
 */
$inputObj->setInputsDefinition([
    ['icno', 'i', true, 'nric'],
    ['kp', 'f', true, 'socialNo'],
    ['gaji', 'f', false, 'salary'],
    ['emel', 'e', true, 'email'],
    ['jantina', 's', true, 'gender'],
    ['tkhlahir', 'dt', true, 'dob'],
    ['nick', 's', true, ''],
    ['gred', 'i', true, '']
]);

/* Set input inline/hardcode/default value */
$inputObj->nick = "mr coder";
$inputObj->gred = 56;

/* Retrieved inputs from front-end JSON request */
$inputObj->copy_RAW_JSON_properties();

/** TODO: Check if inputs supplied complied with definition(satisfy specified each input conditions to be valid) */
if ($inputObj->isInputsComplied()) {

    /** TODO: Display valid inputs in JSON */
    //echo $inputObj->getJsonString();

    /** TODO: Use valid inputs in DB operation */
    $DBCmd = new DBCommand($DBQueryObj);
    $DBCmd->setUPDATEtoTable('tblUser');
    $DBCmd->importInputColumns($inputObj);
    $DBCmd->addConditionStatement('icno', $inputObj->icno, IFieldType::STRING_TYPE);

    echo $DBCmd->getSQLstring();
} else {
    /** TODO: Display Non complied inputs with error message  */
    echo json_encode($inputObj->getNonCompliedInputList());
}

RESPONSE

Sent back output to client from API

UPDATE tblUser SET nric=7801263,socialNo=2.23,email='ilham.fuead@gmail.com',gender='a',dob='1979-01-29 21:59:59',nick='mr coder',gred=56 WHERE icno='7801263'