public function confirmLetterPrinted($confirmto = null, $confirmdate = null) { // admin users can set confirmto and confirm up to a specific point, steamrollering whatever else is in there if (!is_null($confirmto)) { if (!($dls = $this->date_letter_sent)) { $dls = new OphTrOperationbooking_Operation_Date_Letter_Sent(); $dls->element_id = $this->id; } if ($confirmto == self::LETTER_GP) { $dls->date_invitation_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_1st_reminder_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_2nd_reminder_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_gp_letter_sent = Helper::convertNHS2MySQL($confirmdate); } if ($confirmto == self::LETTER_INVITE) { $dls->date_invitation_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_1st_reminder_letter_sent = null; $dls->date_2nd_reminder_letter_sent = null; $dls->date_gp_letter_sent = null; } if ($confirmto == self::LETTER_REMINDER_1) { $dls->date_invitation_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_1st_reminder_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_2nd_reminder_letter_sent = null; $dls->date_gp_letter_sent = null; } if ($confirmto == self::LETTER_REMINDER_2) { $dls->date_invitation_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_1st_reminder_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_2nd_reminder_letter_sent = Helper::convertNHS2MySQL($confirmdate); $dls->date_gp_letter_sent = null; } if ($confirmto == 'noletters') { $dls->date_invitation_letter_sent = null; $dls->date_1st_reminder_letter_sent = null; $dls->date_2nd_reminder_letter_sent = null; $dls->date_gp_letter_sent = null; } if (!$dls->save()) { throw new Exception('Unable to save date letter sent: ' . print_r($dls->getErrors(), true)); } OELog::log("Letter print confirmed, datelettersent={$dls->id} confirmdate='{$confirmdate}'"); // Only confirm if letter is actually due } elseif ($this->getDueLetter() !== $this->getLastLetter()) { if ($dls = $this->date_letter_sent) { if ($dls->date_invitation_letter_sent == null) { $dls->date_invitation_letter_sent = date('Y-m-d H:i:s'); } elseif ($dls->date_1st_reminder_letter_sent == null) { $dls->date_1st_reminder_letter_sent = date('Y-m-d H:i:s'); } elseif ($dls->date_2nd_reminder_letter_sent == null) { $dls->date_2nd_reminder_letter_sent = date('Y-m-d H:i:s'); } elseif ($dls->date_gp_letter_sent == null) { $dls->date_gp_letter_sent = date('Y-m-d H:i:s'); } elseif ($dls->date_scheduling_letter_sent == null) { $dls->date_scheduling_letter_sent = date('Y-m-d H:i:s'); } if (!$dls->save()) { throw new SystemException("Unable to update date_letter_sent record {$dls->id}: " . print_r($dls->getErrors(), true)); } OELog::log("Letter print confirmed, datelettersent={$dls->id}"); } else { $dls = new OphTrOperationbooking_Operation_Date_Letter_Sent(); $dls->element_id = $this->id; $dls->date_invitation_letter_sent = date('Y-m-d H:i:s'); if (!$dls->save()) { throw new SystemException('Unable to save new date_letter_sent record: ' . print_r($dls->getErrors(), true)); } OELog::log("Letter print confirmed, datelettersent={$dls->id}"); } } }
public function cancel($reason, $cancellation_comment, $reschedule = false) { $this->booking_cancellation_date = date('Y-m-d H:i:s'); $this->cancellation_reason_id = $reason->id; $this->cancellation_comment = $cancellation_comment; $this->cancellation_user_id = Yii::app()->session['user']->id; if (!$this->save()) { throw new Exception('Unable to save booking: ' . print_r($this->getErrors(), true)); } OELog::log("Booking cancelled: {$this->id}"); if (!$reschedule) { if (!$this->operation->event->addIssue('Operation requires scheduling')) { throw new Exception('Unable to add event issue: ' . print_r($this->operation->event->getErrors(), true)); } if (Yii::app()->params['urgent_booking_notify_hours'] && Yii::app()->params['urgent_booking_notify_email']) { if (strtotime($this->session->date) <= strtotime(date('Y-m-d')) + Yii::app()->params['urgent_booking_notify_hours'] * 3600) { if (!is_array(Yii::app()->params['urgent_booking_notify_email'])) { $targets = array(Yii::app()->params['urgent_booking_notify_email']); } else { $targets = Yii::app()->params['urgent_booking_notify_email']; } foreach ($targets as $email) { if (!Mailer::mail($email, '[OpenEyes] Urgent cancellation made', "A cancellation was made with a TCI date within the next 24 hours.\n\nDisorder: " . $this->operation->getDisorderText() . "\n\nPlease see: http://" . @$_SERVER['SERVER_NAME'] . "/transport\n\nIf you need any assistance you can reply to this email and one of the OpenEyes support personnel will respond.", 'From: ' . Yii::app()->params['urgent_booking_notify_email_from'] . "\r\n")) { } Yii::app()->user->setFlash('warning.email-failure', 'E-mail Failure. Failed to send one or more urgent booking notification E-mails.'); } } } $this->audit('booking', 'cancel'); $this->operation->event->episode->episode_status_id = 3; if (!$this->operation->event->episode->save()) { throw new Exception('Unable to update episode status for episode: ' . print_r($operation->event->episode->getErrors(), true)); } // we've just cancelled a booking and updated the element_operation status to 'needs rescheduling' // any time we do that we need to add a new record to date_letter_sent $date_letter_sent = new OphTrOperationbooking_Operation_Date_Letter_Sent(); $date_letter_sent->element_id = $this->element_id; if (!$date_letter_sent->save()) { throw new Exception('Unable to save date_letter_sent: ' . print_r($date_letter_sent->getErrors(), true)); } } }