Devin Smith 35b0f32e83 WARNING: THIS MIGHT BREAK EVERYTHING
Upgraded all db stuff to PDO
fixes #2195
2015-02-27 17:46:24 -08:00

105 lines
2.9 KiB
PHP

<?php
class Controller_api_driver_summary extends Crunchbutton_Controller_RestAccount {
public function init() {
$this->_schedules = [];
$this->_driverSummary();
}
private function _driverSummary(){
if( c::getPagePiece( 3 ) && c::admin()->permission()->check( [ 'global', 'drivers-all' ] ) ){
$id_driver = c::getPagePiece( 3 );
} else {
$id_driver = c::user()->id_admin;
}
$this->_summary( $id_driver );
}
private function _invites( $id_driver ){
$settlement = new Settlement();
$amount_per_invited_user = $settlement->amount_per_invited_user();
$invites = $settlement->driverInvites( $id_driver );
$out = [];
if( $invites ){
$out[ 'referral' ] = [];
$out[ 'referral' ][ 'amount_per_user' ] = $amount_per_invited_user;
foreach( $invites as $id_admin => $invites ){
$out[ 'referral' ][ 'invites' ] = $invites;
$out[ 'referral' ][ 'invites_total' ] = count( $invites );
$out[ 'referral' ][ 'invites_total_payment' ] = ( $amount_per_invited_user * $out[ 'referral' ][ 'invites_total' ] );
}
}
return $out;
}
private function _summary( $id_driver ){
$settlement = new Settlement();
$driver = Admin::o( $id_driver );
$keys = [];
$keys[] = $id_driver;
$out = [];
// $out = array_merge( $out, $this->_invites( $id_driver ) );
$page = $this->request()[ 'page' ] ? $this->request()[ 'page' ] : 1;
$limit = 20;
$out[ 'page' ] = intval( $page );
$out[ 'results' ] = [];
if ( $page == 1 ) {
$offset = '0';
} else {
$offset = ( $page - 1 ) * $limit;
}
$pay_type = $this->request()[ 'type' ];
$keys[] = $offset;
$keys[] = $limit;
if( $pay_type != 'all' ){
$where = ' AND pay_type = "' . $pay_type . '"';
$keys[] = $pay_type;
}
$query = 'SELECT COUNT( * ) AS total FROM payment_schedule WHERE id_driver = ? ' . $where;
$result = c::db()->get( $query );
$out[ 'count' ] = intval( $result->_items[ 0 ]->total );
$out[ 'pages' ] = ceil( $out[ 'count' ] / $limit );
$query = 'SELECT * FROM payment_schedule WHERE id_driver = ? ' . $where . ' ORDER BY id_payment_schedule DESC LIMIT ?, ?';
$payments = Cockpit_Payment_Schedule::q( $query, $keys);
$has_error = false;
foreach( $payments as $payment ){
$_payment = [];
$_payment[ 'id_payment_schedule' ] = $payment->id_payment_schedule;
$_payment = array_merge( $_payment, Cockpit_Payment_Schedule::statusToDriver( $payment ) );
$_payment[ 'amount' ] = ( !$payment->amount ? 0 : $payment->amount );
$_payment[ 'type' ] = ( $payment->pay_type == Cockpit_Payment_Schedule::PAY_TYPE_REIMBURSEMENT ) ? 'Reimbursement' : 'Payment';
if( $payment->arbritary ){
$_payment[ 'range_date' ] = $payment->note;
}
if( $_payment[ 'status' ] == 'Error' ){
$has_error = true;
}
$out[ 'results' ][] = $_payment;
}
$out[ 'has_error' ] = $has_error;
echo json_encode( $out );exit();
}
private function _error( $error = 'invalid request' ){
echo json_encode( [ 'error' => $error ] );
exit();
}
}