Merge branch '720-create-service-to-filter-warranty-entries-for-warranty-raffle-report' into 'master'
Resolve "Create service to filter warranty entries for warranty raffle report" Closes #720 See merge request jankstudio/resq!835
This commit is contained in:
commit
524d99db08
3 changed files with 77 additions and 5 deletions
|
|
@ -282,6 +282,9 @@ services:
|
||||||
arguments:
|
arguments:
|
||||||
$em: "@doctrine.orm.entity_manager"
|
$em: "@doctrine.orm.entity_manager"
|
||||||
|
|
||||||
|
# warranty raffle filter
|
||||||
|
App\Service\WarrantyRaffleFilter: ~
|
||||||
|
|
||||||
# promo logger
|
# promo logger
|
||||||
App\Service\PromoLogger:
|
App\Service\PromoLogger:
|
||||||
arguments:
|
arguments:
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ use App\Entity\BatterySize;
|
||||||
use App\Entity\SMSMessage;
|
use App\Entity\SMSMessage;
|
||||||
use App\Entity\HubFilterLog;
|
use App\Entity\HubFilterLog;
|
||||||
|
|
||||||
|
use App\Service\WarrantyRaffleFilter;
|
||||||
|
|
||||||
use Doctrine\ORM\Query;
|
use Doctrine\ORM\Query;
|
||||||
use Doctrine\ORM\QueryBuilder;
|
use Doctrine\ORM\QueryBuilder;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
|
@ -1242,7 +1244,7 @@ class ReportController extends Controller
|
||||||
return $this->render('report/jo-raffle/form.html.twig');
|
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
|
// get dates
|
||||||
$raw_date_start = $req->request->get('date_start');
|
$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_start = DateTime::createFromFormat('m/d/Y', $raw_date_start);
|
||||||
$date_end = DateTime::createFromFormat('m/d/Y', $raw_date_end);
|
$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 = new StreamedResponse();
|
||||||
$resp->setCallback(function() use ($data) {
|
$resp->setCallback(function() use ($filtered_data) {
|
||||||
// csv output
|
// csv output
|
||||||
$csv_handle = fopen('php://output', 'w+');
|
$csv_handle = fopen('php://output', 'w+');
|
||||||
fputcsv($csv_handle, [
|
fputcsv($csv_handle, [
|
||||||
|
|
@ -1269,12 +1280,13 @@ class ReportController extends Controller
|
||||||
'First Name',
|
'First Name',
|
||||||
'Last Name',
|
'Last Name',
|
||||||
'Contact Number',
|
'Contact Number',
|
||||||
|
'Mobile Number', // number with mobile app
|
||||||
'Address',
|
'Address',
|
||||||
'Email',
|
'Email',
|
||||||
'Action Taken',
|
'Action Taken',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
foreach ($data as $row)
|
foreach ($filtered_data as $row)
|
||||||
{
|
{
|
||||||
fputcsv($csv_handle, $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.date_create AS date_create, wrl.plate_number AS plate_number,
|
||||||
wrl.first_name AS first_name, wrl.last_name AS last_name,
|
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.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
|
FROM warranty_raffle_log wrl
|
||||||
WHERE wrl.date_create >= :date_start
|
WHERE wrl.date_create >= :date_start
|
||||||
AND wrl.date_create <= :date_end';
|
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 = '';
|
$raffle_number = '';
|
||||||
$hub = '';
|
$hub = '';
|
||||||
$battery_name = $row['model_name'] . ' / ' . $row['size_name'];
|
$battery_name = $row['model_name'] . ' / ' . $row['size_name'];
|
||||||
|
|
@ -2790,6 +2822,7 @@ class ReportController extends Controller
|
||||||
'first_name' => $row['first_name'],
|
'first_name' => $row['first_name'],
|
||||||
'last_name' => $row['last_name'],
|
'last_name' => $row['last_name'],
|
||||||
'contact_number' => $row['contact_num'],
|
'contact_number' => $row['contact_num'],
|
||||||
|
'mobile_number' => $mobile_num,
|
||||||
'address' => $row['address'],
|
'address' => $row['address'],
|
||||||
'email' => $row['email'],
|
'email' => $row['email'],
|
||||||
'action' => $row['action'],
|
'action' => $row['action'],
|
||||||
|
|
|
||||||
36
src/Service/WarrantyRaffleFilter.php
Normal file
36
src/Service/WarrantyRaffleFilter.php
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use App\Ramcar\WarrantyClass;
|
||||||
|
|
||||||
|
class WarrantyRaffleFilter
|
||||||
|
{
|
||||||
|
public function isValidRaffleEntry($entry)
|
||||||
|
{
|
||||||
|
// entry is an associative array
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue