<?php 
/** 
 * Created by PhpStorm. 
 * User: SQ05 
 * Date: 08/02/2017 
 * Time: 11:43 PM 
 */ 
require_once ('../interface/BeerePdoOperations.php'); //load dependencies 
echo" 
/***  
 * This 'Beere' Class is of PHP 7, other lower version might have problem to use the query methods.<br> 
 * This 'Beere' class reduces many mysqli query you need to do on every service request<br> 
 * this 'Beere' class helps to structure all operations of your app in one file.<br> 
 * it make use of array of key and value of which the key correspond to table field and value is content to save.<br> 
 * request are sent in array form and response is send in Json to the caller.<br> 
 * There are many operations this class of BeerePdoOperations can perform to help develop a restful response service synchronously and asynchronously.<br> 
 * To save nested array of level 2, use saveMultiples.<br> 
 * The response returns json of five category of data, which are:<br> 
 * Status which is Integer to denote 200 for success and 400 for failure.<br> 
 * Message which is string, <br> 
 * Data which  can either be json of data queried<br> 
 * Code is bool to denote success<br> 
 * Total: this is majorly used while using list based on limit. <br> 
 * We will cover a limited execution of queries with CRUD using our class.<br> 
 * Kindly change the connection in utils folder to connect with your own database and create a table user with email, first_name, * status fields.<br> 
 * <br><b>Study it well to see how powerful it is by using one or more together to achieve your goal. it is well optimised.</b> 
 */ 
"."<br>"; 
echo "<br>";echo "<br>";echo "<br>"; 
$_POST=array('first_name'=>'Kazeem Olanipekun','email'=>'[email protected]','status'=>'Mr','middle_name'=>"Lilian"); //Assuming this is a post request 
 
function saveUser(){ 
    echo "<br>"; 
    echo "<b>Saving with Beere Class Asynchronously</b>"."<br>"; 
    $beere= new BeerePdoOperations(); 
    $save=$beere->save('user', $_POST); //request with asynchronous response without the saved id; 
    echo"<b>Asynchronous save of data</b>"."<br>";echo "<br>"; 
 
   print_r(json_decode($save,true)); //convert json back to array 
    echo "<br>";echo "<br>"; 
 
  $_POST['key_fetch']=md5(mt_rand(0,999).date('YmdHis',time()).uniqid('key').mt_rand(0,99999)); 
    //load syncronously with key_fetch 
    echo"<b>always create key_fetch of the same type and pass to each row of nested array or to an array to receive response 
   synchronously.</b>"."<br>";echo "<br>"; 
    echo "<b>Saving with Beere Class Synchronously</b>"."<br>";echo "<br>"; 
    $save=$beere->save('user', $_POST); 
   $_GET['user']=json_decode($save,true); 
       print_r($_GET['user']); //convert json back to array 
    echo "<br>";echo "<br>"; 
} 
function updateUser(){ 
    echo"<b>Update Data using parameters</b>"."<br>";echo "<br>";echo "<br>"; 
    $delete= new BeerePdoOperations(); 
    $where=array('id'=>1); 
    $sets=array('first_name'=>'Fola Olawale','email'=>'[email protected]','status'=>'mr'); 
    $result= $delete->update('user', $where, $sets); 
    //You pass a single conditional operator such as AND etc as 3rd parameter in update method, default is AND 
    print_r(json_decode($result,true)); 
} 
function listUser(){ 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo"<b>Listing respond with list of arrays</b>"."<br>"; 
    echo"List Data using empty data array"."<br>"; 
$list=new BeerePDoOperations(); 
 //to list all, pass empty array, while to list based on some data, pass array of data. 
    $data=array(); 
    //$res=$list->list('user', $data); 
   // print_r(json_decode($res,true)); 
    //You pass a single conditional operator such as AND etc as 3rd parameter in update method, default is AND 
    echo "<br>";echo "<br>"; 
    echo"<b>List Data using Parameter(s)</b>"."<br>";echo "<br>"; 
    $data=array('id'=>1); 
    $res=$list->list('user', $data); 
    print_r(json_decode($res,true)); 
} 
function validateUser(){ 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo "<b>Validate User by Parameter</b>"."<br>";echo "<br>"; 
    $val=new BeerePdoOperations(); 
    $data=array('email'=>'[email protected]'); 
    $res=$val->validate('user', $data); 
    print_r(json_decode($res,true)); //convert json back to array 
    echo "<br>";echo "<br>"; 
} 
 
