Link api user to rider entity directly without need for metadata #617

This commit is contained in:
Kendrick Chan 2021-08-21 13:11:40 +08:00
parent 4a9de8e465
commit 7483c35306
4 changed files with 39 additions and 5 deletions

View file

@ -53,6 +53,13 @@ class User extends BaseUser
*/ */
protected $roles; protected $roles;
// rider linked to user
// NOTE: we're directly linking this only because we don't have to care about other apps using this library
/**
* @ORM\OneToOne(targetEntity="App\Entity\Rider", mappedBy="api_user")
*/
protected $rider;
/** /**
* @ORM\Column(type="json") * @ORM\Column(type="json")
*/ */
@ -164,5 +171,16 @@ class User extends BaseUser
{ {
return md5(uniqid($prefix, true)); return md5(uniqid($prefix, true));
} }
public function setRider($rider)
{
$this->rider = $rider;
return $this;
}
public function getRider()
{
return $this->rider;
}
} }

View file

@ -153,12 +153,20 @@ class APIUserController extends Controller
$obj = new APIUser(); $obj = new APIUser();
// metadata // metadata
$meta = ['rider_id' => $req->request->get('rider_id')]; $rider_id = $req->request->get('rider_id');
$rider = $em->getRepository(Rider::class)->find($rider_id);
// TODO: check for null rider
$meta = ['rider_id' => $rider_id];
// set api user in rider
$rider->setAPIUser($obj);
// set and save values // set and save values
$obj->setName($req->request->get('name')) $obj->setName($req->request->get('name'))
->setEnabled($req->request->get('enabled') ? true : false) ->setEnabled($req->request->get('enabled') ? true : false)
->setMetadata($meta) ->setMetadata($meta)
->setRider($rider)
->clearRoles(); ->clearRoles();
// set roles // set roles
@ -249,12 +257,21 @@ class APIUserController extends Controller
throw $this->createNotFoundException('The item does not exist'); throw $this->createNotFoundException('The item does not exist');
// set and save values // 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
$meta = $obj->getMetadata(); $meta = $obj->getMetadata();
$meta['rider_id'] = $req->request->get('rider_id'); $meta['rider_id'] = $rider_id;
// set api user in rider
$rider->setAPIUser($obj);
$obj->setName($req->request->get('name')) $obj->setName($req->request->get('name'))
->setEnabled($req->request->get('enabled') ? true : false) ->setEnabled($req->request->get('enabled') ? true : false)
->setMetadata($meta) ->setMetadata($meta)
->setRider($rider)
->clearRoles(); ->clearRoles();
// set roles // set roles

View file

@ -131,7 +131,7 @@ class Rider
protected $current_job_order; protected $current_job_order;
/** /**
* @ORM\OneToOne(targetEntity="Catalyst\APIBundle\Entity\User") * @ORM\OneToOne(targetEntity="Catalyst\APIBundle\Entity\User", inversedBy="rider")
* @ORM\JoinColumn(name="api_user_id", referencedColumnName="id", nullable=true) * @ORM\JoinColumn(name="api_user_id", referencedColumnName="id", nullable=true)
*/ */
protected $api_user; protected $api_user;

View file

@ -52,9 +52,8 @@
</label> </label>
<select class="form-control m-input" id="rider_id" name="rider_id"> <select class="form-control m-input" id="rider_id" name="rider_id">
<option value=""></option> <option value=""></option>
{% set meta = obj.getMetadata %}
{% for rider in riders %} {% for rider in riders %}
<option value="{{ rider.getID }}"{{ rider.getID == meta.rider_id|default(0) ? ' selected' }}>{{ rider.getFirstName ~ ' ' ~ rider.getLastName }}</option> <option value="{{ rider.getID }}"{{ rider.getID == obj.getRider.getID|default(0) ? ' selected' }}>{{ rider.getFirstName ~ ' ' ~ rider.getLastName }}</option>
{% endfor %} {% endfor %}
</select> </select>
<div class="form-control-feedback hide" data-field="brand"></div> <div class="form-control-feedback hide" data-field="brand"></div>