Пример #1
0
 public function exportAction(Request $request, Application $app)
 {
     $exportOptions = $app['exportOptions']['winners'];
     $exportOptionsKeys = array_keys($exportOptions['fields']);
     $exportOptionsValues = array_values($exportOptions['fields']);
     $response = new StreamedResponse();
     $response->setCallback(function () use($app, $exportOptionsKeys, $exportOptionsValues) {
         $handle = fopen('php://output', 'w+');
         fputcsv($handle, $exportOptionsKeys, ';');
         $winners = $app['orm.em']->getRepository('Application\\Entity\\WinnerEntity')->findAll();
         $twig = clone $app['twig'];
         $twig->setLoader(new \Twig_Loader_String());
         foreach ($winners as $winner) {
             $finalExportOptionsValues = array();
             foreach ($exportOptionsValues as $singleValue) {
                 $finalExportOptionsValues[] = $twig->render($singleValue, array('winner' => $winner));
             }
             fputcsv($handle, $finalExportOptionsValues, ';');
         }
         fclose($handle);
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Disposition', 'attachment; filename="winners.csv"');
     return $response;
 }
 /**
  * Genera el excel con la planilla de servicios
  * @param type $fechaDesde
  * @param type $fechaHasta
  * @return StreamedResponse
  */
 public function generateExcel($fechaDesde, $fechaHasta)
 {
     $response = new StreamedResponse();
     $response->setCallback(function () use($fechaDesde, $fechaHasta) {
         $fileType = 'Excel2007';
         $fileName = 'template/informeEpidemiologico.xlsx';
         //$objPHPExcel = new PHPExcel();
         $objReader = PHPExcel_IOFactory::createReader($fileType);
         $objPHPExcel = $objReader->load($fileName);
         $objPHPExcel->getProperties()->setCreator("MAB")->setLastModifiedBy("MAB")->setTitle("Informe epidemiológico")->setSubject("Reporte epidemiológico")->setDescription("Informe epidemiológico")->setKeywords("reporte servicio epidemiológico")->setCategory("Reporte excel");
         //Categoria
         // ponemos los datos generales del informe
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('E3', $fechaDesde)->setCellValue('J3', $fechaHasta);
         $filaServicio = 3;
         $repository = $this->getDoctrine()->getEntityManager()->getRepository('AppBundle:Servicio');
         $query = $repository->createQueryBuilder('s')->where('s.fecha >= :desde')->andwhere('s.fecha < :hasta')->setParameter('desde', $fechaDesde)->setParameter('hasta', $fechaHasta)->orderBy('s.fecha', 'ASC')->getQuery();
         $servicios = $query->getResult();
         foreach ($servicios as $servicio) {
             $this->rellenarServicio($objPHPExcel, $servicio, $filaServicio);
         }
         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
         if (ob_get_contents()) {
             ob_end_clean();
         }
         $objWriter->save('php://output');
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'application/vnd.ms-excel');
     $response->headers->set('Content-Disposition', 'attachment; filename="informeEpidemiologico.xlsx"');
     return $response;
 }
Пример #3
0
 /**
  * {@inheritdoc}
  */
 public function call(ActionEvent $event, string $format) : Response
 {
     $controller = $event->getController();
     $this->checkRole($controller);
     $request = $event->getRequest();
     $id = $request->get('id');
     if (is_numeric($id)) {
         if (!$controller->has('knp_snappy.pdf')) {
             throw new \Exception('Have you registered KnpSnappyBundle?');
         }
         $snappy = $controller->get('knp_snappy.pdf');
         $showAction = $controller->get('vardius_crud.action_show');
         $html = $showAction->call($event, 'html')->getContent();
         $response = new Response($snappy->getOutputFromHtml($html, ['margin-bottom' => 3, 'margin-top' => 3, 'margin-left' => 4, 'margin-right' => 14]), 200, array('Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="export.pdf"'));
     } else {
         $type = $request->get('type');
         if ($type === 'pdf') {
             if (!$controller->has('knp_snappy.pdf')) {
                 throw new \Exception('Have you registered KnpSnappyBundle?');
             }
             $snappy = $controller->get('knp_snappy.pdf');
             $listAction = $controller->get('vardius_crud.action_list');
             $html = $listAction->call($event, 'html')->getContent();
             $response = new Response($snappy->getOutputFromHtml($html, ['margin-bottom' => 3, 'margin-top' => 3, 'margin-left' => 4, 'margin-right' => 14]), 200, array('Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="export.pdf"'));
         } else {
             $source = $event->getDataProvider()->getSource();
             if (!$source instanceof EntityRepository) {
                 throw new \Exception('CSV export supports only ORM db driver');
             }
             $queryBuilder = $source->createQueryBuilder('vardius_csv_export');
             $crudEvent = new CrudEvent($source, $controller, $queryBuilder);
             $dispatcher = $controller->get('event_dispatcher');
             $queryBuilder = $dispatcher->dispatch(CrudEvents::CRUD_EXPORT, $crudEvent)->getData();
             $response = new StreamedResponse();
             $response->setCallback(function () use($queryBuilder, $controller) {
                 $handle = fopen('php://output', 'w+');
                 $headers = $controller->getHeaders();
                 if (!empty($headers)) {
                     fputcsv($handle, $headers, ';');
                 }
                 $entityManager = $controller->get('doctrine.orm.entity_manager');
                 $results = $queryBuilder->getQuery()->iterate();
                 while (false !== ($row = $results->next())) {
                     $element = $controller->getRow($row[0]);
                     $entityManager->detach($row[0]);
                     if (count($element)) {
                         fputcsv($handle, $element);
                     }
                 }
                 fclose($handle);
             });
             $response->setStatusCode(200);
             $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
             $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
         }
     }
     return $response;
 }
Пример #4
0
 public function downloadMatchAction()
 {
     $object = $this->admin->getSubject();
     $matchId = $object->getId();
     if (!$object) {
         throw new NotFoundHttpException(sprintf('Unable to find the object with id : %s', $matchId));
     }
     // On récupère le service qui va envoyer le match
     $response = new StreamedResponse(function () use($matchId) {
         //$downloadMatching = $this->container->get('public_user.exportCsv')->fromMatching($matchId);
         $container = $this->container;
         $em = $container->get('doctrine')->getManager();
         $conn = $em->getConnection();
         // On crée la limite du nombre de donnée recuperés par requetes
         $lim = 10000;
         // On recupere les 10000 premiers resultat
         $query = "SELECT SQL_CALC_FOUND_ROWS md5 FROM matching_details WHERE id_matching = :id LIMIT :lim";
         $sth = $conn->prepare($query);
         $sth->bindValue(':id', $matchId);
         $sth->bindValue(':lim', (int) $lim, \PDO::PARAM_INT);
         $sth->execute();
         $results = $sth->fetchAll();
         // On ouvre le fichier sur lequel on va ecrire
         $handle = fopen('php://output', 'r') or die("Couldn't get handle");
         // On ajout au fichier les données recuperé precedement
         foreach ($results as $row) {
             fputcsv($handle, $row);
         }
         // On recupere le nombre de ligne total
         $sth = $conn->prepare('SELECT FOUND_ROWS()');
         $sth->execute(array($matchId));
         $resultLine = $sth->fetchAll();
         // On recupere le nombre de ligne total
         $nb_line = intval($resultLine[0]["FOUND_ROWS()"]);
         // Si le nombrte de ligne max est superieurs aux nombres de lignes recuperé precedement
         if ($nb_line >= $lim) {
             // on retire du nombre de ligne le nombre d'elements recuperé precedement
             $lineDone = $lim;
             $offset = $lim;
             $this->getData($conn, $matchId, $handle, $nb_line, $lineDone, $lim, $offset);
         } else {
             fclose($handle);
         }
     });
     $response->setStatusCode(200);
     $response->headers->set('Pragma', 'public');
     $response->headers->set('Expires', '0');
     $response->headers->set('Content-Disposition', 'attachment; filename="Export_matching_' . $matchId . '.csv"');
     $response->headers->set('Cache-Control', 'must-revalidate; post-check=0; pre-check=0');
     $response->headers->set('Cache-Control', 'private', false);
     $response->headers->set('Content-Type', 'application/octet-stream');
     $response->headers->set('Content-Transfer-Encoding', 'binary');
     return $response;
 }
Пример #5
0
 protected function error($error = null, $code = 200)
 {
     $this->builder->createPartial('body', 'error')->getParamManager()->setParams(['error' => $error === null ? _i('We encountered an unexpected error.') : $error]);
     $this->response->setStatusCode($code);
     if ($this->response instanceof StreamedResponse) {
         $this->response->setCallback(function () {
             $this->builder->stream();
         });
     } else {
         $this->response->setContent($this->builder->build());
     }
     return $this->response;
 }
Пример #6
0
 /**
  * {@inheritdoc}
  */
 public function call(ActionEvent $event)
 {
     $controller = $event->getController();
     $this->checkRole($controller);
     $repository = $event->getDataProvider()->getSource();
     $request = $event->getRequest();
     $dispatcher = $controller->get('event_dispatcher');
     $snappy = $controller->get('knp_snappy.pdf');
     $responseHandler = $this->getResponseHandler($controller);
     $crudEvent = new CrudEvent($repository, $controller);
     $dispatcher->dispatch(CrudEvents::CRUD_EXPORT, $crudEvent);
     $this->id = $request->get('id');
     $options['template'] = !empty($this->options['template'] ?: (is_numeric($this->id) ? 'show' : 'list'));
     if (is_numeric($this->id)) {
         $dataProvider = $event->getDataProvider();
         $html = $responseHandler->getHtml($event->getView(), $this->getTemplate(), ['data' => $dataProvider->get($this->id), 'ui' => false]);
         $response = new Response($snappy->getOutputFromHtml($html, ['margin-bottom' => 3, 'margin-top' => 3, 'margin-left' => 4, 'margin-right' => 14]), 200, array('Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="export.pdf"'));
     } else {
         $listView = $event->getListView();
         $listDataEvent = new ListDataEvent($repository, $request);
         $type = $request->get('type');
         if ($type === 'pdf') {
             $html = $responseHandler->getHtml($event->getView(), $this->getTemplate(), ['list' => $listView->render($listDataEvent), 'title' => $listView->getTitle(), 'ui' => false]);
             $response = new Response($snappy->getOutputFromHtml($html, ['margin-bottom' => 3, 'margin-top' => 3, 'margin-left' => 4, 'margin-right' => 14]), 200, array('Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="export.pdf"'));
         } else {
             $response = new StreamedResponse();
             $listView->setPagination(false);
             $queryBuilder = $listView->getData($listDataEvent, true, true);
             $response->setCallback(function () use($queryBuilder, $controller) {
                 $handle = fopen('php://output', 'w+');
                 $headers = $controller->getHeaders();
                 if (!empty($headers)) {
                     fputcsv($handle, $headers, ';');
                 }
                 $entityManager = $controller->get('doctrine.orm.entity_manager');
                 $results = $queryBuilder->getQuery()->iterate();
                 while (false !== ($row = $results->next())) {
                     $element = $controller->getRow($row[0]);
                     $entityManager->detach($row[0]);
                     fputcsv($handle, $element);
                 }
                 fclose($handle);
             });
             $response->setStatusCode(200);
             $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
             $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
         }
     }
     return $response;
 }
Пример #7
0
 /**
  * Exporting a CSV file using an entity manager
  * The entity manager have to provide a getCsvExport function.
  *
  * @param string $service
  */
 public function exportCsvAction($service, $option)
 {
     $manager = $this->get($service);
     if (!is_callable(array($manager, 'getCsvExport'))) {
         throw new \Exception('The service used for CSV export have to provide an export function');
     }
     $response = new StreamedResponse();
     list($content, $filename) = empty($option) ? $manager->getCsvExport() : $manager->getCsvExport($option);
     $response->setCallback(function () use($content) {
         $handle = fopen('php://output', 'w+');
         fwrite($handle, "");
         // adds BOM utf8 fox Excel
         foreach ($content as $index => $row) {
             if ($index == 0) {
                 fputcsv($handle, array_keys($row), ';');
             }
             $csvRow = array();
             foreach ($row as $attribute) {
                 if ($attribute instanceof \Datetime) {
                     $csvRow[] = $attribute->format('Y-m-d');
                 } else {
                     if (is_object($attribute)) {
                         if (is_callable(array($attribute, '__toString'))) {
                             $csvRow[] = $attribute;
                         } else {
                             if (is_callable(array($attribute, 'getId'))) {
                                 $csvRow[] = $attribute->getId();
                             } else {
                                 $csvRow[] = '#error';
                             }
                         }
                     } else {
                         $csvRow[] = $attribute;
                     }
                 }
             }
             fputcsv($handle, $csvRow, ';');
         }
         fclose($handle);
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'application/force-download');
     //$response->headers->set('')
     $response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '.csv"');
     return $response;
 }
 public function userDataAction(Request $request)
 {
     if (false === $this->get('security.context')->isGranted('ROLE_ADMIN')) {
         throw new AccessDeniedException();
     }
     $userType = $request->query->get('usertype');
     if (!in_array($userType, array('pupils', 'mentors', 'all'))) {
         return null;
     }
     $status = $request->query->get('status');
     if (!in_array($status, array('enabled', 'disabled', 'all'))) {
         return null;
     }
     // Get user data
     $users = $this->retrieveUserData($userType, $status);
     // Output in a requested format
     // CSV
     if ($request->query->get('type') === 'csv') {
         if ($userType === 'all') {
             return new HttpException(400, "Only mentors' or pupils' export can be requested, but not both.");
         }
         $response = new StreamedResponse();
         $response->setCallback(function () use($userType, $users) {
             $this->outputCsvCallback($userType, $users);
         });
         $filename = $userType . date('-Ymd-Hi') . '.csv';
         $response->setStatusCode(200);
         $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
         $response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"');
         return $response;
     } else {
         if ($request->query->get('type') === 'email') {
             $formatUser = function ($user) {
                 return $user->getFirstName() . ' ' . $user->getLastName() . ' <' . $user->getEmail() . '>';
             };
             $respStrs = array_map($formatUser, $users);
             $response = new Response(implode(",\n", $respStrs));
             return $response;
         }
     }
     return null;
 }
Пример #9
0
 /**
  * @param Request $request
  * @return StreamedResponse
  *
  * @Route("/csv/do", name="cto_export_csvdo")
  */
 public function doCSVExportAction(Request $request)
 {
     $exportDTO = new ExportFilterDTO();
     $form = $this->createForm(ExportFilterDTOType::class, $exportDTO);
     $form->handleRequest($request);
     $response = new StreamedResponse();
     $carJobRepository = $this->getDoctrine()->getManager()->getRepository("CTOAppBundle:CarJob");
     $response->setCallback(function () use($carJobRepository, $exportDTO) {
         $handle = fopen('php://output', 'w+');
         fputcsv($handle, ['Date', 'Day of week', 'Category', 'Description', 'Client', 'Master', 'Salary'], ';');
         $result = $carJobRepository->getDataForExportToCSV($exportDTO);
         foreach ($result as $item) {
             fputcsv($handle, [$item['jdate']->format("d.m.Y"), $item['jdate']->format("l"), $item['catName'], $item['description'], $item['clientName'], $item['masterFName'] . ' ' . $item['masterLName'], $item['price']], ';');
         }
         fclose($handle);
     });
     $now = Carbon::now()->format("d.m.Y");
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Disposition', 'attachment; filename=' . "export_for_{$now}.csv");
     return $response;
 }
Пример #10
0
 /**
  * Returns a streamed response.
  */
 public function generate()
 {
     if (null == $this->name) {
         throw new \Exception("You must set a name to the file downloaded with setName() method before generate file.");
     }
     $filename = $this->name;
     $data = $this->data;
     $columns = $this->columns;
     $response = new StreamedResponse();
     $response->setCallback(function () use($columns, $data) {
         $handle = fopen('php://output', 'w+');
         // add csv header columns
         fputcsv($handle, $columns, ';');
         // add data in the csv
         foreach ($data as $row) {
             $values = array();
             foreach (array_values($row) as $value) {
                 $values[] = $this->toString($value);
             }
             fputcsv($handle, $values, ';');
         }
         fclose($handle);
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Type', 'application/force-download');
     $response->headers->set('Content-Disposition', 'attachment;filename="' . $filename . '.csv"');
     return $response;
 }
 /**
  * Genera el excel con las estatisticas de traslados
  * @param type $fechaDesde
  * @param type $fechaHasta
  * @return StreamedResponse
  */
 public function generateStatisticsGeneral($fechaDesde, $fechaHasta)
 {
     $response = new StreamedResponse();
     $response->setCallback(function () use($fechaDesde, $fechaHasta) {
         $fileType = 'Excel2007';
         $fileName = 'template/informeEstadisticoGeneral.xlsx';
         //$objPHPExcel = new PHPExcel();
         $objReader = PHPExcel_IOFactory::createReader($fileType);
         $objPHPExcel = $objReader->load($fileName);
         $objPHPExcel->getProperties()->setCreator("MAB")->setLastModifiedBy("MAB")->setTitle("Informe estadístico ")->setSubject("Reporte estadístico general")->setDescription("Informe estadistico general")->setKeywords("reporte servicio general")->setCategory("Reporte excel");
         //Categoria
         // ponemos los datos generales del informe
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('E3', $fechaDesde)->setCellValue('I3', $fechaHasta);
         $emConfig = $this->getDoctrine()->getEntityManager()->getConfiguration();
         $emConfig->addCustomDatetimeFunction('YEAR', 'DoctrineExtensions\\Query\\Mysql\\Year');
         $emConfig->addCustomDatetimeFunction('MONTH', 'DoctrineExtensions\\Query\\Mysql\\Month');
         $emConfig->addCustomDatetimeFunction('DAY', 'DoctrineExtensions\\Query\\Mysql\\Day');
         $this->rellenarEstadisticasGenerales($objPHPExcel, $fechaDesde, $fechaHasta);
         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
         if (ob_get_contents()) {
             ob_end_clean();
         }
         $objWriter->save('php://output');
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'application/vnd.ms-excel');
     $response->headers->set('Content-Disposition', 'attachment; filename="informeEstadisticoDespachos.xlsx"');
     return $response;
 }
Пример #12
0
 /**
  * @param int $idPool
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 protected function generateCsvFromVouchers($idPool)
 {
     $generatedVouchers = $this->getQueryContainer()->queryVouchersByIdVoucherPool($idPool)->find();
     $streamedResponse = new StreamedResponse();
     $streamedResponse->setCallback(function () use($generatedVouchers) {
         $csvHandle = fopen('php://output', 'w+');
         fputcsv($csvHandle, ['Voucher Code']);
         foreach ($generatedVouchers as $voucher) {
             fputcsv($csvHandle, [$voucher->getCode()]);
         }
         fclose($csvHandle);
     });
     $streamedResponse->setStatusCode(Response::HTTP_OK);
     $streamedResponse->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $streamedResponse->headers->set('Content-Disposition', 'attachment; filename="' . self::CSV_FILENAME . '"');
     return $streamedResponse->send();
 }
 /**
  * @Route("/exportar_archivo", name="exportar_archivo_csv", options={"expose"=true})
  * @Method("GET")
  */
 public function exportar_archivoAction()
 {
     $response = new StreamedResponse();
     $response->setCallback(function () {
         $handle = fopen('php://output', 'w+');
         // Add the header of the CSV file
         fputcsv($handle, array('Name', 'Surname', 'Age', 'Sex'), ';');
         // Query data from database
         $em = $this->getDoctrine()->getManager();
         $results = $em->getRepository('BundlesInventarioBundle:InvProductoMov')->InventarioAldia('2016-01-01', '2016-04-30');
         // Add the data queried from database
         while ($row = $em->fetch($results)) {
             fputcsv($handle, array($row['name'], $row['surname'], $row['age'], $row['sex']), ';');
         }
         fclose($handle);
     });
     $response->setStatusCode(200);
     //        $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     //        $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
     return $response;
 }
 /**
  * @param type $id
  *
  * @return StreamedResponse
  * @Secure(roles="ROLE_NEWSLETTER_EDIT_CONTENT")
  */
 public function downloadSendedUsersAction($id)
 {
     $response = new StreamedResponse();
     $newsletterService = $this->get('maith_newsletter');
     $response->setCallback(function () use($newsletterService, $id) {
         $handle = fopen('php://output', 'w+');
         // Add a row with the names of the columns for the CSV file
         fputcsv($handle, array('Email', 'Hits'), ';');
         // Query data from database
         $results = $newsletterService->retrieveSendedUserSqlCursor($id);
         // Add the data queried from database
         while ($row = $results->fetch()) {
             fputcsv($handle, array($row['email'], $row['hits']), ';');
         }
         fclose($handle);
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
     return $response;
 }
 /**
  * Export csv with entities.
  *
  * @param Request $request
  *
  * @return Response
  */
 public function handleCsv(Request $request, array $criteria = [])
 {
     $this->entityList->build();
     $response = new StreamedResponse();
     $response->setCallback(function () use($request, $criteria) {
         $handle = fopen('php://output', 'w+');
         $fields = $this->entityList->getCsvFields();
         fputcsv($handle, $fields);
         $results = $this->entityList->createQueryBuilder($request, $criteria)->getQuery()->getResult();
         foreach ($results as $entity) {
             $row = array();
             foreach ($fields as $field) {
                 $getField = 'get' . ucfirst($field);
                 if (method_exists($entity, $getField)) {
                     $value = $entity->{$getField}();
                     $row[] = $this->formatDataForCsv($field, $value);
                     continue;
                 }
                 $isField = 'is' . ucfirst($field);
                 if (method_exists($entity, $isField)) {
                     $row[] = $entity->{$isField}() === true ? 'Yes' : 'No';
                 }
             }
             fputcsv($handle, $row);
         }
         fclose($handle);
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Disposition', sprintf('attachment; filename="%s"', $this->getExportName()));
     return $response;
 }
 /**
  * @Route("/export")
  */
 public function exportAction()
 {
     $response = new StreamedResponse();
     $response->setCallback(function () {
         $handle = fopen('php://output', 'w+');
         // Add the header of the CSV file
         fputcsv($handle, array('id', 'firstname', 'lastname', 'email', 'invited_by', 'invited_by_firstname', 'invited_by_lastname', 'invited_by_email'), ';');
         // Add the data queried from database
         foreach ($this->get("doctrine.orm.entity_manager")->getRepository("BdeReventBundle:Participant")->findBy(array('used' => true)) as $p) {
             $v = array();
             $v[] = $p->getId();
             $v[] = $p->getFirstName();
             $v[] = $p->getLastName();
             $v[] = $p->getEmail();
             if ($p->getInvitedBy() != null) {
                 $v[] = $p->getInvitedBy()->getId();
                 $v[] = $p->getInvitedBy()->getFirstName();
                 $v[] = $p->getInvitedBy()->getLastName();
                 $v[] = $p->getInvitedBy()->getEmail();
             } else {
                 $v[] = '';
                 $v[] = '';
                 $v[] = '';
                 $v[] = '';
             }
             fputcsv($handle, $v, ';');
         }
         fclose($handle);
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
     return $response;
 }
 /**
  * route to download CSV file
  * @param string $slug
  * @param mixed $group
  */
 public function downloadcsvAction($slug, $group = false)
 {
     //$param = $this->getConfiguration($slug, $group);
     $repository = $this->getDoctrine()->getRepository('FgmsSurveyBundle:Questionnaire');
     $sluggroup = $group != false ? $group : '';
     $query = $repository->createQueryBuilder('q')->where('q.slug = :slug AND q.sluggroup = :sluggroup')->setParameters(array('slug' => $slug, 'sluggroup' => $sluggroup))->orderBy('q.createDate', 'ASC')->getQuery();
     $response = new StreamedResponse();
     $response->setCallback(function () use($query) {
         $handle = fopen('php://output', 'w+');
         fputcsv($handle, array('Survey#', 'Date', 'Time', 'Group', 'Property', 'Room', 'Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15'), ',');
         foreach ($query->getResult() as $item) {
             fputcsv($handle, array($item->getId(), $item->getCreateDate()->format('F j, Y'), $item->getCreateDate()->format('h:i A'), $item->getSluggroup(), $item->getSlug(), $item->getRoomNumber(), $item->getQuestion1(), $item->getQuestion2(), $item->getQuestion3(), $item->getQuestion4(), $item->getQuestion5(), $item->getQuestion6(), $item->getQuestion7(), $item->getQuestion8(), $item->getQuestion9(), $item->getQuestion10(), $item->getQuestion11(), $item->getQuestion12(), $item->getQuestion13(), $item->getQuestion14(), $item->getQuestion15()));
         }
         fclose($handle);
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'application/force-download');
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Disposition', $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $slug . '-export.csv'));
     $response->prepare($this->request);
     return $response;
 }
Пример #18
0
 private function generateCsv($results, $fileName = 'export.csv')
 {
     $response = new StreamedResponse();
     $response->setCallback(function () use($results) {
         $handle = fopen('php://output', 'w+');
         $translator = $this->get('translator');
         // Add a row with the names of the columns for the CSV file
         fputcsv($handle, [$translator->trans('Staff'), $translator->trans('Date'), $translator->trans('Project'), $translator->trans('Day hours'), $translator->trans('Night hours'), 'Km', $translator->trans('Price per hour day'), $translator->trans('Price per hour night'), $translator->trans('Price per Km'), $translator->trans('Salary day'), $translator->trans('Salary night')], ';');
         $extension = new Extension($this->container);
         $totalDayHours = 0;
         $totalNightHours = 0;
         $totalAmountOfKm = 0;
         $totalDaySalary = 0;
         $totalNightSalary = 0;
         foreach ($results as $index => $row) {
             $dayHours = $extension->getHours($row['day_seconds'], 2);
             $nightHours = $extension->getHours($row['night_seconds'], 2);
             $amountOfKm = $row['amountOfKm'] ? $row['amountOfKm'] : 0;
             $daySalary = $dayHours * $row['salaryDay'];
             $nightSalary = $nightHours * $row['salaryNight'];
             $totalDayHours = $totalDayHours + $dayHours;
             $totalNightHours = $totalNightHours + $nightHours;
             $totalAmountOfKm = $totalAmountOfKm + $amountOfKm;
             $totalDaySalary = $totalDaySalary + $daySalary;
             $totalNightSalary = $totalNightSalary + $nightSalary;
             fputcsv($handle, array('zam ' . ($index + 1), $row['startTime']->format('d.m.Y'), $row['project_name'], number_format($dayHours, 2, ',', ','), number_format($nightHours, 2, ',', ','), $amountOfKm, number_format($row['salaryDay'], 2, ',', ','), number_format($row['salaryNight'], 2, ',', ','), number_format($this->getParameter('price_km'), 2, ',', ','), number_format($daySalary, 2, ',', ','), number_format($nightSalary, 2, ',', ',')), ';');
         }
         fputcsv($handle, array($translator->trans('Summary'), '', '', number_format($totalDayHours, 2, ',', ','), number_format($totalNightHours, 2, ',', ','), $totalAmountOfKm, '', '', '', number_format($totalDaySalary, 2, ',', ','), number_format($totalNightSalary, 2, ',', ',')), ';');
         fclose($handle);
     });
     $response->setStatusCode(200);
     $response->headers->set('Content-Type', 'text/csv; charset=utf-8');
     $response->headers->set('Content-Disposition', 'attachment; filename="' . $fileName . '"');
     return $response;
 }