From f8da38fd26e8f6c28debffb3478cee43b4986a94 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 13 Feb 2023 09:00:58 +0000 Subject: [PATCH] Add job source to api user. #737 --- catalyst/api-bundle/Entity/User.php | 21 ++++++++++ src/Controller/APIUserController.php | 41 +++++++++++++++--- src/Controller/JobOrderSourceController.php | 7 ++-- src/Entity/JobOrderSource.php | 46 ++++++++++++++++++--- templates/api-user/form.html.twig | 14 +++++++ templates/job-order-source/form.html.twig | 19 ++++++--- templates/job-order-source/list.html.twig | 4 +- 7 files changed, 131 insertions(+), 21 deletions(-) diff --git a/catalyst/api-bundle/Entity/User.php b/catalyst/api-bundle/Entity/User.php index ff6a7ba8..ccdc4b09 100644 --- a/catalyst/api-bundle/Entity/User.php +++ b/catalyst/api-bundle/Entity/User.php @@ -65,6 +65,13 @@ class User extends BaseUser */ protected $metadata; + // third party job order source linked to api_user + /** + * @ORM\ManyToOne(targetEntity="App\Entity\JobOrderSource", inversedBy="api_users") + * @ORM\JoinColumn(name="source_id", referencedColumnName="id") + */ + protected $source; + public function __construct() { parent::__construct(); @@ -76,6 +83,8 @@ class User extends BaseUser // set date created $this->date_create = new DateTime(); $this->metadata = []; + + $this->source = null; } public function getID() @@ -182,5 +191,17 @@ class User extends BaseUser { return $this->rider; } + + public function setSource($source = null) + { + $this->source = $source; + return $this; + } + + public function getSource() + { + return $this->source; + } + } diff --git a/src/Controller/APIUserController.php b/src/Controller/APIUserController.php index 122d3830..6615e934 100644 --- a/src/Controller/APIUserController.php +++ b/src/Controller/APIUserController.php @@ -15,6 +15,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Catalyst\MenuBundle\Annotation\Menu; use App\Entity\Rider; +use App\Entity\JobOrderSource; class APIUserController extends Controller { @@ -138,6 +139,7 @@ class APIUserController extends Controller $em = $this->getDoctrine()->getManager(); $params['roles'] = $em->getRepository(APIRole::class)->findAll(); $params['riders'] = $em->getRepository(Rider::class)->findBy([], ['first_name' => 'asc']); + $params['sources'] = $em->getRepository(JobOrderSource::class)->findBy([], ['name' => 'asc']); // response return $this->render('api-user/form.html.twig', $params); @@ -166,6 +168,15 @@ class APIUserController extends Controller ->setMetadata($meta); } + // source, if any + $source_id = $req->request->get('source_id', ''); + if (!empty($source_id)) + { + $source = $em->getRepository(JobOrderSource::class)->find($source_id); + if ($source != null) + $obj->setSource($source); + } + // set and save values $obj->setName($req->request->get('name')) ->setEnabled($req->request->get('enabled') ? true : false) @@ -239,6 +250,7 @@ class APIUserController extends Controller // get roles $params['roles'] = $em->getRepository(APIRole::class)->findAll(); $params['riders'] = $em->getRepository(Rider::class)->findBy([], ['first_name' => 'asc']); + $params['sources'] = $em->getRepository(JobOrderSource::class)->findBy([], ['name' => 'asc']); $params['obj'] = $obj; @@ -260,15 +272,34 @@ class APIUserController extends Controller // set and save values // metadata - $rider_id = $req->request->get('rider_id'); - $rider = $em->getRepository(Rider::class)->find($rider_id); - // TODO: check for null rider + $rider_id = $req->request->get('rider_id', ''); + $rider = null; + if (!empty($rider_id)) + { + $rider = $em->getRepository(Rider::class)->find($rider_id); + if ($rider != null) + { + // set api user in rider + $rider->setAPIUser($obj); + } + } $meta = $obj->getMetadata(); $meta['rider_id'] = $rider_id; - // set api user in rider - $rider->setAPIUser($obj); + // source, if any + $source_id = $req->request->get('source_id', ''); + if (!empty($source_id)) + { + $source = $em->getRepository(JobOrderSource::class)->find($source_id); + if ($source != null) + $obj->setSource($source); + } + else + { + // reset source to null, if source was removed from api_user + $obj->setSource(); + } $obj->setName($req->request->get('name')) ->setEnabled($req->request->get('enabled') ? true : false) diff --git a/src/Controller/JobOrderSourceController.php b/src/Controller/JobOrderSourceController.php index 63c06cf5..cb4dbe43 100644 --- a/src/Controller/JobOrderSourceController.php +++ b/src/Controller/JobOrderSourceController.php @@ -88,7 +88,7 @@ class JobOrderSourceController extends Controller foreach ($obj_rows as $orow) { // add row data $row['id'] = $orow->getID(); - $row['source_id'] = $orow->getSourceID(); + $row['name'] = $orow->getName(); // add row metadata $row['meta'] = [ @@ -240,14 +240,15 @@ class JobOrderSourceController extends Controller protected function setObject(JobOrderSource $obj, Request $req) { // set and save values - $obj->setSourceID($req->request->get('source_id')) + $obj->setCode($req->request->get('code')) + ->setName($req->request->get('name')) ->setCallbackURL($req->request->get('callback_url')); } protected function setQueryFilters($datatable, QueryBuilder $query) { if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) { - $query->where('q.source_id LIKE :filter') + $query->where('q.name LIKE :filter') ->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%'); } } diff --git a/src/Entity/JobOrderSource.php b/src/Entity/JobOrderSource.php index c8928874..6137bf09 100644 --- a/src/Entity/JobOrderSource.php +++ b/src/Entity/JobOrderSource.php @@ -3,6 +3,9 @@ namespace App\Entity; use Doctrine\ORM\Mapping as ORM; + +use Doctrine\Common\Collections\ArrayCollection; + use Symfony\Component\Validator\Constraints as Assert; /** @@ -24,7 +27,13 @@ class JobOrderSource * @ORM\Column(type="string", length=80, unique=true) * @Assert\NotBlank() */ - protected $source_id; + protected $code; + + /** + * @ORM\Column(type="string", length=80) + * @Assert\NotBlank() + */ + protected $name; // callback URL /** @@ -32,10 +41,19 @@ class JobOrderSource */ protected $callback_url; + // one job order source can be associated to many api_users + /** + * @ORM\OneToMany(targetEntity="Catalyst\APIBundle\Entity\User", mappedBy="source") + */ + protected $api_users; + public function __construct() { - $this->source_id = ''; + $this->code = ''; + $this->name = ''; $this->callback_url = ''; + + $this->api_users = new ArrayCollection(); } public function getID() @@ -43,15 +61,26 @@ class JobOrderSource return $this->id; } - public function setSourceID($source_id) + public function setCode($code) { - $this->source_id = $source_id; + $this->code = $code; return $this; } - public function getSourceID() + public function getCode() { - return $this->source_id; + return $this->code; + } + + public function setName($name) + { + $this->name = $name; + return $this; + } + + public function getName() + { + return $this->name; } public function setCallbackURL($callback_url) @@ -64,5 +93,10 @@ class JobOrderSource { return $this->callback_url; } + + public function getApiUsers() + { + return $this->api_users; + } } diff --git a/templates/api-user/form.html.twig b/templates/api-user/form.html.twig index 436f5f7b..f04a1fc3 100644 --- a/templates/api-user/form.html.twig +++ b/templates/api-user/form.html.twig @@ -45,6 +45,20 @@ +
+
+ + + +
+