/**
  * Retrieve a logistician by ID.
  * @param int|string $id
  * @return Logistician
  */
 public function get_logistician_by_id($id)
 {
     $logistician = new ModelTemplate('Logistician');
     $logistician = $logistician->get_single('id', $id);
     if ($logistician) {
         // Add super class SMSUser fields to the Logistician instance.
         $smsUserCtr = new SMSUser_Controller();
         // It should have super class fields, otherwise delete the instance.
         if ($smsUser = $smsUserCtr->get_smsuser_by_id($id)) {
             $logistician->add_field('telephone', $smsUser->telephone);
         } else {
             $logistician = null;
         }
     }
     return $logistician;
 }
 /**
  * Retrieve single truck driver, specified by ID.
  * @param int|string $id
  * @return TruckDriver
  */
 public function get_truck_driver_by_id($id)
 {
     $truckDriver = new ModelTemplate('TruckDriver');
     $truckDriver = $truckDriver->get_single('id', $id);
     if ($truckDriver) {
         // Add super class SMSUser fields to the TruckDriver instance.
         $smsUserCtr = new SMSUser_Controller();
         // It should have super class fields, otherwise delete the instance.
         if ($smsUser = $smsUserCtr->get_smsuser_by_id($id)) {
             $truckDriver->add_field('telephone', $smsUser->telephone);
         } else {
             $truckDriver = null;
         }
     }
     return $truckDriver;
 }
 /**
  * Process the following URI:
  * /api/v1/sms/ - to save an SMS.
  * 
  * When an SMS is saved a delivery confirmation SMS is sent back to sender.
  * @return mixed
  */
 private function process_sms_post()
 {
     // Convert sent post data to an array.
     $smsData = array();
     parse_str($this->file, $smsData);
     // Verify there is actually any content in the post data.
     if (isset($smsData['from']) && $smsData['from'] !== '' && isset($smsData['to']) && $smsData['to'] !== '' && isset($smsData['message']) && $smsData['message'] !== '' && isset($smsData['timestamp']) && $smsData['timestamp'] !== '') {
         // The sender and the recipient must be validated first.
         $smsUserCtr = new SMSUser_Controller();
         $sender = $smsUserCtr->get_smsuser_by_telephone($smsData['from']);
         $recipient = $smsUserCtr->get_smsuser_by_telephone($smsData['to']);
         if ($sender && $recipient) {
             // Save SMS if they're successfully validated.
             $sctr = new SMS_Controller();
             if ($sctr->save_SMS($sender->id, $recipient->id, $smsData)) {
                 // The SMS is received. Inform sender.
                 $cSend = new ClickSend_API();
                 return $cSend->send_delivery_confirmation($recipient->id, $sender->id, $sender->telephone);
             }
         }
     }
     return null;
 }