예제 #1
0
 public function sendEmailAction()
 {
     $invoice = $this->invoiceService->getInvoiceById($this->params('id'));
     require "vendor/autoload.php";
     // inhibit DOMPDF's auto-loader
     define('DOMPDF_ENABLE_AUTOLOAD', false);
     //include the DOMPDF config file (required)
     require 'vendor/dompdf/dompdf/dompdf_config.inc.php';
     //if you get errors about missing classes please also add:
     require_once 'vendor/dompdf/dompdf/include/autoload.inc.php';
     if ($this->request->isPost()) {
         $now = new \DateTime();
         $viewRenderer = $this->serviceLocator->get('view_manager')->getRenderer();
         $document = $this->invoiceService->getInvoiceById($this->params('id'));
         $layoutViewModel = $this->layout();
         $layoutViewModel->setTemplate('layout/layout');
         $viewModel = new ViewModel(array('document' => $invoice, 'rows' => $document->getRows()));
         $viewModel->setTemplate('application/document/pdf/invoice');
         $rendered = $viewRenderer->render($viewModel);
         if ($rendered) {
             $output_document_dir = "data/files/Document/";
             $fileNameDocument = $invoice->getId() . '_' . $invoice->getPrefix() . $invoice->getDocumentNumber() . '.pdf';
             $dompdf = new \DOMPDF();
             $dompdf->load_html($rendered);
             $dompdf->render();
             $output = $dompdf->output();
             file_put_contents($output_document_dir . $fileNameDocument, $output);
             $size = filesize($output_document_dir . $fileNameDocument);
             $type = filetype($output_document_dir . $fileNameDocument);
             $fileData = array('file' => $output_document_dir . $fileNameDocument, 'fileName' => $fileNameDocument);
             $translator = $this->serviceLocator->get('MvcTranslator');
             try {
                 $this->invoiceService->sendInvoiceEmail($invoice, $this->request->getPost(), $fileData);
                 $this->flashMessenger()->addMessage($translator->translate('Controller.SendInvoice.InvoiceSended'));
             } catch (\Exception $e) {
                 $this->flashMessenger()->addMessage($translator->translate('Controller.SendInvoice.Exception:') . $e->getMessage());
             }
         }
     }
     return $this->redirect()->toRoute('application/default', array('controller' => 'document', 'action' => 'view-invoice', 'id' => $invoice->getId()));
 }