diff --git a/src/Command/TestJobOrderManagerCommand.php b/src/Command/TestJobOrderManagerCommand.php new file mode 100644 index 00000000..4beeea46 --- /dev/null +++ b/src/Command/TestJobOrderManagerCommand.php @@ -0,0 +1,40 @@ +setName('test:fulfilljoborder') + ->setDescription('Test fulfill job order service.') + ->setHelp('Test the fulfill job order service.') + ->addArgument('job_order_id', InputArgument::REQUIRED, 'Job Order ID'); + } + + public function __construct(JobOrderManager $jo_manager) + { + $this->jo_manager = $jo_manager; + + parent::__construct(); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $jo_id = $input->getArgument('job_order_id'); + + $result = $this->jo_manager->fulfillJobOrder($jo_id); + + if ($result) + echo "Job Order successfully updated" . "\n"; + else + echo "Job Order not updated" . "\n"; + } +} diff --git a/src/Command/UpdateCustomerVehicleBatteryCommand.php b/src/Command/UpdateCustomerVehicleBatteryCommand.php new file mode 100644 index 00000000..f7e09e30 --- /dev/null +++ b/src/Command/UpdateCustomerVehicleBatteryCommand.php @@ -0,0 +1,67 @@ +em = $om; + $this->custvehicle_hash = []; + + parent::__construct(); + } + + protected function configure() + { + $this->setName('joborder:updatebattery') + ->setDescription('Update customer vehicle battery information.') + ->setHelp('Updates the customer vehicle battery based on the latest battery purchased. '); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + // get all job orders with fulfilled status + $jos = $this->em->getRepository(JobOrder::class)->findBy(['status' => JOStatus::FULFILLED], ['date_create' => 'DESC']); + foreach ($jos as $jo) + { + if ($jo->getCustomerVehicle() != null) + { + $custvehicle_id = $jo->getCustomerVehicle()->getID(); + // check if custvehicle is in hash. This would mean that the battery has already been set + if(!isset($this->custvehicle_hash[$custvehicle_id])) + { + // get battery purchased from job order + $items = $jo->getInvoice()->getItems(); + foreach($items as $item) + { + if ($item->getBattery() != null) + { + // set battery of vehicle to the latest battery purchased + $new_battery = $item->getBattery(); + $jo->getCustomerVehicle()->setCurrentBattery($new_battery); + + // add customer vehicle to hash + $this->custvehicle_hash[$custvehicle_id] = true; + } + } + $this->em->flush(); + } + } + } + } +} diff --git a/src/Service/JobOrderManager.php b/src/Service/JobOrderManager.php new file mode 100644 index 00000000..94d923a3 --- /dev/null +++ b/src/Service/JobOrderManager.php @@ -0,0 +1,53 @@ +em = $em; + } + + public function fulfillJobOrder($jo_id) + { + $results = $this->em->getRepository(JobOrder::class)->findby(array('id' => $jo_id, 'service_type' => ServiceType::BATTERY_REPLACEMENT_NEW)); + if (isset($results[0])) + { + $jo = $results[0]; + $jo->fulfill(); + + $cust_vehicle = $jo->getCustomerVehicle(); + $invoice = $jo->getInvoice(); + $this->updateCustomerVehicleBattery($cust_vehicle, $invoice); + + return true; + + } + + return false; + } + + protected function updateCustomerVehicleBattery($cust_vehicle, $invoice) + { + if (($cust_vehicle != null) && ($invoice != null)) + { + $items = $invoice->getItems(); + foreach ($items as $item) + { + $new_battery = $item->getBattery(); + $cust_vehicle->setCurrentBattery($new_battery); + } + + $this->em->flush(); + } + } +}