public static function checkRemoteQueue($service_id) { $date = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $allow_remote = QueueSettings::allowRemote($service_id); $remote_limit = QueueSettings::remoteLimit($service_id); $total_numbers_today = PriorityNumber::where('date', '=', $date)->select(DB::raw('COUNT(priority_number.track_id) as total_numbers_today'))->first()->total_numbers_today; $total_remote_today = PriorityNumber::where('date', '=', $date)->join('priority_queue', 'priority_queue.track_id', '=', 'priority_number.track_id')->where(function ($query) { $query->where('priority_queue.queue_platform', '=', 'remote')->orWhere('priority_queue.queue_platform', '=', 'android'); })->select(DB::raw('COUNT(priority_number.track_id) as total_remote_today'))->first()->total_remote_today; $remote_queue_value = floor($total_numbers_today * ($remote_limit / 100)); $result = $allow_remote && $remote_queue_value > $total_remote_today ? true : false; return $result; }
public static function getTrackIdByServiceId($service_id) { return PriorityNumber::where('service_id', '=', $service_id)->select(array('track_id'))->get(); }
public static function sendNumberNextSms($transaction_number, $diff) { $phone = PriorityQueue::phone($transaction_number); $name = PriorityQueue::name($transaction_number); if ($phone) { $pq = Helper::firstFromTable('priority_queue', 'transaction_number', $transaction_number); $terminal_id = TerminalTransaction::terminalId($transaction_number); $service_id = PriorityNumber::serviceId($pq->track_id); $priority_number = PriorityQueue::priorityNumber($transaction_number); $current_number = ProcessQueue::currentNumber($service_id); $terminal_name = $terminal_id != 0 ? Terminal::name($terminal_id) : ''; $business_name = $terminal_id != 0 ? Business::name(Business::getBusinessIdByTerminalId($terminal_id)) : ''; $name = $name == null ? null : ' ' . $name; $message = "Hello{$name}, Your number, ({$priority_number}), will be called soon. "; $message .= "Number ({$current_number}) has been called by {$terminal_name}. "; if ($diff >= 1) { $message .= $diff == 1 ? "There is currently " . $diff . " person ahead of you " : "There are currently " . $diff . " people ahead of you "; } $message .= "at the {$terminal_name} at {$business_name}."; Notifier::sendServiceSms($message, $phone, $service_id); } }
public static function getActiveBusinesses() { /* return DB::table('business')->join('branch', 'business.business_id', '=', 'branch.business_id') ->join('service', 'branch.branch_id', '=', 'service.branch_id') ->join('priority_number', 'service.service_id', '=', 'priority_number.service_id') ->join('priority_queue', 'priority_number.track_id', '=', 'priority_queue.track_id') ->join('terminal_transaction', 'priority_queue.transaction_number', '=', 'terminal_transaction.transaction_number') ->where('terminal_transaction.time_queued', '!=', 0) ->select(array('business.business_id', 'business.name', 'business.local_address')) ->get(); */ $active_businesses = array(); $businesses = Business::all(); foreach ($businesses as $count => $business) { $branches = Branch::getBranchesByBusinessId($business->business_id); foreach ($branches as $count2 => $branch) { $services = Service::getServicesByBranchId($branch->branch_id); foreach ($services as $count3 => $service) { $priority_numbers = PriorityNumber::getTrackIdByServiceId($service->service_id); foreach ($priority_numbers as $count4 => $priority_number) { $priority_queues = PriorityQueue::getTransactionNumberByTrackId($priority_number->track_id); foreach ($priority_queues as $count5 => $priority_queue) { $terminal_transactions = TerminalTransaction::getTimesByTransactionNumber($priority_queue->transaction_number); foreach ($terminal_transactions as $count6 => $terminal_transaction) { $grace_period = time() - $terminal_transaction->time_queued; // issued time must be on the current day to count as active if ($terminal_transaction->time_queued != 0 && $terminal_transaction->time_completed == 0 && $terminal_transaction->time_removed == 0 && $grace_period < 86400) { // 1 day; 60secs * 60 min * 24 hours $active_businesses[$business->business_id] = array('local_address' => $business->local_address, 'name' => $business->name); break; } } if (array_key_exists($business->business_id, $active_businesses)) { break; } } if (array_key_exists($business->business_id, $active_businesses)) { break; } } if (array_key_exists($business->business_id, $active_businesses)) { break; } } if (array_key_exists($business->business_id, $active_businesses)) { break; } } } return $active_businesses; }