128 lines
3.7 KiB
PHP
128 lines
3.7 KiB
PHP
<?php
|
|
|
|
class Controller_drivers extends Crunchbutton_Controller_Account {
|
|
|
|
const ADMIN_DRIVER_LIST_TZ = 'admin-driver-list-tz';
|
|
|
|
public function init() {
|
|
|
|
switch ( c::getPagePiece( 1 ) ){
|
|
|
|
case 'deliveries':
|
|
if ( c::admin()->permission()->check( [ 'global','drivers-all', 'drivers-orders-view' ] ) ) {
|
|
$this->deliveries();
|
|
}
|
|
break;
|
|
|
|
case 'schedule':
|
|
if ( c::admin()->permission()->check( [ 'global','drivers-all', 'drivers-working-hours', 'drivers-working-hours-view' ] ) ) {
|
|
$this->schedule();
|
|
}
|
|
break;
|
|
|
|
default:
|
|
if ( c::admin()->permission()->check( [ 'global','drivers-all', 'drivers-page' ] ) ) {
|
|
c::view()->page = 'drivers';
|
|
c::view()->display( 'drivers/index' );
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function schedule(){
|
|
switch ( c::getPagePiece( 2 ) ){
|
|
default:
|
|
|
|
$date = ( c::getPagePiece( 2 ) ? c::getPagePiece( 2 ) : date( 'Y-m-d' ) );
|
|
|
|
$date = new DateTime( $date, new DateTimeZone( c::config()->timezone ) );
|
|
$now = new DateTime( 'now', new DateTimeZone( c::config()->timezone ) );
|
|
|
|
c::view()->date = $date->format( 'Y-m-d' );
|
|
c::view()->dateFormatted = $date->format( 'M jS Y D' );
|
|
|
|
$date->modify( '+ 1 day' );
|
|
if( $date->format( 'Ymd' ) <= ( $now->format( 'Ymd' ) + 5 ) ){
|
|
c::view()->dayNext = $date->format( 'Y-m-d' );
|
|
}
|
|
|
|
$date->modify( '- 2 days' );
|
|
if( $date->format( 'Ymd' ) >= ( $now->format( 'Ymd' ) - 1 ) ){
|
|
c::view()->dayPrev = $date->format( 'Y-m-d' );
|
|
}
|
|
|
|
c::view()->restaurants = Restaurant::withDrivers();
|
|
c::view()->page = 'drivers';
|
|
c::view()->display( 'drivers/schedule/index' );
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function deliveries(){
|
|
|
|
$admin = Admin::o( c::admin()->id_admin );
|
|
$default_tz = $admin->getConfig( Controller_drivers::ADMIN_DRIVER_LIST_TZ );
|
|
|
|
if( $default_tz->id_admin_config ){
|
|
$default_tz = $default_tz->value;
|
|
} else {
|
|
$default_tz = 'admin-tz';
|
|
}
|
|
|
|
c::view()->tz_default = $default_tz;
|
|
c::view()->admin_tz = c::admin()->timezone;
|
|
|
|
switch ( c::getPagePiece( 2 ) ){
|
|
|
|
case 'content':
|
|
$search = [];
|
|
if ( $_REQUEST[ 'limit' ] ) {
|
|
$search[ 'limit' ] = intval( $_REQUEST[ 'limit' ] );
|
|
}
|
|
if ( $_REQUEST[ 'dates' ] ) {
|
|
$dates = explode( ',', $_REQUEST[ 'dates' ] );
|
|
$search[ 'start' ] = $dates[ 0 ];
|
|
$search[ 'end' ] = $dates[ 1 ];
|
|
}
|
|
if ( $_REQUEST[ 'id_restaurant' ] ) {
|
|
$search[ 'id_restaurant' ] = $_REQUEST[ 'id_restaurant' ];
|
|
}
|
|
if ( $_REQUEST[ 'id_admin' ] ) {
|
|
$search[ 'id_admin' ] = $_REQUEST[ 'id_admin' ];
|
|
}
|
|
|
|
c::view()->orders = Order::deliveredByCBDrivers( $search );
|
|
if ( $_REQUEST[ 'export' ] ) {
|
|
c::view()->layout( 'layout/csv' );
|
|
c::view()->display( 'orders/csv', ['display' => true, 'filter' => false]);
|
|
} else {
|
|
c::view()->layout( 'layout/ajax' );
|
|
c::view()->display( 'drivers/deliveries/content' );
|
|
}
|
|
break;
|
|
|
|
case 'action':
|
|
$id_order = c::getPagePiece( 3 );
|
|
c::view()->id_order = $id_order;
|
|
c::view()->order = Order::o( $id_order );
|
|
c::view()->drivers = Admin::drivers();
|
|
c::view()->actions = [ Crunchbutton_Order_Action::DELIVERY_ACCEPTED, Crunchbutton_Order_Action::DELIVERY_PICKEDUP, Crunchbutton_Order_Action::DELIVERY_DELIVERED, Crunchbutton_Order_Action::DELIVERY_REJECTED ];
|
|
c::view()->layout( 'layout/ajax' );
|
|
c::view()->display( 'drivers/deliveries/action' );
|
|
break;
|
|
default:
|
|
|
|
$id_admin = c::getPagePiece( 2 );
|
|
|
|
c::view()->restaurants = Restaurant::withDrivers();
|
|
c::view()->id_admin = $id_admin;
|
|
c::view()->drivers = Admin::drivers();
|
|
c::view()->page = 'drivers';
|
|
c::view()->display( 'drivers/deliveries/index' );
|
|
break;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
} |