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\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
|
||||
|
|
@ -302,6 +306,34 @@ class JobOrder
|
|||
*/
|
||||
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()
|
||||
{
|
||||
$this->date_create = new DateTime();
|
||||
|
|
@ -322,6 +354,8 @@ class JobOrder
|
|||
|
||||
$this->priority = 0;
|
||||
$this->meta = [];
|
||||
|
||||
$this->phone_mobile = '';
|
||||
}
|
||||
|
||||
public function getID()
|
||||
|
|
@ -865,4 +899,58 @@ class JobOrder
|
|||
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'))
|
||||
->setPromoDetail($req->request->get('promo_detail'))
|
||||
->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
|
||||
if ($user != null)
|
||||
|
|
@ -2611,11 +2615,17 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
case 'fulfill':
|
||||
if (isset($datatable['query']['data-rows-search']))
|
||||
{
|
||||
/*
|
||||
$query->innerJoin('q.cus_vehicle', 'cv')
|
||||
->innerJoin('q.customer', 'c')
|
||||
->where('cv.plate_number like :filter')
|
||||
->orWhere('c.phone_mobile 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'] . '%');
|
||||
}
|
||||
if (isset($datatable['query']['rider']))
|
||||
|
|
@ -2652,12 +2662,21 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
case 'open':
|
||||
if (isset($datatable['query']['data-rows-search']))
|
||||
{
|
||||
/*
|
||||
$query->innerJoin('q.cus_vehicle', 'cv')
|
||||
->innerJoin('q.customer', 'c')
|
||||
->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')
|
||||
->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY)
|
||||
->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
|
||||
{
|
||||
|
|
@ -2687,12 +2706,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
case 'all':
|
||||
if (isset($datatable['query']['data-rows-search']))
|
||||
{
|
||||
/*
|
||||
$query->innerJoin('q.cus_vehicle', 'cv')
|
||||
->innerJoin('q.customer', 'c')
|
||||
->where('cv.plate_number like :filter')
|
||||
->orWhere('c.phone_mobile 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'] . '%');
|
||||
}
|
||||
if (isset($datatable['query']['rider']))
|
||||
{
|
||||
|
|
@ -2717,12 +2743,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
case 'hub_view_all':
|
||||
if (isset($datatable['query']['data-rows-search']))
|
||||
{
|
||||
/*
|
||||
$query->innerJoin('q.cus_vehicle', 'cv')
|
||||
->innerJoin('q.customer', 'c')
|
||||
->where('cv.plate_number like :filter')
|
||||
->orWhere('c.phone_mobile 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'] . '%');
|
||||
}
|
||||
if (isset($datatable['query']['hub']))
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue