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.');
|
||||
|
||||
// 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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue