From 5b6b0902572a9f9bfadebd17240c03e9b7f1e74d Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 21 Nov 2022 07:01:55 +0000 Subject: [PATCH 1/3] Add mobile number from mobile session to warranty raffle report. #719 --- src/Controller/ReportController.php | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Controller/ReportController.php b/src/Controller/ReportController.php index c8ffe09e..d16d7eb1 100644 --- a/src/Controller/ReportController.php +++ b/src/Controller/ReportController.php @@ -1269,6 +1269,7 @@ class ReportController extends Controller 'First Name', 'Last Name', 'Contact Number', + 'Mobile Number', // number with mobile app 'Address', 'Email', 'Action Taken', @@ -2731,7 +2732,7 @@ class ReportController extends Controller wrl.date_create AS date_create, wrl.plate_number AS plate_number, wrl.first_name AS first_name, wrl.last_name AS last_name, wrl.contact_num AS contact_num, wrl.address AS address, wrl.email AS email, - wrl.action AS action + wrl.action AS action, wrl.api_user AS api_user_id FROM warranty_raffle_log wrl WHERE wrl.date_create >= :date_start AND wrl.date_create <= :date_end'; @@ -2770,6 +2771,26 @@ class ReportController extends Controller } } + // get the mobile number of the api user using api_user_id + $api_user_id = $row['api_user_id']; + $mobile_num = ''; + if ($api_user_id != null) + { + $api_sql = 'SELECT ms.phone_number AS mobile_number + FROM mobile_session ms + WHERE ms.id = :api_user_id'; + + $api_stmt = $db->prepare($api_sql); + $api_stmt->bindValue('api_user_id', $api_user_id); + + $api_result = $api_stmt->executeQuery(); + + while ($api_row = $api_result->fetchAssociative()) + { + $mobile_num = $api_row['mobile_number']; + } + } + $raffle_number = ''; $hub = ''; $battery_name = $row['model_name'] . ' / ' . $row['size_name']; @@ -2790,6 +2811,7 @@ class ReportController extends Controller 'first_name' => $row['first_name'], 'last_name' => $row['last_name'], 'contact_number' => $row['contact_num'], + 'mobile_number' => $mobile_num, 'address' => $row['address'], 'email' => $row['email'], 'action' => $row['action'], -- 2.43.5 From 907bee0d709e03b9445753fb82d79f11256d4da1 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 21 Nov 2022 07:37:27 +0000 Subject: [PATCH 2/3] Add service to filter warranty raffle entries. #720 --- config/services.yaml | 3 +++ src/Controller/ReportController.php | 18 ++++++++++++++---- src/Service/WarrantyRaffleFilter.php | 13 +++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 src/Service/WarrantyRaffleFilter.php diff --git a/config/services.yaml b/config/services.yaml index 961ac7b1..a5d7d05f 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -282,6 +282,9 @@ services: arguments: $em: "@doctrine.orm.entity_manager" + # warranty raffle filter + App\Service\WarrantyRaffleFilter: ~ + # promo logger App\Service\PromoLogger: arguments: diff --git a/src/Controller/ReportController.php b/src/Controller/ReportController.php index d16d7eb1..340f167d 100644 --- a/src/Controller/ReportController.php +++ b/src/Controller/ReportController.php @@ -22,6 +22,8 @@ use App\Entity\BatterySize; use App\Entity\SMSMessage; use App\Entity\HubFilterLog; +use App\Service\WarrantyRaffleFilter; + use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\EntityManagerInterface; @@ -1242,7 +1244,7 @@ class ReportController extends Controller return $this->render('report/jo-raffle/form.html.twig'); } - public function warrantyRaffleSubmit(Request $req, EntityManagerInterface $em) + public function warrantyRaffleSubmit(Request $req, EntityManagerInterface $em, WarrantyRaffleFilter $wr_filter) { // get dates $raw_date_start = $req->request->get('date_start'); @@ -1251,10 +1253,18 @@ class ReportController extends Controller $date_start = DateTime::createFromFormat('m/d/Y', $raw_date_start); $date_end = DateTime::createFromFormat('m/d/Y', $raw_date_end); - $data = $this->getWarrantyRaffleData($req, $em, $raw_date_start, $raw_date_end); + $wr_data = $this->getWarrantyRaffleData($req, $em, $raw_date_start, $raw_date_end); + + // filter the retrieved warranty raffle data + $filtered_data = []; + foreach ($wr_data as $wr_entry) + { + $valid = $wr_filter->isValidRaffleEntry($wr_entry); + $filtered_data[] = $wr_entry; + } $resp = new StreamedResponse(); - $resp->setCallback(function() use ($data) { + $resp->setCallback(function() use ($filtered_data) { // csv output $csv_handle = fopen('php://output', 'w+'); fputcsv($csv_handle, [ @@ -1275,7 +1285,7 @@ class ReportController extends Controller 'Action Taken', ]); - foreach ($data as $row) + foreach ($filtered_data as $row) { fputcsv($csv_handle, $row); } diff --git a/src/Service/WarrantyRaffleFilter.php b/src/Service/WarrantyRaffleFilter.php new file mode 100644 index 00000000..d9edbb9e --- /dev/null +++ b/src/Service/WarrantyRaffleFilter.php @@ -0,0 +1,13 @@ + Date: Tue, 22 Nov 2022 07:39:45 +0000 Subject: [PATCH 3/3] Add criteria to warranty raffle filter. #720 --- src/Controller/ReportController.php | 3 ++- src/Service/WarrantyRaffleFilter.php | 25 ++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Controller/ReportController.php b/src/Controller/ReportController.php index 340f167d..18c6471f 100644 --- a/src/Controller/ReportController.php +++ b/src/Controller/ReportController.php @@ -1260,7 +1260,8 @@ class ReportController extends Controller foreach ($wr_data as $wr_entry) { $valid = $wr_filter->isValidRaffleEntry($wr_entry); - $filtered_data[] = $wr_entry; + if ($valid) + $filtered_data[] = $wr_entry; } $resp = new StreamedResponse(); diff --git a/src/Service/WarrantyRaffleFilter.php b/src/Service/WarrantyRaffleFilter.php index d9edbb9e..ac76d5d2 100644 --- a/src/Service/WarrantyRaffleFilter.php +++ b/src/Service/WarrantyRaffleFilter.php @@ -2,12 +2,35 @@ namespace App\Service; +use App\Ramcar\WarrantyClass; + class WarrantyRaffleFilter { public function isValidRaffleEntry($entry) { // entry is an associative array - // error_log('entry ' . $entry['first_name']); + // Serial Number of Battery (NOT blank) + if (empty($entry['serial'])) + return false; + + // Plate Number (NOT blank) + if (empty($entry['plate_number'])) + return false; + + // Warranty Class (ONLY private) + if ($entry['warranty_class'] != WarrantyClass::WTY_PRIVATE) + return false; + + // either contact number of mobile number is present + if ((empty($entry['contact_number'])) && + (empty($entry['mobile_number']))) + return false; + + // First Name & Last Name have to be present + if ((empty($entry['first_name'])) || + (empty($entry['last_name']))) + return false; + return true; } } -- 2.43.5