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}");
}
}
}