Merge branch '419-resq-search-optimization' into 'master'
Resolve "Resq - search optimization" Closes #419 See merge request jankstudio/resq!479
This commit is contained in:
commit
f56e995910
3 changed files with 124 additions and 2 deletions
1
initial_sql/sql_update_job_order_search_fields.sql
Normal file
1
initial_sql/sql_update_job_order_search_fields.sql
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
UPDATE job_order jo, customer c, customer_vehicle cv SET jo.first_name = c.first_name, jo.last_name = c.last_name, jo.phone_mobile = c.phone_mobile, jo.plate_number = cv.plate_number WHERE jo.customer_id = c.id AND jo.cvehicle_id = cv.id;
|
||||||
|
|
@ -16,7 +16,11 @@ use App\Ramcar\ServiceType;
|
||||||
/**
|
/**
|
||||||
* @ORM\Entity
|
* @ORM\Entity
|
||||||
* @ORM\Table(name="job_order", indexes={
|
* @ORM\Table(name="job_order", indexes={
|
||||||
* @ORM\Index(name="date_schedule_idx", columns={"date_schedule"})
|
* @ORM\Index(name="date_schedule_idx", columns={"date_schedule"}),
|
||||||
|
* @ORM\Index(name="plate_number_idx", columns={"plate_number"}),
|
||||||
|
* @ORM\Index(name="first_name_idx", columns={"first_name"}),
|
||||||
|
* @ORM\Index(name="last_name_idx", columns={"last_name"}),
|
||||||
|
* @ORM\Index(name="phone_mobile_idx", columns={"phone_mobile"})
|
||||||
* })
|
* })
|
||||||
*/
|
*/
|
||||||
class JobOrder
|
class JobOrder
|
||||||
|
|
@ -302,6 +306,34 @@ class JobOrder
|
||||||
*/
|
*/
|
||||||
protected $meta;
|
protected $meta;
|
||||||
|
|
||||||
|
// for search purposes
|
||||||
|
// first name
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=80)
|
||||||
|
* @Assert\NotBlank()
|
||||||
|
*/
|
||||||
|
protected $first_name;
|
||||||
|
|
||||||
|
// last name
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=80)
|
||||||
|
* @Assert\NotBlank()
|
||||||
|
*/
|
||||||
|
protected $last_name;
|
||||||
|
|
||||||
|
// plate number
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=100)
|
||||||
|
* @Assert\NotBlank()
|
||||||
|
*/
|
||||||
|
protected $plate_number;
|
||||||
|
|
||||||
|
// mobile phone
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=30)
|
||||||
|
*/
|
||||||
|
protected $phone_mobile;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->date_create = new DateTime();
|
$this->date_create = new DateTime();
|
||||||
|
|
@ -322,6 +354,8 @@ class JobOrder
|
||||||
|
|
||||||
$this->priority = 0;
|
$this->priority = 0;
|
||||||
$this->meta = [];
|
$this->meta = [];
|
||||||
|
|
||||||
|
$this->phone_mobile = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getID()
|
public function getID()
|
||||||
|
|
@ -865,4 +899,58 @@ class JobOrder
|
||||||
return $this->status_autoassign;
|
return $this->status_autoassign;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setFirstName($first_name)
|
||||||
|
{
|
||||||
|
$this->first_name = $first_name;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFirstName()
|
||||||
|
{
|
||||||
|
return $this->first_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setLastName($last_name)
|
||||||
|
{
|
||||||
|
$this->last_name = $last_name;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLastName()
|
||||||
|
{
|
||||||
|
return $this->last_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setPlateNumber($plate_number)
|
||||||
|
{
|
||||||
|
// make it upper case
|
||||||
|
$plate_number = trim(strtoupper($plate_number));
|
||||||
|
|
||||||
|
// remove spaces
|
||||||
|
$plate_number = str_replace(' ', '', $plate_number);
|
||||||
|
|
||||||
|
// upper case
|
||||||
|
$plate_number = strtoupper($plate_number);
|
||||||
|
|
||||||
|
$this->plate_number = $plate_number;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPlateNumber()
|
||||||
|
{
|
||||||
|
return strtoupper($this->plate_number);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setPhoneMobile($phone)
|
||||||
|
{
|
||||||
|
$this->phone_mobile = $phone;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPhoneMobile()
|
||||||
|
{
|
||||||
|
return $this->phone_mobile;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -343,7 +343,11 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
->setORName($req->request->get('or_name'))
|
->setORName($req->request->get('or_name'))
|
||||||
->setPromoDetail($req->request->get('promo_detail'))
|
->setPromoDetail($req->request->get('promo_detail'))
|
||||||
->setModeOfPayment($req->request->get('mode_of_payment'))
|
->setModeOfPayment($req->request->get('mode_of_payment'))
|
||||||
->setLandmark($req->request->get('landmark'));
|
->setLandmark($req->request->get('landmark'))
|
||||||
|
->setFirstName($cust_vehicle->getCustomer()->getFirstName())
|
||||||
|
->setLastName($cust_vehicle->getCustomer()->getLastName())
|
||||||
|
->setPhoneMobile($cust_vehicle->getCustomer()->getPhoneMobile())
|
||||||
|
->setPlateNumber($cust_vehicle->getPlateNumber());
|
||||||
|
|
||||||
// check if user is null, meaning call to create came from API
|
// check if user is null, meaning call to create came from API
|
||||||
if ($user != null)
|
if ($user != null)
|
||||||
|
|
@ -2611,11 +2615,17 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
case 'fulfill':
|
case 'fulfill':
|
||||||
if (isset($datatable['query']['data-rows-search']))
|
if (isset($datatable['query']['data-rows-search']))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
$query->innerJoin('q.cus_vehicle', 'cv')
|
$query->innerJoin('q.cus_vehicle', 'cv')
|
||||||
->innerJoin('q.customer', 'c')
|
->innerJoin('q.customer', 'c')
|
||||||
->where('cv.plate_number like :filter')
|
->where('cv.plate_number like :filter')
|
||||||
->orWhere('c.phone_mobile like :filter')
|
->orWhere('c.phone_mobile like :filter')
|
||||||
->orWhere('c.first_name like :filter or c.last_name like :filter')
|
->orWhere('c.first_name like :filter or c.last_name like :filter')
|
||||||
|
->setParameter('filter', $datatable['query']['data-rows-search'] . '%'); */
|
||||||
|
$query->where('q.plate_number like :filter')
|
||||||
|
->orWhere('q.phone_mobile like :filter')
|
||||||
|
->orWhere('q.first_name like :filter')
|
||||||
|
->orWhere('q.last_name like :filter')
|
||||||
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
||||||
}
|
}
|
||||||
if (isset($datatable['query']['rider']))
|
if (isset($datatable['query']['rider']))
|
||||||
|
|
@ -2652,12 +2662,21 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
case 'open':
|
case 'open':
|
||||||
if (isset($datatable['query']['data-rows-search']))
|
if (isset($datatable['query']['data-rows-search']))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
$query->innerJoin('q.cus_vehicle', 'cv')
|
$query->innerJoin('q.cus_vehicle', 'cv')
|
||||||
->innerJoin('q.customer', 'c')
|
->innerJoin('q.customer', 'c')
|
||||||
->where('q.status IN (:statuses)')
|
->where('q.status IN (:statuses)')
|
||||||
->andWhere('cv.plate_number like :filter or c.first_name like :filter or c.last_name like :filter or c.phone_mobile like :filter')
|
->andWhere('cv.plate_number like :filter or c.first_name like :filter or c.last_name like :filter or c.phone_mobile like :filter')
|
||||||
->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY)
|
->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY)
|
||||||
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
||||||
|
*/
|
||||||
|
$query->where('q.plate_number like :filter')
|
||||||
|
->orWhere('q.phone_mobile like :filter')
|
||||||
|
->orWhere('q.first_name like :filter')
|
||||||
|
->orWhere('q.last_name like :filter')
|
||||||
|
->orWhere('q.status IN (:statuses)')
|
||||||
|
->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY)
|
||||||
|
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -2687,12 +2706,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
case 'all':
|
case 'all':
|
||||||
if (isset($datatable['query']['data-rows-search']))
|
if (isset($datatable['query']['data-rows-search']))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
$query->innerJoin('q.cus_vehicle', 'cv')
|
$query->innerJoin('q.cus_vehicle', 'cv')
|
||||||
->innerJoin('q.customer', 'c')
|
->innerJoin('q.customer', 'c')
|
||||||
->where('cv.plate_number like :filter')
|
->where('cv.plate_number like :filter')
|
||||||
->orWhere('c.phone_mobile like :filter')
|
->orWhere('c.phone_mobile like :filter')
|
||||||
->orWhere('c.first_name like :filter or c.last_name like :filter')
|
->orWhere('c.first_name like :filter or c.last_name like :filter')
|
||||||
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
||||||
|
*/
|
||||||
|
$query->where('q.plate_number like :filter')
|
||||||
|
->orWhere('q.phone_mobile like :filter')
|
||||||
|
->orWhere('q.first_name like :filter')
|
||||||
|
->orWhere('q.last_name like :filter')
|
||||||
|
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
||||||
}
|
}
|
||||||
if (isset($datatable['query']['rider']))
|
if (isset($datatable['query']['rider']))
|
||||||
{
|
{
|
||||||
|
|
@ -2717,12 +2743,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
case 'hub_view_all':
|
case 'hub_view_all':
|
||||||
if (isset($datatable['query']['data-rows-search']))
|
if (isset($datatable['query']['data-rows-search']))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
$query->innerJoin('q.cus_vehicle', 'cv')
|
$query->innerJoin('q.cus_vehicle', 'cv')
|
||||||
->innerJoin('q.customer', 'c')
|
->innerJoin('q.customer', 'c')
|
||||||
->where('cv.plate_number like :filter')
|
->where('cv.plate_number like :filter')
|
||||||
->orWhere('c.phone_mobile like :filter')
|
->orWhere('c.phone_mobile like :filter')
|
||||||
->orWhere('c.first_name like :filter or c.last_name like :filter')
|
->orWhere('c.first_name like :filter or c.last_name like :filter')
|
||||||
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
||||||
|
*/
|
||||||
|
$query->where('q.plate_number like :filter')
|
||||||
|
->orWhere('q.phone_mobile like :filter')
|
||||||
|
->orWhere('q.first_name like :filter')
|
||||||
|
->orWhere('q.last_name like :filter')
|
||||||
|
->setParameter('filter', $datatable['query']['data-rows-search'] . '%');
|
||||||
}
|
}
|
||||||
if (isset($datatable['query']['hub']))
|
if (isset($datatable['query']['hub']))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue