public function generatePdf(SubmitButton $button) { $values = $button->getForm()->getValues(true); $items = $this->listingItemsReader->findListingsItems([$this->listingResult->getListingId()]); $listing = $this->listingResult->getListing(); $listingData = ['l_id' => $listing->id, 'l_year' => $listing->year, 'l_month' => $listing->month, 'l_description' => $listing->description, 'l_hourlyWage' => $listing->hourlyWage, 'u_id' => $listing->user->id, 'u_name' => $listing->user->name, 'worked_days' => $this->listingResult->getWorkedDays(), 'worked_hours' => $this->listingResult->getWorkedHours(), 'total_worked_hours_in_sec' => $this->listingResult->getTotalWorkedHours()->toSeconds(), 'lunch_hours' => $this->listingResult->getLunchHours(), 'other_hours' => $this->listingResult->getOtherHours()]; /** @var IListingPdfFile $pdf */ $pdf = $this->listingPDFGenerator->generate($listingData, $items, $values); $response = new Nette\Application\Responses\FileResponse($pdf->getStoragePath(), $pdf->getFileName()); $this->presenter->sendResponse($response); }
public function generate($year, User $user, array $settings = []) { $listings = $this->listingsReader->getAnnualListingsForPDFGeneration($year, $user); $listings = Arrays::associate($listings, 'l_id'); $items = $this->listingItemsReader->findListingsItems(array_keys($listings)); $pdfFiles = []; $listingItemsCollection = []; /** * @var int $listingId * @var IListingPdfSource $pdfSource */ foreach ($listings as $listingId => $listing) { foreach ($items as $key => $item) { if ($item->getListing()->getId() == $listingId) { $listingItemsCollection[] = $item; unset($items[$key]); } } $pdfFiles[] = $this->listingPdfGenerator->generate($listing, $listingItemsCollection, $settings); $listingItemsCollection = []; } $zipStorageFilePath = $this->storagePath . '/' . $user->getId() . '/' . $year . "/vycetky-{$year}.zip"; return $this->zipFiles($pdfFiles, $zipStorageFilePath); }