function getData(){ 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo"<b>A get respond with an array unlike list with multiple arrays"."<br>"; 
    echo"Get Data using empty data array will throw error, cause daya must not be empty</b>"."<br>"; 
    $get=new BeerePdoOperations(); 
    //to list all, pass empty array, while to list based on some data, pass array of data. 
    $data=array('id'=>25); //data must not be empty array 
    $res=$get->getADataByParam('user', $data); 
    print_r(json_decode($res,true)); 
    //You pass a single conditional operator such as AND etc as 3rd parameter in getADataByParam method, default is AND 
    echo "<br>";echo "<br>"; 
    echo"<b>Get Data using Parameter(s) return a single array of data</b>"."<br>"; 
    $data=array('id'=>1); 
    $res=$get->getADataByParam('user', $data); 
    print_r(json_decode($res,true)); 
    echo "<br>"; 
} 
function saveUsingMultiple(){ 
    echo "<br>";echo "<br>"; 
   $data=array( 
       array('first_name'=>'Fola Olawale','email'=>'[email protected]','status'=>'Mr'), 
       array('first_name'=>'Kunle Olawale','email'=>'[email protected]','status'=>'Mr'), 
       array('first_name'=>'Kunle Loveth','email'=>'[email protected]','status'=>'Miss') 
   ); 
 
    echo "<b>Saving using MULTIPLE Data with Beere Class Asynchronously</b>"."<br>"; 
    $beere= new BeerePdoOperations(); 
    $save=$beere->saveMultiple('user', $data); //request with asynchronous response without the saved id; 
    echo"Asynchronous save of data"."<br>";echo "<br>"; 
 
    print_r(json_decode($save,true)); //convert json back to array 
    echo "<br>";echo "<br>"; 
 
    echo "<b>Saving using MULTIPLE Data with Beere Class Synchronously by adding key_fetch to request</b>"."<br>"; 
 
    $key_fetch=md5(mt_rand(0,999).date('YmdHis',time()).uniqid('key').mt_rand(0,99999)); 
 
    foreach ($data as $index => &$item) { 
        $item['key_fetch']=$key_fetch; 
    }; 
 
    //load syncronously with key_fetch 
    echo"<b>always create key_fetch of the same type and pass to each row of nested array or to an array to receive response 
   synchronously.</b>"."<br>";echo "<br>"; 
 
    $save=$beere->saveMultiple('user', $data); 
    $_GET['userMultiple']=json_decode($save,true); 
    print_r($_GET['userMultiple']); //convert json back to array 
    echo "<br>";echo "<br>"; 
} 
function listByLimitPager(){ 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo "<b>List By Limit Pager</b>"."<br>"; 
    $val=new BeerePdoOperations(); 
    //pass parameter or not, it is work 
    $page=1; //default is one but make sure you increment page and send d next page to fetch the next data. 
    $limit=10; //default is 200; 
    $logic='&&'; //default is AND. 
    while($page<3) { 
        echo" List ".$page.'<br>'; 
        $res=$val->listByLimit('user', array(), $logic, $page, $limit,['first_name']); 
        print_r(json_decode($res, true)); //convert json back to array 
        echo "<br><br>"; 
        $page++; 
    } 
    echo "<br>"; 
} 
function deleteUser(){ 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo"<b>Delete Data using parameters</b>"."<br>";echo "<br>"; 
    $delete= new BeerePdoOperations(); 
    $data=array('id'=>25); 
    $result= $delete->delete('user', $data); 
    //You pass a single conditional operator such as AND etc as 3rd parameter in delete method, default is AND 
    print_r(json_decode($result,true)); 
    echo "<br>";echo "<br>"; 
} 
 
function updateAllUser() { 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo"<b>Async Update All User using parameters sets.</b>"."<br>";echo "<br>"; 
    $user= new BeerePdoOperations(); 
    $data=array('id'=>[150,151,152,153,154,155]); 
    $sets =array( 
        'programme_id'=>5, 
        'programme_info'=>'Computer_Science_CSC_' 
    ); 
    $result=$user->updateAll('user',$data,$sets); 
    print_r(json_decode($result,true)); 
    echo "<br>";echo "<br>"; 
} 
 
function getAllUser() { 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo"<b>Get All User using parameters.</b>"."<br>";echo "<br>"; 
    $user= new BeerePdoOperations(); 
    $data=array('programme_id'=>5,'programme_info'=>'Computer_Science_CSC_'); 
    $result=$user->getAll('user',$data); 
    print_r(json_decode($result,true)); 
    echo "<br>";echo "<br>"; 
} 
 
function getLastIndex() { 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo"<b>Get The Last Index User.</b>"."<br>";echo "<br>"; 
    $user= new BeerePdoOperations(); 
    $data=array(); 
    $result=$user->getLastIndex('user',$data); 
    print_r(json_decode($result,true)); 
    echo "<br>";echo "<br>"; 
} 
 
function getUserByRole() { 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo"<b>Get User By list or an array of roles.</b>"."<br>";echo "<br>"; 
    $user= new BeerePdoOperations(); 
    $data=array('SUPER_ADMIN','SCHOOL_ADMIN','BURSAR'); 
    $result=$user->getByRole('user',$data,'||'); 
    print_r(json_decode($result,true)); 
    echo "<br>";echo "<br>"; 
} 
 
function countByParam() { 
    echo "<br>";echo "<br>";echo "<br>"; 
    echo"<b>Count User By parameters.</b>"."<br>";echo "<br>"; 
    $user= new BeerePdoOperations(); 
    $data=array('SUPER_ADMIN','SCHOOL_ADMIN','BURSAR'); 
    $result=$user->countByParam('user',$data,'||'); 
    print_r(json_decode($result,true)); 
    echo "<br>";echo "<br>"; 
} 
 
//Call Functions 
//saveUser(); 
//updateUser(); 
//listUser(); 
//validateUser(); 
//getData(); 
//saveUsingMultiple(); 
//listByLimitPager(); 
//deleteUser(); 
//updateAllUser(); 
//getAllUser(); 
//getLastIndex(); 
//getUserByRole(); 
//countByParam();
 
 |