remind drivers about their shift the day before their shift #2816
This commit is contained in:
parent
30739a02c3
commit
5abf40b92f
1
db/migrate/000182_admin_shift_assign.sql
Normal file
1
db/migrate/000182_admin_shift_assign.sql
Normal file
@ -0,0 +1 @@
|
||||
ALTER TABLE `admin_shift_assign` ADD `warned` TINYINT( 1 ) NOT NULL DEFAULT '0';
|
||||
@ -623,10 +623,89 @@ class Crunchbutton_Community_Shift extends Cana_Table {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log::debug( [ 'action' => 'ERROR: sending sms', 'id_admin' => $admin->id_admin, 'name' => $admin->name, 'num' => $num, 'msg' => $msg, 'type' => 'driver-remind' ] );
|
||||
Log::debug( [ 'action' => 'ERROR: sending remind sms', 'id_admin' => $admin->id_admin, 'name' => $admin->name, 'num' => $num, 'msg' => $msg, 'type' => 'driver-remind' ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function minutesToStart(){
|
||||
$now = new DateTime( 'now', new DateTimeZone( $this->timezone() ) );
|
||||
$diff = $now->diff( $this->dateStart() );
|
||||
return ( $diff->i )
|
||||
+ ( $diff->h * 60 )
|
||||
+ ( $diff->d * 60 * 24 )
|
||||
+ ( $diff->m * 60 * 24 * 30 )
|
||||
+ ( $diff->y * 60 * 24 * 365 );
|
||||
}
|
||||
|
||||
public function warningDriversBeforeTheirShift(){
|
||||
|
||||
$env = c::getEnv();
|
||||
|
||||
$twilio = new Twilio( c::config()->twilio->{$env}->sid, c::config()->twilio->{$env}->token );
|
||||
|
||||
$minutes = 15;
|
||||
$communities = Crunchbutton_Community::q( 'SELECT DISTINCT( c.id_community ) AS id, c.* FROM community c INNER JOIN restaurant_community rc ON rc.id_community = c.id_community INNER JOIN restaurant r ON r.id_restaurant = rc.id_restaurant WHERE r.active = 1 AND r.delivery_service = 1 ORDER BY c.name' );
|
||||
|
||||
foreach( $communities as $community ){
|
||||
|
||||
if( $community->timezone ){
|
||||
$now = new DateTime( 'now', new DateTimeZone( $community->timezone ) );
|
||||
$now->modify( '- 5 minutes' );
|
||||
$_now = $now->format( 'Y-m-d H:i' );
|
||||
$now->modify( '+ ' . ( $minutes + 5 ) . ' minutes' );
|
||||
$_interval = $now->format( 'Y-m-d H:i' );
|
||||
$nextShifts = Crunchbutton_Community_Shift::q( 'SELECT DISTINCT( cs.id_community_shift ) AS id, cs.* FROM admin_shift_assign asa
|
||||
INNER JOIN community_shift cs ON cs.id_community_shift = asa.id_community_shift
|
||||
WHERE DATE_FORMAT( cs.date_start, "%Y-%m-%d %H:%i" ) >= "' . $_now . '" AND DATE_FORMAT( cs.date_start, "%Y-%m-%d %H:%i" ) <= "' . $_interval . '" AND cs.id_community = "' . $community->id_community . '"' );
|
||||
if( $nextShifts->count() > 1 ){
|
||||
foreach( $nextShifts as $shift ){
|
||||
$assigments = Crunchbutton_Admin_Shift_Assign::q( 'SELECT * FROM admin_shift_assign asa WHERE id_community_shift = ' . $shift->id_community_shift . ' AND warned = 0' );
|
||||
foreach( $assigments as $assignment ){
|
||||
|
||||
$shift = $assignment->shift();
|
||||
$admin = $assignment->admin();
|
||||
$minutesToStart = $shift->minutesToStart();
|
||||
if( $minutesToStart > 0 ){
|
||||
|
||||
$message = 'Your shift starts in ' . $minutesToStart . ' minutes. Your shift(s) today, ' . $now->format( 'M jS Y' ) . ': ' . $shift->startEndToString() . '. If you have any questions/feedback for us, feel free to text us back!';
|
||||
|
||||
$txt = $admin->txt;
|
||||
$phone = $admin->phone;
|
||||
|
||||
$num = ( $txt != '' ) ? $txt : $phone;
|
||||
|
||||
$message = str_split( $message, 160 );
|
||||
|
||||
if( $num != '' ){
|
||||
foreach ( $message as $msg ) {
|
||||
try {
|
||||
// Log
|
||||
Log::debug( [ 'action' => 'sending remind sms before shift', 'id_admin' => $admin->id_admin, 'name' => $admin->name, 'num' => $num, 'msg' => $msg, 'type' => 'driver-remind' ] );
|
||||
$twilio->account->sms_messages->create( c::config()->twilio->{ $env }->outgoingTextCustomer, '+1'.$num, $msg );
|
||||
$log = 'Sending sms to: ' . $admin->name . ' - ' . $num . ': ' . $msg .'; shift_id: ' . $shift->id_community_shift;
|
||||
Log::debug( [ 'action' => $log, 'type' => 'driver-remind' ] );
|
||||
echo $log."\n";
|
||||
$assignment->warned = 1;
|
||||
$assignment->save();
|
||||
} catch (Exception $e) {
|
||||
// Log
|
||||
Log::debug( [ 'action' => 'ERROR: sending remind sms before shift', 'id_admin' => $admin->id_admin, 'name' => $admin->name, 'num' => $num, 'msg' => $msg, 'type' => 'driver-remind' ] );
|
||||
$log = 'Error Sending sms to: ' . $admin->name . ' - ' . $num . ': ' . $msg .'; shift_id: ' . $shift->id_community_shift;
|
||||
Log::debug( [ 'action' => $log, 'type' => 'driver-remind' ] );
|
||||
echo $log."\n";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log::debug( [ 'action' => 'ERROR: sending sms', 'id_admin' => $admin->id_admin, 'name' => $admin->name, 'num' => $num, 'msg' => $msg, 'type' => 'driver-remind' ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user