From 88a45034f927551ae1165b5eff9fd27c2ac5a5e3 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 16 Apr 2020 09:08:35 +0000 Subject: [PATCH] Add jo events report. #379 --- src/Controller/ReportController.php | 94 ++++++++++++++++++++++++++++- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/src/Controller/ReportController.php b/src/Controller/ReportController.php index a7e0c62c..94cede5f 100644 --- a/src/Controller/ReportController.php +++ b/src/Controller/ReportController.php @@ -795,6 +795,47 @@ class ReportController extends Controller return $this->render('report/jo-events/form.html.twig'); } + public function jobOrderEventsSubmit(Request $req, EntityManagerInterface $em) + { + $hub_events = $this->getJobOrderEvents($req, JOEventType::HUB_ASSIGN); + $arrive_events = $this->getJobOrderEvents($req, JOEventType::RIDER_ARRIVE); + $accept_events = $this->getJobOrderEvents($req, JOEventType::RIDER_ACCEPT); + + $blanks = []; + array_push($blanks, array("\t","\t","\t","\t")); + + $data = array_merge($hub_events, $blanks, $arrive_events, $blanks, $accept_events); + + $resp = new StreamedResponse(); + $resp->setCallback(function() use ($data) { + // csv output + $csv_handle = fopen('php://output', 'w+'); + fputcsv($csv_handle, [ + 'Job Order ID', + 'Date and Time Created for JO', + 'Date Created for JO', + 'Time Created for JO', + 'Service Type', + 'Type ID', + + ]); + // write hub events + foreach ($data as $row) + { + fputcsv($csv_handle, $row); + } + + fclose($csv_handle); + }); + + $filename = 'job_order_events_report' . '.csv'; + + $resp->setStatusCode(200); + $resp->headers->set('Content-Type', 'text/csv; charset=utf-8'); + $resp->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"'); + + return $resp; + } protected function processPopappFile(UploadedFile $csv_file, EntityManagerInterface $em) { @@ -1254,7 +1295,6 @@ class ReportController extends Controller ->setParameter('end', $date_end->format('Y-m-d') . ' 23:59:59') ->getQuery(); - // run query $jos = $query->getResult(); @@ -1306,7 +1346,6 @@ class ReportController extends Controller } } - // get invoice date create and item sku if any $datetime_create_invoice = ''; $sku = ''; @@ -1375,4 +1414,55 @@ class ReportController extends Controller return $result; } + protected function getJobOrderEvents(Request $req, $event_type) + { + // get query builder + $qb = $this->getDoctrine() + ->getRepository(JOEvent::class) + ->createQueryBuilder('r'); + + // get dates + $raw_date_start = $req->request->get('date_start'); + $raw_date_end = $req->request->get('date_end'); + + $date_start = DateTime::createFromFormat('m/d/Y', $raw_date_start); + $date_end = DateTime::createFromFormat('m/d/Y', $raw_date_end); + + // build query + $query = $qb->where('r.date_create >= :start') + ->andWhere('r.date_create <= :end') + ->andWhere('r.type_id = :event_type') + ->setParameter('start', $date_start->format('Y-m-d') . ' 00:00:00') + ->setParameter('end', $date_end->format('Y-m-d') . ' 23:59:59') + ->setParameter('event_type', $event_type) + ->getQuery(); + + // run query + $jo_events = $query->getResult(); + + $result = []; + foreach ($jo_events as $jo_event) + { + $datetime_jo_create = ''; + $date_jo_create = ''; + $time_jo_create = ''; + + $jo = $jo_event->getJobOrder(); + $jo_date_create = $jo->getDateCreate(); + $datetime_jo_create = $jo_date_create->format('m-d-Y H:i'); + $date_jo_create = $jo_date_create->format('m-d-Y'); + $time_jo_create = $jo_date_create->format('H:i'); + + $result[] = [ + $jo->getID(), + $datetime_jo_create, + $date_jo_create, + $time_jo_create, + $jo->getServiceType(), + $jo_event->getTypeID(), + ]; + } + + return $result; + } }