Add checking for battery conflicts in existing job orders. #197

This commit is contained in:
Korina Cordero 2019-04-02 10:22:17 +00:00
parent c720be1c2d
commit b0386c4758

View file

@ -277,16 +277,13 @@ class ReportController extends BaseController
{
$this->denyAccessUnlessGranted('report.battery.conflict', null, 'No access.');
// get battery query builder
$batt_qb = $this->getDoctrine()
->getRepository(Battery::class)
->createQueryBuilder('batt');
// get job order query builder
$job_qb = $this->getDoctrine()
->getRepository(JobOrder::class)
->createQueryBuilder('jo');
$em = $this->getDoctrine()->getManager();
// get dates
$raw_date_start = $req->request->get('date_start');
$raw_date_end = $req->request->get('date_end');
@ -294,10 +291,7 @@ class ReportController extends BaseController
$date_start = DateTime::createFromFormat('m/d/Y', $raw_date_start);
$date_end = DateTime::createFromFormat('m/d/Y', $raw_date_end);
// build query for battery
$batt_query = $batt_qb->getQuery();
// build query for job order
// build query for job order
$jo_query = $job_qb->where('jo.date_create >= :start')
->andWhere('jo.date_create <= :end')
->andWhere('jo.status != :status')
@ -305,38 +299,87 @@ class ReportController extends BaseController
->setParameter('end', $date_end->format('Y-m-d') . ' 23:59:59')
->setParameter('status', JOStatus::CANCELLED)
->getQuery();
// run queries
$batts = $batt_query->getResult();
$jos = $jo_query->getResult();
$battcomp = [];
// get battery results and store in array
foreach ($batts as $batt)
{
$batt_id = $batt->getID();
$batteries = $em->getRepository(Battery::class)->findAll();
$comp_vehicles = $batt->getVehicles();
// go through compatible vehicle list and add to array
foreach ($comp_vehicles as $vehicle)
// create compatibility matrix for battery and vehicle
$comp_matrix = [];
foreach ($batteries as $batt)
{
$vehicles = $batt->getVehicles();
foreach ($vehicles as $vehicle)
{
$battcomp[$batt_id] = [
'manufacturer' => $vehicle->getManufacturer(),
'make' => $vehicle->getMake(),
];
$comp_matrix[$batt->getID()][$vehicle->getID()] = true;
}
}
// get results
// go through the job orders to find the conflicts
$results = [];
foreach ($jos as $jo)
{
$vehicle = $jo->getCustomerVehicle()->getVehicle();
$vmanufacturer = $vehicle->getManufacturer();
$vmake = $vehicle->getMake();
$invoice_items = $jo->getInvoice()->getItems();
$invoice_items = $jo->getInvoice()->getItems();
foreach ($invoice_items as $item)
{
if ($item->getBattery() != null)
{
$batt_id = $item->getBattery()->getID();
$vehicle_id = $jo->getCustomerVehicle()->getVehicle()->getID();
if (isset($comp_matrix[$batt_id][$vehicle_id]))
// if (!isset($comp_matrix[$batt_id][$vehicle_id]) && !$comp_matrix[$batt_id][$vehicle_id])
{
$results[] = [
'jo_id' => $jo->getID(),
'jo_date_create' => $jo->getDateCreate(),
'cus_vehicle_manufacturer' => $jo->getCustomerVehicle()->getVehicle()->getManufacturer()->getName(),
'cus_vehicle_make' => $jo->getCustomerVehicle()->getVehicle()->getMake(),
'cus_vehicle_model' => $jo->getCustomerVehicle()->getModelYear(),
'battery_model_ordered' => $item->getBattery()->getModel()->getName(),
'battery_size_ordered' => $item->getBattery()->getSize()->getName(),
'compatible_batt' => $jo->getCustomerVehicle()->getVehicle()->getBatteries(),
];
}
}
}
}
/*
$resp = new StreamedResponse();
$resp->setCallback(function() use ($results) {
// csv output
$csv_handle = fopen('php://output', 'w+');
fputcsv($csv_handle, [
'Order #',
'Order Date and Time'
//'Manufacturer',
//'Make',
//'Year',
//'Battery Model',
//'Battery Size',
//'Compatible Batteries'
]);
foreach ($results as $row)
{
fputcsv($csv_handle, $row);
}
fclose($csv_handle);
});
$filename = 'battery_conflict_' . $date_start->format('Ymd') . '_' . $date_end->format('Ymd') . '.csv';
$resp->setStatusCode(200);
$resp->headers->set('Content-Type', 'text/csv; charset=utf-8');
$resp->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"');
return $resp;
*/
return $this->json([
'result' => $results,
]);
}
}