From 56a4fc7a9dc3d972aa3b5c4491810dd0b7779cc3 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Tue, 16 Jan 2018 02:24:31 +0800 Subject: [PATCH] Fix associations to job order --- src/Entity/Customer.php | 7 ++++ src/Entity/CustomerVehicle.php | 6 +++ src/Entity/JobOrder.php | 69 +++++++++++++++++++++++++++++++++- src/Entity/Outlet.php | 7 ++++ src/Entity/Rider.php | 12 ++++++ src/Entity/User.php | 7 ++++ src/Ramcar/ServiceType.php | 33 ++++++++++++++++ 7 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 src/Ramcar/ServiceType.php diff --git a/src/Entity/Customer.php b/src/Entity/Customer.php index 6094bb31..d968691f 100644 --- a/src/Entity/Customer.php +++ b/src/Entity/Customer.php @@ -52,6 +52,12 @@ class Customer */ protected $vehicles; + // job orders made by customer + /** + * @ORM\OneToMany(targetEntity="JobOrder", mappedBy="customer") + */ + protected $job_orders; + // if any of their mobile numbers have been confirmed /** * @ORM\Column(type="boolean") @@ -63,6 +69,7 @@ class Customer $this->numbers = new ArrayCollection(); $this->sessions = new ArrayCollection(); $this->vehicles = new ArrayCollection(); + $this->job_orders = new ArrayCollection(); } public function getID() diff --git a/src/Entity/CustomerVehicle.php b/src/Entity/CustomerVehicle.php index fe1ab9bd..42f352c1 100644 --- a/src/Entity/CustomerVehicle.php +++ b/src/Entity/CustomerVehicle.php @@ -98,6 +98,12 @@ class CustomerVehicle */ protected $curr_battery; + // job orders that involve customer vehicle + /** + * @ORM\OneToMany(targetEntity="JobOrder", mappedBy="cus_vehicle") + */ + protected $job_orders; + // vehicle using motolite battery? /** * @ORM\Column(type="boolean") diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php index c8cdadb8..634588eb 100644 --- a/src/Entity/JobOrder.php +++ b/src/Entity/JobOrder.php @@ -6,6 +6,8 @@ use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; use Symfony\Component\Validator\Constraints as Assert; +use DateTime; + /** * @ORM\Entity * @ORM\Table(name="job_order") @@ -21,24 +23,89 @@ class JobOrder protected $id; // date job order was created + /** + * @ORM\Column(type="datetime") + */ protected $date_create; // date and time of schedule // defaults to current date / time - protected $schedule; + /** + * @ORM\Column(type="datetime") + */ + protected $date_schedule; + + // date that the job order was fulfilled / delivered + /** + * @ORM\Column(type="datetime", nullable=true) + */ + protected $date_fulfill; + + // coordinates of the customer vehicle that needs service + /** + * @ORM\Column(type="point") + */ + protected $coordinates; // is it an advanced order (future date) + /** + * @ORM\Column(type="boolean") + */ protected $flag_advance; // user that created the job order + /** + * @ORM\ManyToOne(targetEntity="User", inversedBy="job_orders") + * @ORM\JoinColumn(name="user_id", referencedColumnName="id") + */ protected $created_by; // service type + /** + * @ORM\Column(type="string", length=12) + */ protected $service_type; // customer that requested job order + /** + * @ORM\ManyToOne(targetEntity="Customer", inversedBy="job_orders") + * @ORM\JoinColumn(name="customer_id", referencedColumnName="id") + */ protected $customer; // customer vehicle that needs servicing + /** + * @ORM\ManyToOne(targetEntity="CustomerVehicle", inversedBy="job_orders") + * @ORM\JoinColumn(name="cvehicle_id", referencedColumnName="id") + */ protected $cus_vehicle; + + // assigned outlet + /** + * @ORM\ManyToOne(targetEntity="Outlet", inversedBy="job_orders") + * @ORM\JoinColumn(name="outlet_id", referencedColumnName="id") + */ + protected $outlet; + + // assigned rider + /** + * @ORM\ManyToOne(targetEntity="Rider", inversedBy="job_orders") + * @ORM\JoinColumn(name="rider_id", referencedColumnName="id") + */ + protected $rider; + + // where requested job order came from (mobile or web) + /** + * @ORM\Column(type="string", length=10) + */ + protected $source; + + public function __construct() + { + $this->date_create = new DateTime(); + $this->date_schedule = new DateTime(); + + $this->flag_advance = false; + $this->source = 'mobile'; + } } diff --git a/src/Entity/Outlet.php b/src/Entity/Outlet.php index 8b343a30..929b9b35 100644 --- a/src/Entity/Outlet.php +++ b/src/Entity/Outlet.php @@ -60,6 +60,13 @@ class Outlet */ protected $time_close; + // job orders assigned to outlet + /** + * @ORM\OneToMany(targetEntity="JobOrder", mappedBy="outlet") + */ + protected $job_orders; + + public function __construct() { diff --git a/src/Entity/Rider.php b/src/Entity/Rider.php index f3b382fd..34f6fea1 100644 --- a/src/Entity/Rider.php +++ b/src/Entity/Rider.php @@ -5,6 +5,8 @@ namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; +use Doctrine\Common\Collections\ArrayCollection; + /** * @ORM\Entity * @ORM\Table(name="rider") @@ -43,6 +45,16 @@ class Rider */ protected $hub; + /** + * @ORM\OneToMany(targetEntity="JobOrder", mappedBy="rider") + */ + protected $job_orders; + + public function __construct() + { + $this->job_orders = new ArrayCollection(); + } + public function getID() { return $this->id; diff --git a/src/Entity/User.php b/src/Entity/User.php index 1e27f95e..f8f03e7c 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -67,9 +67,16 @@ class User implements AdvancedUserInterface, Serializable */ protected $email; + // job orders made by this user + /** + * @ORM\OneToMany(targetEntity="JobOrder", mappedBy="created_by") + */ + protected $job_orders; + public function __construct() { $this->roles = new ArrayCollection(); + $this->job_orders = new ArrayCollection(); $this->enabled = true; } diff --git a/src/Ramcar/ServiceType.php b/src/Ramcar/ServiceType.php new file mode 100644 index 00000000..54d83a5e --- /dev/null +++ b/src/Ramcar/ServiceType.php @@ -0,0 +1,33 @@ + 'Battery Replacement', + 'tire' => 'Tire Repair', + 'overheat' => 'Overheat Assistance', + 'fuel' => 'Emergency Refuel', + ]; + + + static public function getServiceTypes() + { + return self::COLLECTION; + } + + static public function validate($type_text) + { + if (isset(self::COLLECTION[$type_text])) + return true; + + return false; + } + +}