/**
* Prepare the Certificate template with the data available from the given event.
*
* @param \Event $event
* @param boolean $ignore_portal - if true, will force the signature box to be rendered rather than checking the portal
* @return \ODTTemplateManager
* @throws \Exception
*/
protected function populateCviCertificate(\Event $event, $ignore_portal = false)
{
$signature_element = $this->getConsentSignatureElementForEvent($event);
// we need to check if we already have a signature file linked
if (!$signature_element->checkSignature()) {
//TODO: restructure or rename, as this process is basically also going to generate
//TODO: the QR code signature placeholder when its not yet been captured.
// we check if the signature is exists on the portal
$signature = $ignore_portal ? $signature_element->getSignatureBox() : $signature_element->loadSignatureFromPortal();
} else {
// TODO: this should be checked before, when we retrieve the patient signature!!!
// we get the stored signature and creates a GD object from the data
if ($signature_element->getDecryptedSignature()) {
$signature = imagecreatefromstring($signature_element->getDecryptedSignature());
} else {
$signature = imagecreatetruecolor(1, 1);
}
}
// TODO: need to configure this more cleanly
$print_helper = new \ODTTemplateManager($this->input_template_file, realpath(__DIR__ . '/..') . '/views/odtTemplate', $this->yii->basePath . '/runtime/cache/cvi/', 'CVICert_' . $event->id . '_' . mt_rand() . '.odt');
$data_handler = new \ODTDataHandler();
$structured_data = $this->getStructuredDataForPrintPDF($event);
$data_handler->setTableAndSimpleTextDataFromArray($structured_data);
$tables = $data_handler->getTables();
foreach ($tables as $one_table) {
$name = $one_table['name'];
$data = $data_handler->generateSimpleTableHashData($one_table);
$print_helper->fillTableByName($name, $data, 'name');
}
$texts = $data_handler->getSimpleTexts();
$print_helper->exchangeAllStringValuesByStyleName($texts);
//$print_helper->exchangeStringValues( $this->getStructuredDataForPrintPDF($id) );
// TODO: This should be handled more cleanly for the image manipulation
$print_helper->changeImageFromGDObject('signatureImagePatient', $signature);
if (array_key_exists('signatureImageConsultant', $structured_data)) {
$print_helper->changeImageFromGDObject('signatureImageConsultant', $structured_data['signatureImageConsultant']);
}
$print_helper->saveContentXML();
$print_helper->generatePDF();
return $print_helper;
}