68 lines
2.8 KiB
PHP
68 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Service;
|
|
|
|
use App\Entity\LegacyJobOrder;
|
|
use App\Entity\JobOrder;
|
|
use App\Entity\Warranty;
|
|
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
|
|
define("SEARCH_MAX_RESULTS", "20");
|
|
|
|
class GeneralSearch
|
|
{
|
|
protected $em;
|
|
|
|
public function __construct(EntityManagerInterface $em)
|
|
{
|
|
$this->em = $em;
|
|
}
|
|
|
|
public function search($search_term)
|
|
{
|
|
// query legacy job orders for plate number, name (first, middle, last), phone number(mobile, landline)
|
|
$legacy_job_orders = $this->em->createQuery('SELECT l FROM App\Entity\LegacyJobOrder l
|
|
WHERE l.plate_number LIKE :search_term
|
|
OR l.cust_mobile LIKE :search_term
|
|
OR l.cust_landline LIKE :search_term
|
|
OR l.cust_name LIKE :search_term
|
|
OR l.cust_last_name LIKE :search_term
|
|
OR l.cust_middle_name LIKE :search_term
|
|
OR l.cust_first_name LIKE :search_term
|
|
OR l.cust_contact LIKE :search_term')
|
|
->setParameter('search_term', "%" . $search_term . "%")
|
|
->setMaxResults(SEARCH_MAX_RESULTS)
|
|
->getResult();
|
|
|
|
// query current job orders for plate number, name(first, last), phone number(mobile, landline, office, fax)
|
|
// join with customervehicle for plate number. join with customer for name and number
|
|
$job_orders = $this->em->createQuery('SELECT jo FROM App\Entity\JobOrder jo
|
|
JOIN jo.cus_vehicle cv
|
|
JOIN jo.customer c
|
|
WHERE cv.plate_number LIKE :search_term
|
|
OR c.first_name LIKE :search_term
|
|
OR c.last_name LIKE :search_term
|
|
OR c.phone_mobile LIKE :search_term
|
|
OR c.phone_landline LIKE :search_term
|
|
OR c.phone_office LIKE :search_term
|
|
OR c.phone_fax LIKE :search_term')
|
|
->setParameter('search_term', "%" . $search_term . "%")
|
|
->setMaxResults(SEARCH_MAX_RESULTS)
|
|
->getResult();
|
|
|
|
// query warranty for plate number, name(first, last), phone number(mobile)
|
|
$warranties = $this->em->createQuery('SELECT w FROM App\Entity\Warranty w
|
|
WHERE w.plate_number LIKE :search_term
|
|
OR w.first_name LIKE :search_term
|
|
OR w.last_name LIKE :search_term
|
|
OR w.mobile_number LIKE :search_term')
|
|
->setParameter('search_term', "%" . $search_term . "%")
|
|
->setMaxResults(SEARCH_MAX_RESULTS)
|
|
->getResult();
|
|
|
|
$results = array('legacy_job_orders'=>$legacy_job_orders, 'job_orders'=>$job_orders, 'warranties'=>$warranties);
|
|
|
|
return $results;
|
|
}
|
|
}
|