/** * Cette fonction retourne la dernère adresse d'un path * @param int $pathId : L'id du path * @return mixed : La dernière adresse du path sous forme d'un numéro de rue ou faux si le camion n'existe pas */ public function path_last_address($pathId) { global $db; if (!($position = $db->getFromTableWhere('position', ['path_id' => $pathId], $order_by = 'at', $desc = true, $limit = 1))) { return false; } $position = $position[0]; $address = internalTools::getAdressFromLatitudeAndLongitude($position['latitude'], $position['longitude']); }
/** * Cette fonction permet de demander une intervention pour un employé * @param int $pathId : L'id du path sur lequel il faut intervenir * @param int $repairerId : L'id du réparateur à contacter */ public function askForIntervention($pathId, $repairerId) { global $logger; global $db; $logger->log('info', 'Access Back Office, ask for intervention for path id : ' . $pathId . ' and repairer id : ' . $repairerId); $retourOk = json_encode(['success' => true]); $retourKo = json_encode(['success' => false]); if (!$db->getFromTableWhere('path', ['id' => $pathId])) { $logger->log('warning', 'No path with id ' . $pathId . ' find in database'); echo $retourKo; return false; } $availablesRepairers = $db->getAvailablesRepairers(); $isAvailable = false; foreach ($availablesRepairers as $availablesRepairer) { if ($availablesRepairer['id'] == $repairerId) { $repairer = $availablesRepairer; $isAvailable = true; break; } } if (!$isAvailable) { $logger->log('warning', 'repairer with id : ' . $repairerId . ' isn\'t available'); echo $retourKo; return false; } $intervention = array('path_id' => $pathId, 'repairer_id' => $repairerId, 'status' => internalConstants::$interventionStatus['WAIT']); if (!$db->insertIntoTable('intervention', $intervention)) { $logger->log('error', 'can\'t save intevention : ' . json_encode($intervention)); echo $retourKo; return false; } $interventionId = $db->lastId(); //On envoie un SMS au réparateur $internalSms = new internalSms(); $paths = $db->getFromTableWhere('path', ['id' => $pathId]); $path = $paths[0]; $path['truck'] = $db->getFromTableWhere('truck', ['id' => $path['truck_id']])[0]; $path['position'] = $db->getFromTableWhere('position', ['path_id' => $path['id']], $order_by = 'at', $desc = true, $limit = 1)[0]; $text = "Une intervention sur le camion N°" . $path['truck']['matriculation'] . " vous attend à l'adresse suivante : " . internalTools::getAdressFromLatitudeAndLongitude($path['position']['latitude'], $path['position']['longitude']) . "\n" . "Pour valider l'intervention, renvoyez le SMS suivant à ce numéro : 'intervention:" . $interventionId . ":ok'\n" . "\n" . "Si vous n'avez pas répondu d'ici 5 minutes l'intervention sera annulée."; $logger->log('info', 'Send SMS to repairer id : ' . $repairer['id'] . ' (' . $repairer['phone'] . ') with message : ' . $text); $internalSms = new internalSms(); $internalSms->sendSmsToNumber($text, $repairer['phone']); echo $retourOk; return true; }