Add jo events report. #379

This commit is contained in:
Korina Cordero 2020-04-16 09:08:35 +00:00
parent 3caf23b57d
commit 88a45034f9

View file

@ -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;
}
}