Add checking for battery conflicts in existing job orders. #197
This commit is contained in:
parent
c720be1c2d
commit
b0386c4758
1 changed files with 72 additions and 29 deletions
|
|
@ -277,16 +277,13 @@ class ReportController extends BaseController
|
||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted('report.battery.conflict', null, 'No access.');
|
$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
|
// get job order query builder
|
||||||
$job_qb = $this->getDoctrine()
|
$job_qb = $this->getDoctrine()
|
||||||
->getRepository(JobOrder::class)
|
->getRepository(JobOrder::class)
|
||||||
->createQueryBuilder('jo');
|
->createQueryBuilder('jo');
|
||||||
|
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
// get dates
|
// get dates
|
||||||
$raw_date_start = $req->request->get('date_start');
|
$raw_date_start = $req->request->get('date_start');
|
||||||
$raw_date_end = $req->request->get('date_end');
|
$raw_date_end = $req->request->get('date_end');
|
||||||
|
|
@ -294,9 +291,6 @@ class ReportController extends BaseController
|
||||||
$date_start = DateTime::createFromFormat('m/d/Y', $raw_date_start);
|
$date_start = DateTime::createFromFormat('m/d/Y', $raw_date_start);
|
||||||
$date_end = DateTime::createFromFormat('m/d/Y', $raw_date_end);
|
$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')
|
$jo_query = $job_qb->where('jo.date_create >= :start')
|
||||||
->andWhere('jo.date_create <= :end')
|
->andWhere('jo.date_create <= :end')
|
||||||
|
|
@ -306,37 +300,86 @@ class ReportController extends BaseController
|
||||||
->setParameter('status', JOStatus::CANCELLED)
|
->setParameter('status', JOStatus::CANCELLED)
|
||||||
->getQuery();
|
->getQuery();
|
||||||
|
|
||||||
|
|
||||||
// run queries
|
// run queries
|
||||||
$batts = $batt_query->getResult();
|
|
||||||
$jos = $jo_query->getResult();
|
$jos = $jo_query->getResult();
|
||||||
|
|
||||||
$battcomp = [];
|
$batteries = $em->getRepository(Battery::class)->findAll();
|
||||||
// get battery results and store in array
|
|
||||||
foreach ($batts as $batt)
|
|
||||||
{
|
|
||||||
$batt_id = $batt->getID();
|
|
||||||
|
|
||||||
$comp_vehicles = $batt->getVehicles();
|
// create compatibility matrix for battery and vehicle
|
||||||
// go through compatible vehicle list and add to array
|
$comp_matrix = [];
|
||||||
foreach ($comp_vehicles as $vehicle)
|
foreach ($batteries as $batt)
|
||||||
{
|
{
|
||||||
$battcomp[$batt_id] = [
|
$vehicles = $batt->getVehicles();
|
||||||
'manufacturer' => $vehicle->getManufacturer(),
|
foreach ($vehicles as $vehicle)
|
||||||
'make' => $vehicle->getMake(),
|
{
|
||||||
|
$comp_matrix[$batt->getID()][$vehicle->getID()] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// go through the job orders to find the conflicts
|
||||||
|
$results = [];
|
||||||
|
foreach ($jos as $jo)
|
||||||
|
{
|
||||||
|
$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(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// get results
|
/*
|
||||||
foreach ($jos as $jo)
|
$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)
|
||||||
{
|
{
|
||||||
$vehicle = $jo->getCustomerVehicle()->getVehicle();
|
fputcsv($csv_handle, $row);
|
||||||
$vmanufacturer = $vehicle->getManufacturer();
|
|
||||||
$vmake = $vehicle->getMake();
|
|
||||||
|
|
||||||
$invoice_items = $jo->getInvoice()->getItems();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue