From c478a4d0bfe21df51f559615a08ff703a433268e Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 2 Feb 2023 02:50:22 +0000 Subject: [PATCH 01/11] Add flag_active to Battery entity. Add flag_active to forms. #733 --- src/Controller/BatteryController.php | 10 +++++++--- src/Entity/Battery.php | 19 +++++++++++++++++++ templates/battery/form.html.twig | 14 ++++++++++++++ templates/battery/list.html.twig | 15 +++++++++++++++ 4 files changed, 55 insertions(+), 3 deletions(-) diff --git a/src/Controller/BatteryController.php b/src/Controller/BatteryController.php index e392dd6b..b63e52e9 100644 --- a/src/Controller/BatteryController.php +++ b/src/Controller/BatteryController.php @@ -117,6 +117,7 @@ class BatteryController extends Controller $row['height'] = $orow[0]->getHeight(); $row['total_height'] = $orow[0]->getTotalHeight(); $row['image_file'] = $orow[0]->getImageFile(); + $row['flag_active'] = $orow[0]->isActive(); // add row metadata $row['meta'] = [ @@ -182,7 +183,8 @@ class BatteryController extends Controller ->setHeight($req->request->get('height')) ->setTotalHeight($req->request->get('total_height')) ->setSellingPrice($req->request->get('sell_price')) - ->setImageFile($req->request->get('image_file')); + ->setImageFile($req->request->get('image_file')) + ->setActive($req->request->get('flag_active', false)); // initialize error list $error_array = []; @@ -308,6 +310,7 @@ class BatteryController extends Controller ->setTotalHeight($req->request->get('total_height')) ->setSellingPrice($req->request->get('sell_price')) ->setImageFile($req->request->get('image_file')) + ->setActive($req->request->get('flag_active', false)) ->clearVehicles(); // initialize error list @@ -424,7 +427,7 @@ class BatteryController extends Controller $bmodel_id = $req->query->get('model_id'); $bsize_id = $req->query->get('size_id'); - // find the battery using model and size + // find the battery using model and size and battery must be active $em = $this->getDoctrine()->getManager(); $query = $em->createQuery('SELECT b FROM App\Entity\Battery b JOIN b.model bm @@ -432,7 +435,8 @@ class BatteryController extends Controller JOIN b.manufacturer bmfg WHERE bm.id = :bm_id AND bs.id = :bs_id - AND bmfg.id = :bmfg_id') + AND bmfg.id = :bmfg_id + AND b.flag_active = true') ->setParameter('bmfg_id', $bmfg_id) ->setParameter('bm_id', $bmodel_id) ->setParameter('bs_id', $bsize_id); diff --git a/src/Entity/Battery.php b/src/Entity/Battery.php index 8adf4f65..89104bcf 100644 --- a/src/Entity/Battery.php +++ b/src/Entity/Battery.php @@ -147,6 +147,12 @@ class Battery */ protected $image_file; + // flag if battery is active + /** + * @ORM\Column(type="boolean", options={"default": true}) + */ + protected $flag_active; + public function __construct() { $this->vehicles = new ArrayCollection(); @@ -159,6 +165,8 @@ class Battery $this->total_height = 0; $this->date_create = new DateTime(); + + $this->flag_active = true; } public function getID() @@ -382,4 +390,15 @@ class Battery { return $this->image_file; } + + public function isActive() + { + return $this->flag_active; + } + + public function setActive($flag_active = true) + { + $this->flag_active = $flag_active; + return $this; + } } diff --git a/templates/battery/form.html.twig b/templates/battery/form.html.twig index 53adb693..4ac05437 100644 --- a/templates/battery/form.html.twig +++ b/templates/battery/form.html.twig @@ -101,6 +101,20 @@
+
+
+ + + + +
+
+
+
-
- - -
- - - - - - - - - - - - - {% set avail_riders = obj.getHub.getAvailableRiders|default([]) %} - - - +
+ + +
+
First NameLast NameContact No.Plate NumberStatus
- No riders available. -
+ + + + + + + + + + + + + {% if obj.getHub %} + {% for key, data in rider_data %} + + + + + + + + + {% endfor %} + {% endif %} + +
First NameLast NameContact No.Plate NumberStatus
+
+
{{ data['first_name'] }} {{ data['last_name'] }} {{ data['contact_number'] }} {{ data['plate_number'] }} {{ data['status'] }}
+
+
+
{% endif %} -- 2.43.5 From 0e7a955a91e364d943c37c838081b01b9b904a9a Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 6 Feb 2023 10:01:36 +0000 Subject: [PATCH 07/11] Improve checking for rider status. #735 --- .../JobOrderHandler/ResqJobOrderHandler.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 5fc399b6..3a0351f8 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -3522,16 +3522,17 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // offline - flag_available = 0 AND current_job_order is null $rider_status = ''; - if ($rider->isAvailable() == true) + if ($rider->isAvailable()) + { $rider_status = 'Online'; - - if (($rider->isAvailable() == false) && - ($rider->getCurrentJobOrder() == null)) - $rider_status = 'Offline'; - - if (($rider->isAvailable() == false) && - ($rider->getCurrentJobOrder() != null)) - $rider_status = 'In transit'; + } + else + { + if ($rider->getCurrentJobOrder() == null) + $rider_status = 'Offline'; + else + $rider_status = 'In transit'; + } $rider_data[$rider->getID()] = [ 'first_name' => $rider->getFirstName(), -- 2.43.5 From 765b3a99b906846bfac79c6fc1fb740bf77487aa Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 6 Feb 2023 10:39:30 +0000 Subject: [PATCH 08/11] Add getActiveBatteries function. #733 --- src/Controller/APIController.php | 35 +++++++++++------------ src/Controller/TAPI/BatteryController.php | 35 +++++++++++------------ src/Controller/VehicleController.php | 29 +++++++++---------- src/Entity/Vehicle.php | 10 +++++++ templates/vehicle/form.html.twig | 11 +------ 5 files changed, 56 insertions(+), 64 deletions(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 6d7849eb..05f50243 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -823,27 +823,24 @@ class APIController extends Controller implements LoggedController // batteries $batt_list = []; - $batts = $vehicle->getBatteries(); + // $batts = $vehicle->getBatteries(); + $batts = $vehicle->getActiveBatteries(); foreach ($batts as $batt) { - // check if battery is active - if ($batt->isActive()) - { - // TODO: Add warranty_tnv to battery information - $batt_list[] = [ - 'id' => $batt->getID(), - 'mfg_id' => $batt->getManufacturer()->getID(), - 'mfg_name' => $batt->getManufacturer()->getName(), - 'model_id' => $batt->getModel()->getID(), - 'model_name' => $batt->getModel()->getName(), - 'size_id' => $batt->getSize()->getID(), - 'size_name' => $batt->getSize()->getName(), - 'price' => $batt->getSellingPrice(), - 'wty_private' => $batt->getWarrantyPrivate(), - 'wty_commercial' => $batt->getWarrantyCommercial(), - 'image_url' => $this->getBatteryImageURL($req, $batt), - ]; - } + // TODO: Add warranty_tnv to battery information + $batt_list[] = [ + 'id' => $batt->getID(), + 'mfg_id' => $batt->getManufacturer()->getID(), + 'mfg_name' => $batt->getManufacturer()->getName(), + 'model_id' => $batt->getModel()->getID(), + 'model_name' => $batt->getModel()->getName(), + 'size_id' => $batt->getSize()->getID(), + 'size_name' => $batt->getSize()->getName(), + 'price' => $batt->getSellingPrice(), + 'wty_private' => $batt->getWarrantyPrivate(), + 'wty_commercial' => $batt->getWarrantyCommercial(), + 'image_url' => $this->getBatteryImageURL($req, $batt), + ]; } // data diff --git a/src/Controller/TAPI/BatteryController.php b/src/Controller/TAPI/BatteryController.php index 5a2fca50..0874b792 100644 --- a/src/Controller/TAPI/BatteryController.php +++ b/src/Controller/TAPI/BatteryController.php @@ -45,27 +45,24 @@ class BatteryController extends APIController // batteries $batt_list = []; - $batts = $vehicle->getBatteries(); + // $batts = $vehicle->getBatteries(); + $batts = $vehicle->getActiveBatteries(); foreach ($batts as $batt) { - // check if battery is active - if ($batt->isActive()) - { - // TODO: Add warranty_tnv to battery information - $batt_list[] = [ - 'id' => $batt->getID(), - 'mfg_id' => $batt->getManufacturer()->getID(), - 'mfg_name' => $batt->getManufacturer()->getName(), - 'model_id' => $batt->getModel()->getID(), - 'model_name' => $batt->getModel()->getName(), - 'size_id' => $batt->getSize()->getID(), - 'size_name' => $batt->getSize()->getName(), - 'price' => $batt->getSellingPrice(), - 'wty_private' => $batt->getWarrantyPrivate(), - 'wty_commercial' => $batt->getWarrantyCommercial(), - 'image_url' => $this->getBatteryImageURL($req, $batt), - ]; - } + // TODO: Add warranty_tnv to battery information + $batt_list[] = [ + 'id' => $batt->getID(), + 'mfg_id' => $batt->getManufacturer()->getID(), + 'mfg_name' => $batt->getManufacturer()->getName(), + 'model_id' => $batt->getModel()->getID(), + 'model_name' => $batt->getModel()->getName(), + 'size_id' => $batt->getSize()->getID(), + 'size_name' => $batt->getSize()->getName(), + 'price' => $batt->getSellingPrice(), + 'wty_private' => $batt->getWarrantyPrivate(), + 'wty_commercial' => $batt->getWarrantyCommercial(), + 'image_url' => $this->getBatteryImageURL($req, $batt), + ]; } // data diff --git a/src/Controller/VehicleController.php b/src/Controller/VehicleController.php index 39c386b0..afe45fc5 100644 --- a/src/Controller/VehicleController.php +++ b/src/Controller/VehicleController.php @@ -495,23 +495,20 @@ class VehicleController extends Controller $battery_index = []; // get compatible batteries from selected manufacturer - foreach ($vobj->getBatteries() as $battery) + // foreach ($vobj->getBatteries() as $battery) + foreach ($vobj->getActiveBatteries() as $battery) { - // need to check if battery is active - if ($battery->isActive()) - { - $batteries[] = [ - 'id' => $battery->getID(), - 'mfg_name' => $battery->getManufacturer()->getName(), - 'model_name' => $battery->getModel()->getName(), - 'size_name' => $battery->getSize()->getName(), - 'prod_code' => $battery->getProductCode(), - 'sell_price' => $battery->getSellingPrice(), - 'warr_private' => $battery->getWarrantyPrivate(), - 'warr_commercial' => $battery->getWarrantyCommercial(), - ]; - $battery_index[$battery->getID()] = 1; - } + $batteries[] = [ + 'id' => $battery->getID(), + 'mfg_name' => $battery->getManufacturer()->getName(), + 'model_name' => $battery->getModel()->getName(), + 'size_name' => $battery->getSize()->getName(), + 'prod_code' => $battery->getProductCode(), + 'sell_price' => $battery->getSellingPrice(), + 'warr_private' => $battery->getWarrantyPrivate(), + 'warr_commercial' => $battery->getWarrantyCommercial(), + ]; + $battery_index[$battery->getID()] = 1; } // add all other batteries, because they want options diff --git a/src/Entity/Vehicle.php b/src/Entity/Vehicle.php index 61fdcec9..97a35da4 100644 --- a/src/Entity/Vehicle.php +++ b/src/Entity/Vehicle.php @@ -4,6 +4,8 @@ namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Criteria; + use Symfony\Component\Validator\Constraints as Assert; /** @@ -177,4 +179,12 @@ class Vehicle { return $this->cust_vehicles; } + + public function getActiveBatteries() + { + $crit = Criteria::create(); + $crit->where(Criteria::expr()->eq('flag_active', true)); + + return $this->batteries->matching($crit); + } } diff --git a/templates/vehicle/form.html.twig b/templates/vehicle/form.html.twig index 764186bf..99ecbc0f 100644 --- a/templates/vehicle/form.html.twig +++ b/templates/vehicle/form.html.twig @@ -233,14 +233,13 @@ $(function() { var batteryIds = []; var battMfgModelSize = [] - {% for batt in obj.getBatteries %} + {% for batt in obj.getActiveBatteries %} trow = { id: "{{ batt.getID }}", manufacturer: "{{ batt.getManufacturer.getName|default('') }} ", model: "{{ batt.getModel.getName|default('') }}", size: "{{ batt.getSize.getName|default('') }}", sell_price: "{{ batt.getSellingPrice }}", - flag_active: "{{ batt.isActive }}" }; battRows.push(trow); @@ -342,14 +341,6 @@ $(function() { layout: { scroll: true }, - rows: { - beforeTemplate: function(row, data, index) { - var is_active = data.flag_active; - if (is_active == false) { - $(row).addClass('hide'); - } - } - }, columns: [ { field: 'id', -- 2.43.5 From ab2d6be08ea6de08bfe3dd2794a933d18a76ed05 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 6 Feb 2023 10:42:01 +0000 Subject: [PATCH 09/11] Add getActiveBatteries function. #733 --- src/Command/GenerateBatteryCompatibilityCommand.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Command/GenerateBatteryCompatibilityCommand.php b/src/Command/GenerateBatteryCompatibilityCommand.php index f2cc8940..8c219f67 100644 --- a/src/Command/GenerateBatteryCompatibilityCommand.php +++ b/src/Command/GenerateBatteryCompatibilityCommand.php @@ -43,14 +43,10 @@ class GenerateBatteryCompatibilityCommand extends Command $vehicles = $vm->getVehicles(); foreach ($vehicles as $vehicle) { - $batteries = $vehicle->getBatteries(); + $batteries = $vehicle->getActiveBatteries(); $comp_batt = []; foreach ($batteries as $battery) { - // check if battery is active - if (!($battery->isActive())) - continue; - // set to the first compatible battery found until a more expensive one is found $comp_batt['id'] = $battery->getID(); $comp_batt['name'] = $battery->getModel()->getName() . ' ' . -- 2.43.5 From 879c80f7beb8b59c58c9689c6af82471a0fb2a2e Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 7 Feb 2023 07:15:43 +0000 Subject: [PATCH 10/11] Add sending of SMS notification to hub when rejected. #736 --- .../JobOrderHandler/ResqJobOrderHandler.php | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 5f88b057..230d7332 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -1660,6 +1660,11 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // validated! save the entity $em->persist($obj); $em->flush(); + + // check if hub has valid mobile number + $phone_number = $this->country_code . $hub->getNotifNumber(); + if (!empty($phone_number)) + $this->sendSMSHubRejection($phone_number, $obj, $jo); } return $error_array; @@ -3909,4 +3914,38 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $this->rt->sendSMS($phone_number, $this->translator->trans('message.battery_brand_allcaps'), $message); } + protected function sendSMSHubRejection($phone_number, $rejection, $jo) + { + // sms content + // Job Order # - can get from jo + // Order Date and Time - get from jo + // Date and Time Rejected - get from rejection + // Enrollee Name - get from rejection ($hub->getName() . ' - ' . $hub->getBranch()) + // Reason of Rejection - get from rejection + // Remarks - get from rejection + // Type of Service - get from jo + + $hub = $rejection->getHub(); + $jo_id = $jo->getID(); + + // convert to string format the date fields (order date and time and date and time rejected) + $order_date_time = $jo->getDateCreate()->format('d M Y g:i A'); + $reject_date_time = $rejection->getDateCreate()->format('d M Y g:i A'); + + $enrollee = $hub->getName() . ' - ' . $hub->getBranch(); + $reason = JORejectionReason::getName($rejection->getReason()); + $remarks = $rejection->getRemarks(); + + $service_type = ServiceType::getName($jo->getServiceType()); + + $msg = 'Job Order #: ' . $jo_id . "\n" . 'Order Date and Time: ' . $order_date_time . "\n" . + 'Date and Time Rejected: ' . $reject_date_time . "\n" . 'Enrollee Name: ' . $enrollee . "\n" . + 'Reason of Rejection: ' . $reason . "\n" . 'Remarks: ' . $remarks . "\n" . + 'Type of Service: ' . $service_type; + + // error_log($msg); + + $this->rt->sendSMS($phone_number, $this->translator->trans('message.battery_brand_allcaps'), $msg); + } + } -- 2.43.5 From b87855e0a6d0d247c302dc3ad5f8a9f8173c42da Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 8 Feb 2023 06:28:02 +0000 Subject: [PATCH 11/11] Add flag_active to query for riders. #734 --- src/Service/JobOrderHandler/ResqJobOrderHandler.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 4b2a0ee5..8f411a3d 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -3299,13 +3299,13 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $hub_id = $hub->getID(); - // get in transit rider count aka flag_available is false AND current_jo_id is not null - $in_transit_query = $em->createQuery('SELECT count(r.id) FROM App\Entity\Rider r JOIN r.hub h WHERE h.id = :hub_id AND r.flag_available = false AND r.current_job_order IS NOT NULL'); + // get in transit rider count aka flag_available is false AND current_jo_id is not null AND rider is active + $in_transit_query = $em->createQuery('SELECT count(r.id) FROM App\Entity\Rider r JOIN r.hub h WHERE h.id = :hub_id AND r.flag_available = false AND r.current_job_order IS NOT NULL AND r.flag_active = true'); $in_transit_query->setParameters(['hub_id' => $hub_id]); $in_transit_count = $in_transit_query->getSingleScalarResult(); - // get available rider count aka flag_available is true AND current_jo_id is null - $available_query = $em->createQuery('SELECT count(r.id) FROM App\Entity\Rider r JOIN r.hub h WHERE h.id = :hub_id AND r.flag_available = true AND r.current_job_order IS NULL'); + // get available rider count aka flag_available is true AND current_jo_id is null AND rider is active + $available_query = $em->createQuery('SELECT count(r.id) FROM App\Entity\Rider r JOIN r.hub h WHERE h.id = :hub_id AND r.flag_available = true AND r.current_job_order IS NULL AND r.flag_active = true'); $available_query->setParameters(['hub_id' => $hub_id]); $available_count = $available_query->getSingleScalarResult(); -- 2.43.5