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 c8ffe09e..18c6471f 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,19 @@ 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); + if ($valid) + $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, [ @@ -1269,12 +1280,13 @@ class ReportController extends Controller 'First Name', 'Last Name', 'Contact Number', + 'Mobile Number', // number with mobile app 'Address', 'Email', 'Action Taken', ]); - foreach ($data as $row) + foreach ($filtered_data as $row) { fputcsv($csv_handle, $row); } @@ -2731,7 +2743,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 +2782,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 +2822,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'], diff --git a/src/Service/WarrantyRaffleFilter.php b/src/Service/WarrantyRaffleFilter.php new file mode 100644 index 00000000..ac76d5d2 --- /dev/null +++ b/src/Service/WarrantyRaffleFilter.php @@ -0,0 +1,36 @@ +