132 lines
3.8 KiB
PHP
132 lines
3.8 KiB
PHP
<?php
|
|
|
|
class Controller_drivers_hours extends Crunchbutton_Controller_Account {
|
|
|
|
public function init() {
|
|
|
|
if (!c::admin()->permission()->check(['global', 'drivers-all', 'drivers-working-hours', 'drivers-working-hours-view'])) {
|
|
return ;
|
|
}
|
|
|
|
$hasEditPermission = c::admin()->permission()->check(['global','drivers-working-hours', 'drivers-all']);
|
|
|
|
$reps = Admin::q( 'SELECT DISTINCT( a.id_admin ) id, a.* FROM admin a INNER JOIN admin_notification an ON an.id_admin = a.id_admin AND an.active = 1 ORDER BY name ASC' );
|
|
|
|
switch ( c::getPagePiece(2) ) {
|
|
|
|
case 'edit':
|
|
|
|
if (!$hasEditPermission) { return ; }
|
|
|
|
$year = c::getPagePiece(3) ? c::getPagePiece(3) : date( 'Y' );
|
|
$month = c::getPagePiece(4) ? c::getPagePiece(4) : date( 'm' );
|
|
$day = c::getPagePiece(5) ? c::getPagePiece(5) : date( 'd' );
|
|
$id_admin = c::getPagePiece(6);
|
|
|
|
if( !$id_admin ){
|
|
return '';
|
|
}
|
|
|
|
$date = $year . '-' . $month . '-' . $day;
|
|
|
|
$hours = Admin_Hour::segmentsByDate( $date, ', ', $id_admin );
|
|
|
|
$admin = Admin::o( $id_admin );
|
|
|
|
$restaurants = $admin->restaurantsHeDeliveryFor();
|
|
$deliveryFor = [];
|
|
foreach( $restaurants as $restaurant ){
|
|
$deliveryFor[ $restaurant->id_restaurant ] = $restaurant->name;
|
|
}
|
|
|
|
$adminCommunities = [];
|
|
$groups = $admin->groups();
|
|
foreach ( $groups as $group ) {
|
|
$pos = strrpos( $group->name, Crunchbutton_Group::DRIVER_GROUPS_PREFIX );
|
|
if( $pos !== false ){
|
|
$adminCommunities[ $group->name ] = Group::getRestaurantCommunityName( $group->name );
|
|
}
|
|
}
|
|
|
|
c::view()->restaurants = $deliveryFor;
|
|
c::view()->communities = $adminCommunities;
|
|
c::view()->month = $month;
|
|
c::view()->day = $day;
|
|
c::view()->year = $year;
|
|
c::view()->segment = $hours[ $id_admin ][ 'hours' ];
|
|
c::view()->admin = $admin;
|
|
c::view()->layout( 'layout/ajax' );
|
|
c::view()->display( 'drivers/hours/edit' );
|
|
|
|
break;
|
|
|
|
case 'add':
|
|
|
|
if (!$hasEditPermission) { return ; }
|
|
|
|
$year = c::getPagePiece(3) ? c::getPagePiece(3) : date( 'Y' );
|
|
$month = c::getPagePiece(4) ? c::getPagePiece(4) : date( 'm' );
|
|
$day = c::getPagePiece(5) ? c::getPagePiece(5) : date( 'd' );
|
|
$week = c::getPagePiece(6) ? c::getPagePiece(6) : date( 'W' );
|
|
|
|
$id_admin = c::getPagePiece(7) ? c::getPagePiece(7) : false;
|
|
|
|
$days = [];
|
|
for( $i = 0; $i <= 6; $i++ ){
|
|
$days[] = new DateTime( date( 'Y-m-d', strtotime( $year . 'W' . $week . $i ) ), new DateTimeZone( c::config()->timezone ) );
|
|
}
|
|
|
|
c::view()->id_admin = $id_admin;
|
|
c::view()->year = $year;
|
|
c::view()->month = $month;
|
|
c::view()->day = $day;
|
|
c::view()->days = $days;
|
|
c::view()->week = $week;
|
|
c::view()->reps = $reps;
|
|
c::view()->layout( 'layout/ajax' );
|
|
c::view()->display( 'drivers/hours/add' );
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
$year = c::getPagePiece(2) ? c::getPagePiece(2) : date( 'Y' ) ;
|
|
$week = c::getPagePiece(3) ? c::getPagePiece(3) : date( 'W' ) ;
|
|
|
|
if( intval( $week ) < 10 ){
|
|
$week = '0' . intval( $week );
|
|
}
|
|
|
|
$days = [];
|
|
for( $i = 0; $i <= 6; $i++ ){
|
|
$days[] = new DateTime( date( 'Y-m-d', strtotime( $year . 'W' . $week . $i ) ), new DateTimeZone( c::config()->timezone ) );
|
|
}
|
|
|
|
if( $week <= 1 ){
|
|
$weekPrev = ( $year - 1 ) . '/52';
|
|
} else {
|
|
$weekPrev = ( $year ) . '/' . ( $week - 1 );
|
|
}
|
|
if( $week >= 52 ){
|
|
$weekNext = ( $year + 1 ) . '/01';
|
|
} else {
|
|
$weekNext = ( $year ) . '/' . ( $week + 1 );
|
|
}
|
|
|
|
c::view()->weekPrev = $weekPrev;
|
|
c::view()->weekNext = $weekNext;
|
|
|
|
c::view()->page = 'permissions';
|
|
c::view()->week = $week;
|
|
c::view()->year = $year;
|
|
c::view()->days = $days;
|
|
c::view()->reps = $reps;
|
|
c::view()->hasEditPermission = $hasEditPermission;
|
|
c::view()->startDate = $startDate;
|
|
c::view()->display( 'drivers/hours/index' );
|
|
|
|
break;
|
|
}
|
|
|
|
}
|
|
} |