Fix checking for customer job orders. #773
This commit is contained in:
parent
35456cfb19
commit
806418db52
5 changed files with 83 additions and 19 deletions
|
|
@ -49,6 +49,7 @@ use App\Service\HubDistributor;
|
|||
use App\Service\HubFilterLogger;
|
||||
use App\Service\HubFilteringGeoChecker;
|
||||
use App\Service\HashGenerator;
|
||||
use App\Service\JobOrderManager;
|
||||
|
||||
use App\Entity\MobileSession;
|
||||
use App\Entity\Customer;
|
||||
|
|
@ -867,7 +868,7 @@ class APIController extends Controller implements LoggedController
|
|||
MapTools $map_tools, InventoryManager $im, MQTTClient $mclient,
|
||||
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
||||
HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger,
|
||||
HubFilteringGeoChecker $hub_geofence)
|
||||
HubFilteringGeoChecker $hub_geofence, JobOrderManager $jo_manager)
|
||||
{
|
||||
// check required parameters and api key
|
||||
$required_params = [
|
||||
|
|
@ -928,7 +929,15 @@ class APIController extends Controller implements LoggedController
|
|||
->setErrorMessage('No customer information found');
|
||||
return $res->getReturnResponse();
|
||||
}
|
||||
|
||||
// check if customer has more than one job order already
|
||||
$flag_new_cust = false;
|
||||
$cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust);
|
||||
if ($cust_jo_count <= 1)
|
||||
$flag_new_cust = true;
|
||||
|
||||
$jo->setCustomer($cust);
|
||||
$jo->setCustNew($flag_new_cust);
|
||||
|
||||
// validate service type
|
||||
$stype = $req->request->get('service_type');
|
||||
|
|
@ -2732,7 +2741,7 @@ class APIController extends Controller implements LoggedController
|
|||
MapTools $map_tools, InventoryManager $im, MQTTClient $mclient,
|
||||
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
||||
HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger,
|
||||
HubFilteringGeoChecker $hub_geofence)
|
||||
HubFilteringGeoChecker $hub_geofence, JobOrderManager $jo_manager)
|
||||
{
|
||||
// check required parameters and api key
|
||||
$required_params = [
|
||||
|
|
@ -2857,7 +2866,16 @@ class APIController extends Controller implements LoggedController
|
|||
// ->setErrorMessage('No customer information found');
|
||||
// return $res->getReturnResponse();
|
||||
// }
|
||||
|
||||
// check if customer has more than one job order already
|
||||
$flag_new_cust = false;
|
||||
$cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust);
|
||||
error_log('cust jo count for customer id ' .$cust->getID() . ' ' . $cust_jo_count);
|
||||
if ($cust_jo_count <= 1)
|
||||
$flag_new_cust = true;
|
||||
|
||||
$jo->setCustomer($cust);
|
||||
$jo->setCustNew($flag_new_cust);
|
||||
|
||||
// validate service type
|
||||
$stype = $req->request->get('service_type');
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ use App\Service\HubSelector;
|
|||
use App\Service\HubDistributor;
|
||||
use App\Service\HubFilterLogger;
|
||||
use App\Service\HubFilteringGeoChecker;
|
||||
use App\Service\JobOrderManager;
|
||||
use App\Ramcar\ServiceType;
|
||||
use App\Ramcar\APIRiderStatus;
|
||||
use App\Ramcar\InvoiceCriteria;
|
||||
|
|
@ -482,7 +483,8 @@ class JobOrderController extends ApiController
|
|||
HubSelector $hub_select,
|
||||
HubDistributor $hub_dist,
|
||||
HubFilterLogger $hub_filter_logger,
|
||||
HubFilteringGeoChecker $hub_geofence
|
||||
HubFilteringGeoChecker $hub_geofence,
|
||||
JobOrderManager $jo_manager
|
||||
) {
|
||||
// validate params
|
||||
$validity = $this->validateRequest($req, [
|
||||
|
|
@ -594,7 +596,16 @@ class JobOrderController extends ApiController
|
|||
// ->setErrorMessage('No customer information found');
|
||||
// return $res->getReturnResponse();
|
||||
// }
|
||||
|
||||
// check if customer has more than one job order already
|
||||
$flag_new_cust = false;
|
||||
|
||||
$cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust);
|
||||
if ($cust_jo_count <= 1)
|
||||
$flag_new_cust = true;
|
||||
|
||||
$jo->setCustomer($cust);
|
||||
$jo->setCustNew($flag_new_cust);
|
||||
|
||||
// validate service type
|
||||
$stype = $req->request->get('service_type');
|
||||
|
|
@ -956,7 +967,8 @@ class JobOrderController extends ApiController
|
|||
HubSelector $hub_select,
|
||||
HubDistributor $hub_dist,
|
||||
HubFilterLogger $hub_filter_logger,
|
||||
HubFilteringGeoChecker $hub_geofence
|
||||
HubFilteringGeoChecker $hub_geofence,
|
||||
JobOrderManager $jo_manager
|
||||
) {
|
||||
// validate params
|
||||
$validity = $this->validateRequest($req, [
|
||||
|
|
@ -1011,7 +1023,16 @@ class JobOrderController extends ApiController
|
|||
if ($cust == null) {
|
||||
return new ApiResponse(false, 'No customer information found.');
|
||||
}
|
||||
|
||||
// check if customer has more than one job order already
|
||||
$flag_new_cust = false;
|
||||
|
||||
$cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust);
|
||||
if ($cust_jo_count <= 1)
|
||||
$flag_new_cust = true;
|
||||
|
||||
$jo->setCustomer($cust);
|
||||
$jo->setCustNew($flag_new_cust);
|
||||
|
||||
// validate service type
|
||||
$stype = $req->request->get('service_type');
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ use App\Service\HubFilteringGeoChecker;
|
|||
use App\Service\RiderTracker;
|
||||
use App\Service\PromoLogger;
|
||||
use App\Service\MapTools;
|
||||
use App\Service\JobOrderManager;
|
||||
|
||||
use App\Entity\JobOrder;
|
||||
use App\Entity\CustomerVehicle;
|
||||
|
|
@ -78,7 +79,7 @@ class JobOrderController extends ApiController
|
|||
FCMSender $fcmclient,
|
||||
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
||||
HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger,
|
||||
HubFilteringGeoChecker $hub_geofence, EntityManagerInterface $em)
|
||||
HubFilteringGeoChecker $hub_geofence, EntityManagerInterface $em, JobOrderManager $jo_manager)
|
||||
{
|
||||
$this->denyAccessUnlessGranted('tapi_jo.request', null, 'No access.');
|
||||
|
||||
|
|
@ -107,7 +108,7 @@ class JobOrderController extends ApiController
|
|||
|
||||
// get data from request
|
||||
$data = [];
|
||||
$status = $this->getJobOrderRequestInfo($req, $em, $data);
|
||||
$status = $this->getJobOrderRequestInfo($req, $em, $jo_manager, $data);
|
||||
if ($status != null)
|
||||
return new APIResponse(false, $status);
|
||||
|
||||
|
|
@ -1246,7 +1247,7 @@ class JobOrderController extends ApiController
|
|||
return $file_path;
|
||||
}
|
||||
|
||||
protected function getJobOrderRequestInfo(Request $req, EntityManagerInterface $em, &$data)
|
||||
protected function getJobOrderRequestInfo(Request $req, EntityManagerInterface $em, JobOrderManager $jo_manager, &$data)
|
||||
{
|
||||
$error = $this->validateJORequest($req, $em);
|
||||
if ($error != null)
|
||||
|
|
@ -1369,7 +1370,7 @@ class JobOrderController extends ApiController
|
|||
];
|
||||
|
||||
// process customer and vehicle information
|
||||
$cust_data = $this->processCustomerAndVehicleInformation($c_data, $em);
|
||||
$cust_data = $this->processCustomerAndVehicleInformation($c_data, $em, $jo_manager);
|
||||
|
||||
$data = [
|
||||
'trade_in_type' => $trade_in_type,
|
||||
|
|
@ -1546,7 +1547,7 @@ class JobOrderController extends ApiController
|
|||
return null;
|
||||
}
|
||||
|
||||
protected function processCustomerAndVehicleInformation($data, EntityManagerInterface $em)
|
||||
protected function processCustomerAndVehicleInformation($data, EntityManagerInterface $em, JobOrderManager $jo_manager)
|
||||
{
|
||||
$c_data = [];
|
||||
|
||||
|
|
@ -1611,11 +1612,11 @@ class JobOrderController extends ApiController
|
|||
$em->flush();
|
||||
}
|
||||
|
||||
// check if customer already has existing job orders
|
||||
// check if customer has more than one job order already
|
||||
if ($cust != null)
|
||||
{
|
||||
$cust_jos = $cust->getJobOrders();
|
||||
if (count($cust_jos) <= 1)
|
||||
$cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust);
|
||||
if ($cust_jo_count <= 1)
|
||||
$flag_new_cust = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ use App\Service\PromoLogger;
|
|||
use App\Service\HubSelector;
|
||||
use App\Service\HubDistributor;
|
||||
use App\Service\HubFilteringGeoChecker;
|
||||
use App\Service\JobOrderManager;
|
||||
|
||||
use CrEOF\Spatial\PHP\Types\Geometry\Point;
|
||||
|
||||
|
|
@ -94,6 +95,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
protected $hub_geofence;
|
||||
protected $cust_distance_limit;
|
||||
protected $hub_filter_enable;
|
||||
protected $jo_manager;
|
||||
|
||||
protected $template_hash;
|
||||
|
||||
|
|
@ -102,7 +104,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
TranslatorInterface $translator, RiderAssignmentHandlerInterface $rah,
|
||||
string $country_code, WarrantyHandler $wh, RisingTideGateway $rt,
|
||||
PromoLogger $promo_logger, HubDistributor $hub_dist, HubFilteringGeoChecker $hub_geofence,
|
||||
string $cust_distance_limit, string $hub_filter_enabled)
|
||||
string $cust_distance_limit, string $hub_filter_enabled, JobOrderManager $jo_manager)
|
||||
{
|
||||
$this->em = $em;
|
||||
$this->ic = $ic;
|
||||
|
|
@ -118,6 +120,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
$this->hub_geofence = $hub_geofence;
|
||||
$this->cust_distance_limit = $cust_distance_limit;
|
||||
$this->hub_filter_enabled = $hub_filter_enabled;
|
||||
$this->jo_manager = $jo_manager;
|
||||
|
||||
$this->loadTemplates();
|
||||
}
|
||||
|
|
@ -388,12 +391,12 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
->setResearchSms($req->request->get('flag_research_sms', false))
|
||||
->setResearchEmail($req->request->get('flag_research_email', false))
|
||||
->setDpaConsent($is_dpa_checked);
|
||||
}
|
||||
|
||||
// check if customer has more than one job order already
|
||||
$cust_jos = $customer->getJobOrders();
|
||||
if (count($cust_jos) <= 1)
|
||||
$cust_jo_count = $this->jo_manager->getCustomerJobOrderCount($customer);
|
||||
if ($cust_jo_count <= 1)
|
||||
$flag_new_cust = true;
|
||||
}
|
||||
|
||||
// check if lat and lng are provided
|
||||
if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) {
|
||||
|
|
|
|||
|
|
@ -5,9 +5,12 @@ namespace App\Service;
|
|||
use App\Entity\JobOrder;
|
||||
|
||||
use App\Ramcar\ServiceType;
|
||||
use App\Ramcar\JOStatus;
|
||||
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
use PDO;
|
||||
|
||||
class JobOrderManager
|
||||
{
|
||||
protected $em;
|
||||
|
|
@ -36,6 +39,24 @@ class JobOrderManager
|
|||
return false;
|
||||
}
|
||||
|
||||
public function getCustomerJobOrderCount($customer)
|
||||
{
|
||||
$db = $this->em->getConnection();
|
||||
|
||||
$cust_id = $customer->getID();
|
||||
|
||||
$query_sql = 'SELECT COUNT(*) AS jo_count FROM job_order WHERE customer_id = :cust_id AND status != :status_cancelled';
|
||||
|
||||
$query_stmt = $db->prepare($query_sql);
|
||||
$query_stmt->bindValue('cust_id', $cust_id);
|
||||
$query_stmt->bindValue('status_cancelled', JOStatus::CANCELLED);
|
||||
|
||||
$jo_results = $query_stmt->executeQuery();
|
||||
$results = $jo_results->fetchAssociative();
|
||||
|
||||
return $results['jo_count'];
|
||||
}
|
||||
|
||||
protected function updateCustomerVehicleBattery($cust_vehicle, $invoice)
|
||||
{
|
||||
if (($cust_vehicle != null) && ($invoice != null))
|
||||
|
|
|
|||
Loading…
Reference in a new issue