public function postDelete()
 {
     $business_id = Business::getBusinessIdByTerminalId(Input::get('terminal_id'));
     if (Helper::isBusinessOwner($business_id, Helper::userId())) {
         // PAG added permission checking
         $error = 'There are still pending numbers for this terminal.';
         if (TerminalTransaction::terminalActiveNumbers(Input::get('terminal_id')) == 0) {
             Terminal::deleteTerminal(Input::get('terminal_id'));
             $error = NULL;
         }
         $business = Business::getBusinessDetails($business_id);
         $business['error'] = $error;
         return json_encode(['success' => 1, 'business' => $business]);
     } else {
         return json_encode(array('message' => 'You are not allowed to access this function.'));
     }
 }
 /**
  * @param $transaction_number
  * @param null $terminal_id
  * @return string
  */
 public function getCallnumber($transaction_number, $terminal_id)
 {
     try {
         if (is_null(TerminalTransaction::find($transaction_number))) {
             return json_encode(['error' => 'You have called an invalid input.']);
         }
         $terminal_transaction = TerminalTransaction::find($transaction_number);
         $priority_queue = PriorityQueue::find($transaction_number);
         if ($terminal_transaction->time_called != 0) {
             return json_encode(['error' => 'Number ' . $priority_queue->priority_number . ' has already been called. Please call another number.']);
         } else {
             return ProcessQueue::callTransactionNumber($transaction_number, Helper::userId(), $terminal_id);
         }
     } catch (Exception $e) {
         return json_encode(['error' => $e->getMessage()]);
     }
 }
 public function postInsertspecific($service_id, $terminal_id = 0, $queue_platform = 'web')
 {
     $priority_number = Input::get('priority_number');
     $name = Input::get('name');
     $phone = Input::get('phone');
     $email = Input::get('email');
     $time_assigned = Input::get('time_assigned') ? strtotime(Input::get('time_assigned')) : 0;
     $terminal_id = QueueSettings::terminalSpecificIssue($service_id) ? $terminal_id : 0;
     $next_number = ProcessQueue::nextNumber(ProcessQueue::lastNumberGiven($service_id), QueueSettings::numberStart($service_id), QueueSettings::numberLimit($service_id));
     $queue_platform = $priority_number == $next_number || $priority_number == null ? $queue_platform : 'specific';
     //save
     if (($queue_platform == 'android' || $queue_platform == 'remote') && !QueueSettings::checkRemoteQueue($service_id)) {
         return json_encode(['error' => 'Remote queue option is not allowed at this time.']);
     } elseif (($queue_platform == 'android' || $queue_platform == 'remote') && $this->queueNumberExists($email)) {
         return json_encode(['error' => 'You are only allowed to queue remotely once per day.']);
     } else {
         $number = ProcessQueue::issueNumber($service_id, $priority_number, null, $queue_platform, $terminal_id);
         PriorityQueue::updatePriorityQueueUser($number['transaction_number'], $name, $phone, $email);
         TerminalTransaction::where('transaction_number', '=', $number['transaction_number'])->update(['time_assigned' => $time_assigned]);
         return json_encode(['success' => 1, 'number' => $number]);
     }
 }
 /**
  * @author Aunne Rouie Arzadon
  * @param $facebook_id
  * @return string
  */
 public function getQueueInfo($facebook_id, $business_id = null)
 {
     try {
         $user_id = User::getUserIdByFbId($facebook_id);
     } catch (Exception $e) {
         $user_id = null;
     }
     if ($business_id) {
         $service = Service::getFirstServiceOfBusiness($business_id);
         $allow_remote = QueueSettings::allowRemote($service->service_id);
     }
     if ($user_id) {
         try {
             $transaction_number = PriorityQueue::getLatestTransactionNumberOfUser($user_id);
             $priority_number = PriorityQueue::priorityNumber($transaction_number);
             $track_id = PriorityQueue::trackId($transaction_number);
             $service_id = PriorityNumber::serviceId($track_id);
             $business_id = Branch::businessId(Service::branchId($service_id));
             $details = ['number_assigned' => $priority_number, 'business_id' => $business_id, 'business_name' => Business::name($business_id), 'current_number_called' => ProcessQueue::currentNumber($service_id), 'estimated_time_until_called' => Analytics::getWaitingTime($business_id), 'status' => TerminalTransaction::queueStatus($transaction_number), 'allow_remote' => isset($allow_remote) ? $allow_remote : null];
         } catch (Exception $e) {
             $details = ['number_assigned' => 0, 'business_id' => 0, 'business_name' => '', 'current_number_called' => 0, 'estimated_time_until_called' => 0, 'status' => 'Error', 'allow_remote' => isset($allow_remote) ? $allow_remote : null];
         }
         return json_encode($details);
     } else {
         return json_encode(['error' => 'You are not registered to FeatherQ.']);
     }
 }