66 lines
2.4 KiB
PHP
66 lines
2.4 KiB
PHP
<?php
|
|
|
|
class Crunchbutton_Admin_Shift_Assign extends Cana_Table {
|
|
public function __construct($id = null) {
|
|
parent::__construct();
|
|
$this
|
|
->table('admin_shift_assign')
|
|
->idVar('id_admin_shift_assign')
|
|
->load($id);
|
|
}
|
|
|
|
public function admin(){
|
|
if( !$this->_admin ){
|
|
$this->_admin = Admin::o( $this->id_admin );
|
|
}
|
|
return $this->_admin;
|
|
}
|
|
|
|
public function shift(){
|
|
if( !$this->_shift ){
|
|
$this->_shift = Crunchbutton_Community_Shift::o( $this->id_community_shift );
|
|
}
|
|
return $this->_shift;
|
|
}
|
|
|
|
public function removeAssignment( $id_community_shift ){
|
|
Crunchbutton_Admin_Shift_Assign_Permanently::removeByShift( $id_community_shift );
|
|
return c::db()->query( "DELETE FROM admin_shift_assign WHERE id_community_shift = " . $id_community_shift );
|
|
}
|
|
|
|
public function shiftsByAdminPeriod( $id_admin, $date_start, $date_end ){
|
|
return Crunchbutton_Community_Shift::q( 'SELECT cs.* FROM community_shift cs
|
|
INNER JOIN admin_shift_assign asa ON asa.id_community_shift = cs.id_community_shift AND asa.id_admin = ' . $id_admin .
|
|
' WHERE DATE_FORMAT( cs.date_start, "%Y-%m-%d" ) >= "' . $date_start . '" AND DATE_FORMAT( cs.date_end, "%Y-%m-%d" ) <= "' . $date_end . '"' );
|
|
}
|
|
|
|
public function assignAdminToShift( $id_admin, $id_community_shift, $permanently ){
|
|
if( !Crunchbutton_Admin_Shift_Assign::adminHasShift( $id_admin, $id_community_shift ) ){
|
|
$assignment = new Crunchbutton_Admin_Shift_Assign();
|
|
$assignment->id_admin = $id_admin;
|
|
$assignment->id_community_shift = $id_community_shift;
|
|
$assignment->date = date('Y-m-d H:i:s');
|
|
$assignment->save();
|
|
Crunchbutton_Admin_Shift_Assign_Permanently::removeByAdminShift( $id_admin, $id_community_shift );
|
|
if( $permanently ){
|
|
Crunchbutton_Admin_Shift_Assign_Permanently::addDriver( $id_admin, $id_community_shift );
|
|
}
|
|
} else {
|
|
Crunchbutton_Admin_Shift_Assign_Permanently::removeByAdminShift( $id_admin, $id_community_shift );
|
|
if( $permanently ){
|
|
Crunchbutton_Admin_Shift_Assign_Permanently::addDriver( $id_admin, $id_community_shift );
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function adminHasShift( $id_admin, $id_community_shift ){
|
|
$shift = Crunchbutton_Admin_Shift_Assign::q( "SELECT * FROM admin_shift_assign WHERE id_admin = " . $id_admin . " AND id_community_shift = " . $id_community_shift . " LIMIT 1" );
|
|
if( $shift->id_admin_shift_assign ){
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
} |