113 lines
2.9 KiB
PHP
113 lines
2.9 KiB
PHP
<?php
|
|
|
|
class Controller_drivers_assign extends Crunchbutton_Controller_Account {
|
|
|
|
public function init() {
|
|
|
|
if ( !c::admin()->permission()->check( [ 'global','drivers-all', 'drivers-assign' ] ) ) {
|
|
return ;
|
|
}
|
|
|
|
c::view()->page = 'drivers';
|
|
|
|
switch ( c::getPagePiece( 2 ) ){
|
|
|
|
case 'driver':
|
|
$this->driver();
|
|
break;
|
|
|
|
case 'community':
|
|
$this->community();
|
|
break;
|
|
|
|
case 'restaurant':
|
|
$this->restaurant();
|
|
break;
|
|
|
|
default:
|
|
c::view()->display( 'drivers/assign/index' );
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function loadData(){
|
|
|
|
// restaurants
|
|
c::view()->restaurants = Restaurant::q( 'SELECT * FROM restaurant WHERE active = 1 ORDER BY name ASC' );
|
|
|
|
// drivers
|
|
c::view()->drivers = Admin::drivers();
|
|
|
|
// communities
|
|
$communities = [];
|
|
$_communities = Restaurant::getCommunities();
|
|
foreach( $_communities as $community ){
|
|
$communities[ Crunchbutton_Group::driverGroupOfCommunity( $community ) ] = $community;
|
|
}
|
|
c::view()->communities = $communities;
|
|
}
|
|
|
|
public function community(){
|
|
|
|
$this->loadData();
|
|
|
|
if( c::getPagePiece( 3 ) ){
|
|
$community = Crunchbutton_Group::normalizeDriverGroup( c::getPagePiece( 3 ) );
|
|
$group = Crunchbutton_Group::getDeliveryGroupByCommunity( $community );
|
|
$drivers = Crunchbutton_Admin::q( "SELECT a.* FROM admin a INNER JOIN admin_group ag ON ag.id_admin = a.id_admin AND ag.id_group = {$group->id_group}" );
|
|
$deliveryFor = [];
|
|
foreach( $drivers as $driver ){
|
|
$deliveryFor[ $driver->id_admin ] = true;
|
|
}
|
|
c::view()->restaurants_community = Restaurant::getRestaurantsByCommunity( Crunchbutton_Group::getRestaurantCommunityName( $community ) );
|
|
c::view()->drivers_delivery = $deliveryFor;
|
|
c::view()->community = $community;
|
|
}
|
|
|
|
c::view()->display( 'drivers/assign/community' );
|
|
}
|
|
|
|
public function restaurant(){
|
|
|
|
$this->loadData();
|
|
|
|
if( c::getPagePiece( 3 ) ){
|
|
$restaurant = Restaurant::o( c::getPagePiece( 3 ) );
|
|
$drivers = $restaurant->drivers();
|
|
$deliveryFor = [];
|
|
foreach( $drivers as $driver ){
|
|
$deliveryFor[ $driver->id_admin ] = true;
|
|
}
|
|
c::view()->drivers_delivery = $deliveryFor;
|
|
c::view()->id_restaurant = $restaurant->id_restaurant;
|
|
}
|
|
|
|
c::view()->display( 'drivers/assign/restaurant' );
|
|
}
|
|
|
|
|
|
public function driver(){
|
|
|
|
$this->loadData();
|
|
|
|
if( c::getPagePiece( 3 ) ){
|
|
$admin = Admin::o( c::getPagePiece( 3 ) );
|
|
$restaurants = $admin->restaurantsHeDeliveryFor();
|
|
$deliveryFor = [];
|
|
foreach( $restaurants as $restaurant ){
|
|
$deliveryFor[ $restaurant->id_restaurant ] = true;
|
|
}
|
|
$adminCommunities = [];
|
|
$groups = $admin->groups();
|
|
foreach ( $groups as $group ) {
|
|
$adminCommunities[ $group->name ] = true;
|
|
}
|
|
c::view()->admin_communities = $adminCommunities;
|
|
c::view()->restaurants_delivery = $deliveryFor;
|
|
c::view()->id_admin = $admin->id_admin;
|
|
}
|
|
|
|
c::view()->display( 'drivers/assign/driver' );
|
|
}
|
|
|
|
} |