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\HubFilterLogger;
|
||||||
use App\Service\HubFilteringGeoChecker;
|
use App\Service\HubFilteringGeoChecker;
|
||||||
use App\Service\HashGenerator;
|
use App\Service\HashGenerator;
|
||||||
|
use App\Service\JobOrderManager;
|
||||||
|
|
||||||
use App\Entity\MobileSession;
|
use App\Entity\MobileSession;
|
||||||
use App\Entity\Customer;
|
use App\Entity\Customer;
|
||||||
|
|
@ -867,7 +868,7 @@ class APIController extends Controller implements LoggedController
|
||||||
MapTools $map_tools, InventoryManager $im, MQTTClient $mclient,
|
MapTools $map_tools, InventoryManager $im, MQTTClient $mclient,
|
||||||
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
||||||
HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_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
|
// check required parameters and api key
|
||||||
$required_params = [
|
$required_params = [
|
||||||
|
|
@ -928,7 +929,15 @@ class APIController extends Controller implements LoggedController
|
||||||
->setErrorMessage('No customer information found');
|
->setErrorMessage('No customer information found');
|
||||||
return $res->getReturnResponse();
|
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->setCustomer($cust);
|
||||||
|
$jo->setCustNew($flag_new_cust);
|
||||||
|
|
||||||
// validate service type
|
// validate service type
|
||||||
$stype = $req->request->get('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,
|
MapTools $map_tools, InventoryManager $im, MQTTClient $mclient,
|
||||||
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
||||||
HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_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
|
// check required parameters and api key
|
||||||
$required_params = [
|
$required_params = [
|
||||||
|
|
@ -2857,7 +2866,16 @@ class APIController extends Controller implements LoggedController
|
||||||
// ->setErrorMessage('No customer information found');
|
// ->setErrorMessage('No customer information found');
|
||||||
// return $res->getReturnResponse();
|
// 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->setCustomer($cust);
|
||||||
|
$jo->setCustNew($flag_new_cust);
|
||||||
|
|
||||||
// validate service type
|
// validate service type
|
||||||
$stype = $req->request->get('service_type');
|
$stype = $req->request->get('service_type');
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ use App\Service\HubSelector;
|
||||||
use App\Service\HubDistributor;
|
use App\Service\HubDistributor;
|
||||||
use App\Service\HubFilterLogger;
|
use App\Service\HubFilterLogger;
|
||||||
use App\Service\HubFilteringGeoChecker;
|
use App\Service\HubFilteringGeoChecker;
|
||||||
|
use App\Service\JobOrderManager;
|
||||||
use App\Ramcar\ServiceType;
|
use App\Ramcar\ServiceType;
|
||||||
use App\Ramcar\APIRiderStatus;
|
use App\Ramcar\APIRiderStatus;
|
||||||
use App\Ramcar\InvoiceCriteria;
|
use App\Ramcar\InvoiceCriteria;
|
||||||
|
|
@ -482,7 +483,8 @@ class JobOrderController extends ApiController
|
||||||
HubSelector $hub_select,
|
HubSelector $hub_select,
|
||||||
HubDistributor $hub_dist,
|
HubDistributor $hub_dist,
|
||||||
HubFilterLogger $hub_filter_logger,
|
HubFilterLogger $hub_filter_logger,
|
||||||
HubFilteringGeoChecker $hub_geofence
|
HubFilteringGeoChecker $hub_geofence,
|
||||||
|
JobOrderManager $jo_manager
|
||||||
) {
|
) {
|
||||||
// validate params
|
// validate params
|
||||||
$validity = $this->validateRequest($req, [
|
$validity = $this->validateRequest($req, [
|
||||||
|
|
@ -594,7 +596,16 @@ class JobOrderController extends ApiController
|
||||||
// ->setErrorMessage('No customer information found');
|
// ->setErrorMessage('No customer information found');
|
||||||
// return $res->getReturnResponse();
|
// 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->setCustomer($cust);
|
||||||
|
$jo->setCustNew($flag_new_cust);
|
||||||
|
|
||||||
// validate service type
|
// validate service type
|
||||||
$stype = $req->request->get('service_type');
|
$stype = $req->request->get('service_type');
|
||||||
|
|
@ -956,7 +967,8 @@ class JobOrderController extends ApiController
|
||||||
HubSelector $hub_select,
|
HubSelector $hub_select,
|
||||||
HubDistributor $hub_dist,
|
HubDistributor $hub_dist,
|
||||||
HubFilterLogger $hub_filter_logger,
|
HubFilterLogger $hub_filter_logger,
|
||||||
HubFilteringGeoChecker $hub_geofence
|
HubFilteringGeoChecker $hub_geofence,
|
||||||
|
JobOrderManager $jo_manager
|
||||||
) {
|
) {
|
||||||
// validate params
|
// validate params
|
||||||
$validity = $this->validateRequest($req, [
|
$validity = $this->validateRequest($req, [
|
||||||
|
|
@ -1011,7 +1023,16 @@ class JobOrderController extends ApiController
|
||||||
if ($cust == null) {
|
if ($cust == null) {
|
||||||
return new ApiResponse(false, 'No customer information found.');
|
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->setCustomer($cust);
|
||||||
|
$jo->setCustNew($flag_new_cust);
|
||||||
|
|
||||||
// validate service type
|
// validate service type
|
||||||
$stype = $req->request->get('service_type');
|
$stype = $req->request->get('service_type');
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ use App\Service\HubFilteringGeoChecker;
|
||||||
use App\Service\RiderTracker;
|
use App\Service\RiderTracker;
|
||||||
use App\Service\PromoLogger;
|
use App\Service\PromoLogger;
|
||||||
use App\Service\MapTools;
|
use App\Service\MapTools;
|
||||||
|
use App\Service\JobOrderManager;
|
||||||
|
|
||||||
use App\Entity\JobOrder;
|
use App\Entity\JobOrder;
|
||||||
use App\Entity\CustomerVehicle;
|
use App\Entity\CustomerVehicle;
|
||||||
|
|
@ -78,7 +79,7 @@ class JobOrderController extends ApiController
|
||||||
FCMSender $fcmclient,
|
FCMSender $fcmclient,
|
||||||
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger,
|
||||||
HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_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.');
|
$this->denyAccessUnlessGranted('tapi_jo.request', null, 'No access.');
|
||||||
|
|
||||||
|
|
@ -107,7 +108,7 @@ class JobOrderController extends ApiController
|
||||||
|
|
||||||
// get data from request
|
// get data from request
|
||||||
$data = [];
|
$data = [];
|
||||||
$status = $this->getJobOrderRequestInfo($req, $em, $data);
|
$status = $this->getJobOrderRequestInfo($req, $em, $jo_manager, $data);
|
||||||
if ($status != null)
|
if ($status != null)
|
||||||
return new APIResponse(false, $status);
|
return new APIResponse(false, $status);
|
||||||
|
|
||||||
|
|
@ -1246,7 +1247,7 @@ class JobOrderController extends ApiController
|
||||||
return $file_path;
|
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);
|
$error = $this->validateJORequest($req, $em);
|
||||||
if ($error != null)
|
if ($error != null)
|
||||||
|
|
@ -1369,7 +1370,7 @@ class JobOrderController extends ApiController
|
||||||
];
|
];
|
||||||
|
|
||||||
// process customer and vehicle information
|
// process customer and vehicle information
|
||||||
$cust_data = $this->processCustomerAndVehicleInformation($c_data, $em);
|
$cust_data = $this->processCustomerAndVehicleInformation($c_data, $em, $jo_manager);
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'trade_in_type' => $trade_in_type,
|
'trade_in_type' => $trade_in_type,
|
||||||
|
|
@ -1546,7 +1547,7 @@ class JobOrderController extends ApiController
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function processCustomerAndVehicleInformation($data, EntityManagerInterface $em)
|
protected function processCustomerAndVehicleInformation($data, EntityManagerInterface $em, JobOrderManager $jo_manager)
|
||||||
{
|
{
|
||||||
$c_data = [];
|
$c_data = [];
|
||||||
|
|
||||||
|
|
@ -1611,14 +1612,14 @@ class JobOrderController extends ApiController
|
||||||
$em->flush();
|
$em->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if customer already has existing job orders
|
// check if customer has more than one job order already
|
||||||
if ($cust != null)
|
if ($cust != null)
|
||||||
{
|
{
|
||||||
$cust_jos = $cust->getJobOrders();
|
$cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust);
|
||||||
if (count($cust_jos) <= 1)
|
if ($cust_jo_count <= 1)
|
||||||
$flag_new_cust = true;
|
$flag_new_cust = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$c_data = [
|
$c_data = [
|
||||||
'customer' => $cust_vehicle->getCustomer(),
|
'customer' => $cust_vehicle->getCustomer(),
|
||||||
'customer_vehicle' => $cust_vehicle,
|
'customer_vehicle' => $cust_vehicle,
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ use App\Service\PromoLogger;
|
||||||
use App\Service\HubSelector;
|
use App\Service\HubSelector;
|
||||||
use App\Service\HubDistributor;
|
use App\Service\HubDistributor;
|
||||||
use App\Service\HubFilteringGeoChecker;
|
use App\Service\HubFilteringGeoChecker;
|
||||||
|
use App\Service\JobOrderManager;
|
||||||
|
|
||||||
use CrEOF\Spatial\PHP\Types\Geometry\Point;
|
use CrEOF\Spatial\PHP\Types\Geometry\Point;
|
||||||
|
|
||||||
|
|
@ -94,6 +95,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
protected $hub_geofence;
|
protected $hub_geofence;
|
||||||
protected $cust_distance_limit;
|
protected $cust_distance_limit;
|
||||||
protected $hub_filter_enable;
|
protected $hub_filter_enable;
|
||||||
|
protected $jo_manager;
|
||||||
|
|
||||||
protected $template_hash;
|
protected $template_hash;
|
||||||
|
|
||||||
|
|
@ -102,7 +104,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
TranslatorInterface $translator, RiderAssignmentHandlerInterface $rah,
|
TranslatorInterface $translator, RiderAssignmentHandlerInterface $rah,
|
||||||
string $country_code, WarrantyHandler $wh, RisingTideGateway $rt,
|
string $country_code, WarrantyHandler $wh, RisingTideGateway $rt,
|
||||||
PromoLogger $promo_logger, HubDistributor $hub_dist, HubFilteringGeoChecker $hub_geofence,
|
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->em = $em;
|
||||||
$this->ic = $ic;
|
$this->ic = $ic;
|
||||||
|
|
@ -118,6 +120,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->hub_geofence = $hub_geofence;
|
$this->hub_geofence = $hub_geofence;
|
||||||
$this->cust_distance_limit = $cust_distance_limit;
|
$this->cust_distance_limit = $cust_distance_limit;
|
||||||
$this->hub_filter_enabled = $hub_filter_enabled;
|
$this->hub_filter_enabled = $hub_filter_enabled;
|
||||||
|
$this->jo_manager = $jo_manager;
|
||||||
|
|
||||||
$this->loadTemplates();
|
$this->loadTemplates();
|
||||||
}
|
}
|
||||||
|
|
@ -388,13 +391,13 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
->setResearchSms($req->request->get('flag_research_sms', false))
|
->setResearchSms($req->request->get('flag_research_sms', false))
|
||||||
->setResearchEmail($req->request->get('flag_research_email', false))
|
->setResearchEmail($req->request->get('flag_research_email', false))
|
||||||
->setDpaConsent($is_dpa_checked);
|
->setDpaConsent($is_dpa_checked);
|
||||||
|
|
||||||
// check if customer has more than one job order already
|
|
||||||
$cust_jos = $customer->getJobOrders();
|
|
||||||
if (count($cust_jos) <= 1)
|
|
||||||
$flag_new_cust = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if customer has more than one job order already
|
||||||
|
$cust_jo_count = $this->jo_manager->getCustomerJobOrderCount($customer);
|
||||||
|
if ($cust_jo_count <= 1)
|
||||||
|
$flag_new_cust = true;
|
||||||
|
|
||||||
// check if lat and lng are provided
|
// check if lat and lng are provided
|
||||||
if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) {
|
if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) {
|
||||||
$error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.';
|
$error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.';
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,12 @@ namespace App\Service;
|
||||||
use App\Entity\JobOrder;
|
use App\Entity\JobOrder;
|
||||||
|
|
||||||
use App\Ramcar\ServiceType;
|
use App\Ramcar\ServiceType;
|
||||||
|
use App\Ramcar\JOStatus;
|
||||||
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
|
||||||
|
use PDO;
|
||||||
|
|
||||||
class JobOrderManager
|
class JobOrderManager
|
||||||
{
|
{
|
||||||
protected $em;
|
protected $em;
|
||||||
|
|
@ -36,6 +39,24 @@ class JobOrderManager
|
||||||
return false;
|
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)
|
protected function updateCustomerVehicleBattery($cust_vehicle, $invoice)
|
||||||
{
|
{
|
||||||
if (($cust_vehicle != null) && ($invoice != null))
|
if (($cust_vehicle != null) && ($invoice != null))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue