Added new ConstructionConsent Features
This commit is contained in:
@@ -140,45 +140,69 @@ class ConstructionConsentController extends mfBaseController {
|
||||
$this->addAction();
|
||||
}
|
||||
|
||||
protected function download() {
|
||||
//var_dump($r->get());exit;
|
||||
protected function generatePdf(array $owners, ConstructionConsent $consent): ?string
|
||||
{
|
||||
if (empty($owners)) return null;
|
||||
|
||||
$this->layout()->setTemplate("ConstructionConsent/Consentform.pdf");
|
||||
$this->layout()->set("ressourcePathPrefix", MFFANCYBASEURL);
|
||||
$this->layout()->set("owners", $owners);
|
||||
$this->layout()->set("consent", $consent);
|
||||
|
||||
return $consent->createConsentFormPdf($owners); // Might need adjustment for multiple
|
||||
}
|
||||
|
||||
protected function downloadAction()
|
||||
{
|
||||
$owner_id = $this->request->owner_id;
|
||||
if (!is_numeric($owner_id) || $owner_id < 1) {
|
||||
|
||||
if (!is_numeric($owner_id) || $owner_id < 1 || !($owner = new ConstructionConsentOwner($owner_id))->id) {
|
||||
$this->layout()->setFlash("Besitzer nicht gefunden", "error");
|
||||
$this->redirect("ConstructionConsent");
|
||||
}
|
||||
|
||||
$owner = new ConstructionConsentOwner($owner_id);
|
||||
if (!$owner->id) {
|
||||
$this->layout()->setFlash("Besitzer nicht gefunden", "error");
|
||||
$this->redirect("ConstructionConsent");
|
||||
}
|
||||
|
||||
$cc = $owner->consent;
|
||||
if(!$cc) {
|
||||
if (!($cc = $owner->consent)) {
|
||||
$this->layout()->setFlash("Zustimmungserklärung nicht gefunden.", "error");
|
||||
$this->redirect("ConstructionConsent");
|
||||
}
|
||||
|
||||
$this->layout()->setTemplate("ConstructionConsent/Consentform.pdf");
|
||||
$this->layout()->set("ressourcePathPrefix", MFFANCYBASEURL);
|
||||
$this->layout()->set("owners", [$owner]);
|
||||
$this->layout()->set("consent", $cc);
|
||||
//return true;
|
||||
|
||||
$filename = $cc->createConsentFormPdf($owner);
|
||||
if(!$filename) {
|
||||
$this->layout()->setFlash("Beim Erstellen des PDFs ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.", "error");
|
||||
if (!($filename = $this->generatePdf([$owner], $cc))) {
|
||||
$this->layout()->setFlash("PDF-Erstellung fehlgeschlagen", "error");
|
||||
$this->redirect("ConstructionConsent", "View", ["id" => $cc->id]);
|
||||
}
|
||||
|
||||
header('Content-Type: application/octet-stream');
|
||||
header('Content-disposition: attachment; filename="Zustimmungserklärung-'.$cc->id.'-'.$owner_id.'.pdf"');
|
||||
header('Content-Transfer-Encoding: binary');
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
header('Content-Type: ' . mime_content_type($filename));
|
||||
header("Content-Length: " . filesize($filename));
|
||||
$this->sendPdfResponse($filename, "Zustimmungserklärung-{$cc->id}-{$owner_id}.pdf");
|
||||
}
|
||||
|
||||
protected function downloadMultipleAction()
|
||||
{
|
||||
// Reuse index filter logic
|
||||
$filter = $this->getPreparedFilter($this->request->filter);
|
||||
|
||||
$owners = [];
|
||||
foreach (ConstructionConsent::search($filter, []) as $consent) {
|
||||
$owners = array_merge($owners, $consent->owners ?: []);
|
||||
}
|
||||
|
||||
if (empty($owners)) {
|
||||
$this->layout()->setFlash("Keine Besitzer gefunden", "error");
|
||||
$this->redirect("ConstructionConsent");
|
||||
}
|
||||
|
||||
// Use first consent as base - might need adjustment for your use case
|
||||
if (!($filename = $this->generatePdf($owners, $owners[0]->consent))) {
|
||||
$this->layout()->setFlash("PDF-Erstellung fehlgeschlagen", "error");
|
||||
$this->redirect("ConstructionConsent");
|
||||
}
|
||||
|
||||
$this->sendPdfResponse($filename, "Zustimmungserklärungen-".date('Y-m-d').".pdf");
|
||||
}
|
||||
|
||||
private function sendPdfResponse(string $filename, string $downloadName): void
|
||||
{
|
||||
header('Content-Type: ' . mime_content_type($filename));
|
||||
header('Content-disposition: attachment; filename="' . $downloadName . '"');
|
||||
header('Content-Length: ' . filesize($filename));
|
||||
readfile($filename);
|
||||
exit;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user