diff --git a/include/config/config.xml b/include/config/config.xml index 1f77d3d8e..6629e6de3 100755 --- a/include/config/config.xml +++ b/include/config/config.xml @@ -164,8 +164,10 @@ Hello. This is crunchbutton, 5 3 - 120000 - 300000 + 20000 + 30000 + 300000 + 120000 120000 diff --git a/include/library/Crunchbutton/Notification.php b/include/library/Crunchbutton/Notification.php index 318f984b7..e302bf8fc 100644 --- a/include/library/Crunchbutton/Notification.php +++ b/include/library/Crunchbutton/Notification.php @@ -13,7 +13,10 @@ class Crunchbutton_Notification extends Cana_Table $env = c::env() == 'live' ? 'live' : 'dev'; $num = ($env == 'live' ? $this->value : c::config()->twilio->testnumber); $mail = ($env == 'live' ? $this->value : '_EMAIL'); - $fax = ($env == 'live' ? $this->value : '_PHONE_'); + $fax = ($env == 'live' ? $this->value : '8777701208'); + + // $mail = ($env == 'live' ? $this->value : '_EMAIL'); + // $fax = ($env == 'live' ? $this->value : '_PHONE_'); switch ($this->type) { case 'fax': @@ -34,13 +37,8 @@ class Crunchbutton_Notification extends Cana_Table $log->id_order = $order->id_order; $log->save(); - Log::debug([ - 'order' => $order->id_order, - 'action' => 'send fax', - 'fax' => $fax, - 'host' => c::config()->host_callback, - 'type' => 'notification' - ]); + // Log + Log::debug( [ 'order' => $order->id_order, 'action' => 'send fax', 'fax' => $fax, 'host' => c::config()->host_callback, 'type' => 'notification' ]); $fax = new Phaxio([ 'to' => $fax, @@ -61,7 +59,7 @@ class Crunchbutton_Notification extends Cana_Table if ($order->restaurant()->confirmation && !$order->_confirm_trigger) { $order->_confirm_trigger = true; - $order->queConfirm(); + $order->queConfirmFaxWasReceived(); } break; diff --git a/include/library/Crunchbutton/Order.php b/include/library/Crunchbutton/Order.php index 8ec74b4a7..79f0639cb 100644 --- a/include/library/Crunchbutton/Order.php +++ b/include/library/Crunchbutton/Order.php @@ -520,33 +520,12 @@ class Crunchbutton_Order extends Cana_Table { return; } - Log::debug([ - 'order' => $this->id_order, - 'confirmed' =>$this->confirmed, - 'action' => 'check confirmed', - 'host' => c::config()->host_callback, - 'type' => 'notification' - ]); - - $nl = Notification_Log::q('select * from notification_log where id_order="'.$this->id_order.'" and type = "confirm" and ( status = "created" or status = "queued" or status ="success" ) '); + $nl = Notification_Log::q('SELECT * FROM notification_log WHERE id_order="'.$this->id_order.'" AND type = "confirm" AND ( status = "created" OR status = "queued" OR status ="success" ) '); if( $nl->count() > 0 ){ - Log::debug([ - 'order' => $this->id_order, - 'count' => $nl->count(), - 'action' => 'confirmation call already in process', - 'host' => c::config()->host_callback, - 'type' => 'notification' - ]); + // Log + Log::debug([ 'order' => $this->id_order, 'count' => $nl->count(), 'action' => 'confirmation call already in process', 'host' => c::config()->host_callback, 'type' => 'notification']); return; - } else { - Log::debug([ - 'order' => $this->id_order, - 'count' => $nl->count(), - 'action' => 'starting new confirmation call', - 'host' => c::config()->host_callback, - 'type' => 'notification' - ]); - } + } $env = c::env() == 'live' ? 'live' : 'dev'; $num = ($env == 'live' ? $this->restaurant()->phone : c::config()->twilio->testnumber); @@ -558,21 +537,10 @@ class Crunchbutton_Order extends Cana_Table { $log->status = 'created'; $log->save(); - /* - $num = '_PHONE_'; - c::config()->host_callback = 'dev.crunchr.co'; - */ - $callback = 'http://'.c::config()->host_callback.'/api/notification/'.$log->id_notification_log.'/confirm'; - Log::debug([ - 'order' => $this->id_order, - 'action' => 'dial confirm call', - 'num' => $num, - 'host' => c::config()->host_callback, - 'callback' => $callback, - 'type' => 'notification' - ]); + // Log + Log::debug([ 'order' => $this->id_order, 'action' => 'dial confirm call', 'count' => $nl->count(), 'num' => $num, 'host' => c::config()->host_callback, 'callback' => $callback, 'type' => 'notification']); $twilio = new Services_Twilio(c::config()->twilio->{$env}->sid, c::config()->twilio->{$env}->token); $call = $twilio->account->calls->create( @@ -581,7 +549,6 @@ class Crunchbutton_Order extends Cana_Table { 'http://'.c::config()->host_callback.'/api/order/'.$this->id_order.'/doconfirm', [ 'StatusCallback' => $callback -// 'IfMachine' => 'Hangup' ] ); @@ -641,44 +608,61 @@ class Crunchbutton_Order extends Cana_Table { } } - public function queConfirm() { + // After 5 minutes the fax was sent we have to send this confirmation to make sure that the fax as delivered. + public function queConfirmFaxWasReceived(){ $order = $this; if ($this->confirmed || !$this->restaurant()->confirmation) { return; } - // Check if there are another confirm que, if it does it will not send two confirms. Just one is enough. - $nl = Notification_Log::q('select * from notification_log where id_order="'.$this->id_order.'" and type = "confirm" and ( status = "created" or status = "queued" ) '); - if( $nl->count() > 0 ){ - return; - } - Log::debug([ - 'order' => $this->id_order, - 'confirmed' => $this->confirmed, - 'action' => 'confirm qued', - 'type' => 'notification' - ]); - $nl = Notification_Log::q('select * from notification_log where id_order="'.$this->id_order.'" and status="callback" and `type`="confirm"'); + $confirmationTime = c::config()->twilio->confirmTimeFaxReceived; - Log::debug([ 'nl_count' => $nl->count(), 'type' => 'notification' ]); + // Log + Log::debug( [ 'order' => $this->id_order, 'action' => 'confirmFaxWasReceived', 'confirmationTime' => $confirmationTime, 'confirmation number' => $nl->count(), 'confirmed' => $this->confirmed, 'type' => 'notification' ] ); - // If restaurant has fax notification we should wait 5 min before send the confirmation #784 - if( $this->restaurant()->hasFaxNotification() ){ - $confirmationTime = c::config()->twilio->confirmFaxTime; - Log::debug([ 'order' => $this->id_order, 'action' => 'hasFaxNotification - confirmationTime :' . $confirmationTime, 'type' => 'notification' ]); - } else { - $confirmationTime = c::config()->twilio->confirmTime; - Log::debug([ 'order' => $this->id_order, 'action' => 'confirmationTime :' . $confirmationTime, 'type' => 'notification' ]); - } - - // Issue #974 - if it is the 2nd, 3rd, 4th... call the confirmation time should be 2 min even to hasFaxNotification - if( $nl->count() > 0 ){ - $confirmationTime = c::config()->twilio->confirmTime; - Log::debug([ 'order' => $this->id_order, 'action' => 'confirmationTime :' . $confirmationTime, 'type' => 'notification' ]); - } c::timeout(function() use($order) { $order->confirm(); }, $confirmationTime, false); + + } + + public function queConfirm() { + + $order = $this; + + if ($this->confirmed || !$this->restaurant()->confirmation) { + return; + } + // Check if there are another confirm que, if it does it will not send two confirms. Just one is enough. + $nl = Notification_Log::q('SELECT * FROM notification_log WHERE id_order="'.$this->id_order.'" AND type = "confirm" AND ( status = "created" OR status = "queued" ) '); + if( $nl->count() > 0 ){ + return; + } + + // Query to count the number of confirmations sent + $nl = Notification_Log::q('SELECT * FROM notification_log WHERE id_order="'.$this->id_order.'" AND status="callback" AND `type`="confirm"'); + + if( $nl->count() > 0 ){ // if it is the 2nd, 3rd, 4th... call the confirmation time should be 2 min even to hasFaxNotification - #974 + $confirmationTime = c::config()->twilio->confirmTimeCallback; + + } else { // if it is the first confirmation call + + if( $this->restaurant()->hasFaxNotification() ){ // If restaurant has fax notification + $confirmationTime = c::config()->twilio->confirmFaxTime; + + } else { + $confirmationTime = c::config()->twilio->confirmTime; + + } + } + + // Log + Log::debug( [ 'order' => $this->id_order, 'action' => 'confirm', 'confirmationTime' => $confirmationTime, 'confirmation number' => $nl->count(), 'confirmed' => $this->confirmed, 'type' => 'notification' ] ); + + c::timeout(function() use($order) { + $order->confirm(); + }, $confirmationTime, false); + } public function orderMessage($type) {