From 29a838b1a8910c6a2226fd0dca780c404094f140 Mon Sep 17 00:00:00 2001 From: Ramon Gutierrez Date: Tue, 30 Jan 2018 22:05:32 +0800 Subject: [PATCH] Change destination marker image, add backend functionality for job order processing stage --- public/assets/images/icon-destination.png | Bin 1698 -> 1773 bytes src/Controller/JobOrderController.php | 76 ++++++++++++++++++---- src/Entity/JobOrder.php | 2 + templates/job-order/form.html.twig | 12 ++-- 4 files changed, 70 insertions(+), 20 deletions(-) diff --git a/public/assets/images/icon-destination.png b/public/assets/images/icon-destination.png index 2ef2fdffcd691d721e14b9d5107bfe5e694c45a6..ab52f86fd8c9d91585c0f3ff39b441c9afc81745 100644 GIT binary patch delta 1412 zcmV-~1$+9U4ebrEdjWr4NklcNv@DY)3J zXeubtizg2v)Qcc`@GA7=A5gINAR|~N|HZtiGcAt6Yoyq%t=llGe6$+5gPChydoCi(-Ujlz`RBDI+9`^pZOP`Lk zZZOhayO$43)#_8WQYBnpI}>hf1O|Nx6%at(RkHO)?M?1p%*c1{P985;$FU-m$EpAg zQ9&FwBZ{CH6j3m$h$=?G?qSiQz%7L9>zFuZb7LLgszI@;m=uVf#_MEmR4K|V&ve$; z-tVlhodCW9UbBA+B8sZBOA)6O6x5lh?7=Jx0au%v{uOu{yjw})OA4UeYTYgYr+|~d zED!;|0}H@aU~`mp3jt?=<<{+^z-gd)WOBNND9f#u0bT*lmV)5ka!|sE0hB0?>4uwx zQS?W%QNIYhJ-@Jcb2sbe#HasXmY#iv>np9Lu^@P)6NZ0Z%uY_t0bE~ceN?u=i}zH= z2?Cp#Wol;%L{Y?Qx5Ij;v!ZYgI6uFzc*iu-Y}6ktB%lPU0LP{(Re<{gRe$cG>1vgV zH3X^zfJL!@)g<7I8AGj7<>Lgzn!Eb}fhP`>%GK4) zZc#p`gIcv`egO$%ihu(tZdQ}C1KNsEE00ktR|w;1wi8FQn{f;Xff1@Uz>09KC~$re zn;Antr!f%nhYA0RHHI;>y=UzUxOCNFGh@$aUPXVFKBt*$^QySQQbC@EG;@h$H=I7s zZaxb(dt4|uZ$Lq2Zl_J8K@KD7>-U|xtXZa68Wz-c*X|2*Su-@`Z*CaV%#%XRG7HLP zHn5wvCJpdTbA^JFlr}lXe!LS)>aM?2kb!*ymj#n%GCiO5Kd+eMRbqffhii#`J+iZ9cxF?V}EwL&s&iv50^@%+46rFlciF!b=MM!NYc$afZ`{L0*9;rJUEQ? zHU9^|#kpE-B^?~*YPD71yW}J9UcPm6=0>;s!i{eC<#B6|-&d({q+F)t|BpDdK&@1M>@ue*qVO3(ZFT)Q|1=d$x2IgFJu$^9zd`z}N1RE5$HpeMIqQneD+8)gH!F>HzQzQXt4DyZn)4-V@CNiux&zPGg} z6GT0ceXyfSu>nN}%dfs@D!Zkl=H4=0G2k+w)cDrK|3;7lLM8X~ZloaQ1RxGI28cym zo->k@#Krx{s(Z?DP}FbY3Aj(b`QaMC#~70|tRl&r2x=r@*o~71Ao;8gDgObi_TMs0 SaX!xg0000apOk;x^&fH#$3G)lg9XU%5kqo<#T zuAb?x?d->F(z|)kL)Yu7dG)XNSye&-^xfg-4*;it=YXGp_a=X;kF+*Ae(vnIBgqX$ z8nt=)0(jZIp8x^_ZzzBQ5`U0EcSR9U5Ydr^nvq9tj$Qy5tL#eJHG^URBZ^VQq8JoW zMG%Z?{A~+Divl+f(7n5yv@aMHtSVN)A{YhHctTbc3mD{~0Cxg72iykE0Ph-&un>dO zSZh`x(3ocuzK(xxmWB9Sb!z%5a4hyJb-#d{_^pN8CEy5f7&rj*fxn40egWu>BDWB5 zR+a0E3;ThiK;zM==>=k*0p0>W1RlS~@N13Q>}lYW`h4@|X5`BHUA9h_>aTFEwQv!5 z7Wnb8y;E}l*IEl-0im$=`o00v`jX>hsNY(@3K>`&1#| zeyJbhuh!xsuow9Ai9J&X5#?%Y@iOrAzKJrEfTfiA_5;ms~WVNx8oV6ps z<$+BDUaOk){n4kw&C>TVKcJ+|awBE(MiwEF^T5dmCuCRMXPC`WFx0PX<^7r12?SJWI@La;x*WboeTWwvYW2%WeaDR;YF{-uim)1?yo$Hu6ZN=~!Jov$QI z<;u3y{}!_o_m)&lW|gl49|11{lXFwkWndC`26!7dr_j6A>+$RIGR@W!SGpZKq8Jg3 z7!VL+5F>O`^=L5xMY3xsX5b;81E=Sz)y03=#_ zS5{WIva-T%YncoJ#*HBY?t~!=Ln~+(vY%_edYtcX+!*ZVj?T;+%*4M{Svng=#?O2+ z_|mA&9wFA~abgYo6ar^~_Y2Wntf>?kAr2e)p_knfl278Maex$e5UXn!UiJBA8~E8hxl{}|KU^l7bWtVQq{h)* zJd54oM|)ztG;XcSP3n~$nNhji&CvE}&b5WqNkVd8;4D&fZQt7n6{Ikdg7 z-Vn^_#yF%x!09TpbeeMr#0#5)Hf(>%F1INaB$`Y086@#lqeqrojL!vLg<=iaLNEp; z7!b|InXQPu5C5?~Nsi_Q?j@j_N^6o*si0f9d@RQ2a`N0TbY#!0Rwsm=ZkB8KTym*3 z^f(y;-&!Wvo`9kz-h-(#M{(wu0FuO9c?c>LS6jN<4Wa~W43NwLO41fh-}o_%D0bwL vn<4@D+BLpHgyaz;U<6IIMPlCI8Ik@6F3F|BKF=1600000NkvXXu0mjfDw>3m diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index c9e7eeef..8b83acd6 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -47,7 +47,7 @@ class JobOrderController extends BaseController return $this->render('job-order/form.html.twig', $params); } - public function incomingSubmit(Request $req) + public function incomingSubmit(Request $req, ValidatorInterface $validator) { $this->denyAccessUnlessGranted('jo_in.list', null, 'No access.'); @@ -93,20 +93,16 @@ class JobOrderController extends BaseController ->setDeliveryInstructions($req->request->get('delivery_instructions')) ->setAgentNotes($req->request->get('agent_notes')) ->setDeliveryAddress($req->request->get('delivery_address')); + + // validate + $errors = $validator->validate($obj); + + // add errors to list + foreach ($errors as $error) { + $error_array[$error->getPropertyPath()] = $error->getMessage(); + } } - // TODO: Validation - - /* - // validate - $errors = $validator->validate($obj); - - // add errors to list - foreach ($errors as $error) { - $error_array[$error->getPropertyPath()] = $error->getMessage(); - } - */ - // check if any errors were found if (!empty($error_array)) { // return validation failure response @@ -314,7 +310,59 @@ class JobOrderController extends BaseController error_log(print_r($req->request->all(), true)); - // TODO: validation and saving of updated job order + // check if lat and lng are provided + 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.'; + } + + // check if outlet is set + if (empty($req->request->get('outlet'))) { + $error_array['outlet'] = 'No outlet selected.'; + } else { + // get outlet + $outlet = $em->getRepository(Outlet::class)->find($req->request->get('outlet')); + + if (empty($outlet)) { + $error_array['outlet'] = 'Invalid outlet specified.'; + } + } + + if (empty($error_array)) { + // coordinates + $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); + + // set and save values + $obj->setDateSchedule(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_schedule_date') . " " . $req->request->get('date_schedule_time'))) + ->setCoordinates($point) + ->setAdvanceOrder($req->request->get('flag_advance') ?? false) + ->setServiceType($req->request->get('service_type')) + ->setSource('web') + ->setStatus($req->request->get('status')) + ->setDeliveryInstructions($req->request->get('delivery_instructions')) + ->setAgentNotes($req->request->get('agent_notes')) + ->setDeliveryAddress($req->request->get('delivery_address')) + ->setOutlet($outlet); + + // validate + $errors = $validator->validate($obj); + + // add errors to list + foreach ($errors as $error) { + $error_array[$error->getPropertyPath()] = $error->getMessage(); + } + } + + // check if any errors were found + if (!empty($error_array)) { + // return validation failure response + return $this->json([ + 'success' => false, + 'errors' => $error_array + ], 422); + } + + // validated! save the entity + $em->flush(); // return successful response return $this->json([ diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php index 578741ba..1b30ef9c 100644 --- a/src/Entity/JobOrder.php +++ b/src/Entity/JobOrder.php @@ -77,6 +77,7 @@ class JobOrder /** * @ORM\ManyToOne(targetEntity="Customer", inversedBy="job_orders") * @ORM\JoinColumn(name="customer_id", referencedColumnName="id") + * Assert\NotBlank() */ protected $customer; @@ -84,6 +85,7 @@ class JobOrder /** * @ORM\ManyToOne(targetEntity="CustomerVehicle", inversedBy="job_orders") * @ORM\JoinColumn(name="cvehicle_id", referencedColumnName="id") + * Assert\NotBlank() */ protected $cus_vehicle; diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index 8bd64bdc..e5367bb8 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -160,13 +160,13 @@
- +
- + @@ -176,7 +176,7 @@
- + @@ -353,7 +353,7 @@ {% for outlet in outlets %} - + {{ outlet.outlet.getName }} {{ outlet.outlet.getAddress }} {{ outlet.outlet.getContactNumbers }} @@ -823,7 +823,7 @@ $(function() { {% if mode == 'update' %} - var selectedOutlet = false; + var selectedOutlet = '{{ obj.getOutlet ? obj.getOutlet.getID : "" }}'; $("#outlets-table tbody tr").click(function() { var id = $(this).data('id'); @@ -841,7 +841,7 @@ $(function() { $(this).removeClass('m-table__row--primary'); // remove id value - selectedOutlet = false; + selectedOutlet = ''; } }); {% endif %}