From 243d238ad7c495d33435c7dea26313597cf28ca8 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 11 Dec 2019 08:43:15 +0000 Subject: [PATCH] Finish command to compute expiration date for existing warranties. #280 --- .../ComputeWarrantyExpiryDateCommand.php | 77 ++++++++++++------- src/Entity/BatteryModel.php | 1 + src/Entity/BatterySize.php | 1 + 3 files changed, 53 insertions(+), 26 deletions(-) diff --git a/src/Command/ComputeWarrantyExpiryDateCommand.php b/src/Command/ComputeWarrantyExpiryDateCommand.php index 4d547d3d..c2af16b2 100644 --- a/src/Command/ComputeWarrantyExpiryDateCommand.php +++ b/src/Command/ComputeWarrantyExpiryDateCommand.php @@ -10,6 +10,7 @@ use Symfony\Component\Console\Output\OutputInterface; use Doctrine\Common\Persistence\ObjectManager; use App\Entity\Warranty; +use App\Entity\Battery; use App\Ramcar\WarrantyClass; @@ -31,7 +32,7 @@ class ComputeWarrantyExpiryDateCommand extends Command { $this->setName('warranty:computeexpirydate') ->setDescription('Compute expiry date for existing warranties.') - ->setHelp('Comput expiry date for existing warranties.'); + ->setHelp('Compute expiry date for existing warranties.'); } protected function execute(InputInterface $input, OutputInterface $output) @@ -50,9 +51,18 @@ class ComputeWarrantyExpiryDateCommand extends Command if ($warr_period != null) { $expiry_date = $this->computeDateExpire($date_purchase, $warr_period); - - // save expiry date } + else + { + $expiry_date = $date_purchase; + } + + // save expiry date + $warr->setDateExpire($expiry_date); + + $this->em->persist($warr); + $this->em->flush(); + $this->em->clear(); } } @@ -60,38 +70,53 @@ class ComputeWarrantyExpiryDateCommand extends Command protected function getWarrantyPeriod($warr) { $batt_model = $warr->getBatteryModel(); + $batt_size = $warr->getBatterySize(); $warranty_class = $warr->getWarrantyClass(); - $warr_period = ''; + $warr_period = 0; - if (($batt_model == null) || - (empty($warranty_class))) - + if ($batt_model == null) { + error_log('Battery model is null for warranty id ' . $warr->getID()); + return null; + } + if ($batt_size == null) + { + error_log('Battery size is null for warranty id ' . $warr->getID()); + return null; + } + if (empty($warranty_class)) + { + error_log('Warranty class is empty for warranty id ' . $warr->getID()); + return null; + } + + // find batttery using model and size + $batteries = $this->em->getRepository(Battery::class)->findBy(['model' => $batt_model, 'size' => $batt_size]); + + if (empty($batteries)) + { + error_log('Battery not found for warranty id ' . $warr->getID()); return null; } - if ($batt_model != null) + foreach($batteries as $battery) { - $batteries = $batt_model->getBatteries(); - foreach($batteries as $battery) + // check warranty class to get warranty period + if ($warranty_class == WarrantyClass::WTY_PRIVATE) + { + $warr_period = $battery->getWarrantyPrivate(); + error_log('Warranty Period for Private: ' . $warr_period); + } + if ($warranty_class == WarrantyClass::WTY_COMMERCIAL) { - // check warranty class to get warranty period - if ($warranty_class == WarrantyClass::WTY_PRIVATE) - { - $warr_period = $battery->getWarrantyPrivate(); - error_log('Warranty Period for Private: ' . $warr_period); - } - if ($warranty_class == WarrantyClass::WTY_COMMERCIAL) - { - $warr_period = $battery->getWarrantyCommercial(); - error_log('Warranty Period for Commercial: ' . $warr_period); - } - if ($warranty_class == WarrantyClass::WTY_TNV) - { - $warr_period = $battery->getWarrantyTnv(); - error_log('Warranty Period for TNV: ' . $warr_period); - } + $warr_period = $battery->getWarrantyCommercial(); + error_log('Warranty Period for Commercial: ' . $warr_period); + } + if ($warranty_class == WarrantyClass::WTY_TNV) + { + $warr_period = $battery->getWarrantyTnv(); + error_log('Warranty Period for TNV: ' . $warr_period); } } diff --git a/src/Entity/BatteryModel.php b/src/Entity/BatteryModel.php index 86f3b666..b516e8a6 100644 --- a/src/Entity/BatteryModel.php +++ b/src/Entity/BatteryModel.php @@ -68,6 +68,7 @@ class BatteryModel public function getBatteries() { + // TODO: fix this to be a proper getter function // has to return set of strings because symfony is trying to move away from role objects $str_batteries = []; foreach ($this->batteries as $battery) diff --git a/src/Entity/BatterySize.php b/src/Entity/BatterySize.php index 021e115c..9fff4d44 100644 --- a/src/Entity/BatterySize.php +++ b/src/Entity/BatterySize.php @@ -89,6 +89,7 @@ class BatterySize public function getBatteries() { + // TODO: fix this to be a proper getter function // has to return set of strings because symfony is trying to move away from role objects $str_batteries = []; foreach ($this->batteries as $battery)