Add job source to api user. #737
This commit is contained in:
parent
0a2bc1741b
commit
f8da38fd26
7 changed files with 131 additions and 21 deletions
|
|
@ -65,6 +65,13 @@ class User extends BaseUser
|
||||||
*/
|
*/
|
||||||
protected $metadata;
|
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()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
@ -76,6 +83,8 @@ class User extends BaseUser
|
||||||
// set date created
|
// set date created
|
||||||
$this->date_create = new DateTime();
|
$this->date_create = new DateTime();
|
||||||
$this->metadata = [];
|
$this->metadata = [];
|
||||||
|
|
||||||
|
$this->source = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getID()
|
public function getID()
|
||||||
|
|
@ -182,5 +191,17 @@ class User extends BaseUser
|
||||||
{
|
{
|
||||||
return $this->rider;
|
return $this->rider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setSource($source = null)
|
||||||
|
{
|
||||||
|
$this->source = $source;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSource()
|
||||||
|
{
|
||||||
|
return $this->source;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||||
use Catalyst\MenuBundle\Annotation\Menu;
|
use Catalyst\MenuBundle\Annotation\Menu;
|
||||||
|
|
||||||
use App\Entity\Rider;
|
use App\Entity\Rider;
|
||||||
|
use App\Entity\JobOrderSource;
|
||||||
|
|
||||||
class APIUserController extends Controller
|
class APIUserController extends Controller
|
||||||
{
|
{
|
||||||
|
|
@ -138,6 +139,7 @@ class APIUserController extends Controller
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$params['roles'] = $em->getRepository(APIRole::class)->findAll();
|
$params['roles'] = $em->getRepository(APIRole::class)->findAll();
|
||||||
$params['riders'] = $em->getRepository(Rider::class)->findBy([], ['first_name' => 'asc']);
|
$params['riders'] = $em->getRepository(Rider::class)->findBy([], ['first_name' => 'asc']);
|
||||||
|
$params['sources'] = $em->getRepository(JobOrderSource::class)->findBy([], ['name' => 'asc']);
|
||||||
|
|
||||||
// response
|
// response
|
||||||
return $this->render('api-user/form.html.twig', $params);
|
return $this->render('api-user/form.html.twig', $params);
|
||||||
|
|
@ -166,6 +168,15 @@ class APIUserController extends Controller
|
||||||
->setMetadata($meta);
|
->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
|
// 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)
|
||||||
|
|
@ -239,6 +250,7 @@ class APIUserController extends Controller
|
||||||
// get roles
|
// get roles
|
||||||
$params['roles'] = $em->getRepository(APIRole::class)->findAll();
|
$params['roles'] = $em->getRepository(APIRole::class)->findAll();
|
||||||
$params['riders'] = $em->getRepository(Rider::class)->findBy([], ['first_name' => 'asc']);
|
$params['riders'] = $em->getRepository(Rider::class)->findBy([], ['first_name' => 'asc']);
|
||||||
|
$params['sources'] = $em->getRepository(JobOrderSource::class)->findBy([], ['name' => 'asc']);
|
||||||
|
|
||||||
$params['obj'] = $obj;
|
$params['obj'] = $obj;
|
||||||
|
|
||||||
|
|
@ -260,15 +272,34 @@ class APIUserController extends Controller
|
||||||
|
|
||||||
// set and save values
|
// set and save values
|
||||||
// metadata
|
// metadata
|
||||||
$rider_id = $req->request->get('rider_id');
|
$rider_id = $req->request->get('rider_id', '');
|
||||||
$rider = $em->getRepository(Rider::class)->find($rider_id);
|
$rider = null;
|
||||||
// TODO: check for null rider
|
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 = $obj->getMetadata();
|
||||||
$meta['rider_id'] = $rider_id;
|
$meta['rider_id'] = $rider_id;
|
||||||
|
|
||||||
// set api user in rider
|
// source, if any
|
||||||
$rider->setAPIUser($obj);
|
$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'))
|
$obj->setName($req->request->get('name'))
|
||||||
->setEnabled($req->request->get('enabled') ? true : false)
|
->setEnabled($req->request->get('enabled') ? true : false)
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ class JobOrderSourceController extends Controller
|
||||||
foreach ($obj_rows as $orow) {
|
foreach ($obj_rows as $orow) {
|
||||||
// add row data
|
// add row data
|
||||||
$row['id'] = $orow->getID();
|
$row['id'] = $orow->getID();
|
||||||
$row['source_id'] = $orow->getSourceID();
|
$row['name'] = $orow->getName();
|
||||||
|
|
||||||
// add row metadata
|
// add row metadata
|
||||||
$row['meta'] = [
|
$row['meta'] = [
|
||||||
|
|
@ -240,14 +240,15 @@ class JobOrderSourceController extends Controller
|
||||||
protected function setObject(JobOrderSource $obj, Request $req)
|
protected function setObject(JobOrderSource $obj, Request $req)
|
||||||
{
|
{
|
||||||
// set and save values
|
// 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'));
|
->setCallbackURL($req->request->get('callback_url'));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setQueryFilters($datatable, QueryBuilder $query)
|
protected function setQueryFilters($datatable, QueryBuilder $query)
|
||||||
{
|
{
|
||||||
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
|
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'] . '%');
|
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,9 @@
|
||||||
namespace App\Entity;
|
namespace App\Entity;
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
|
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -24,7 +27,13 @@ class JobOrderSource
|
||||||
* @ORM\Column(type="string", length=80, unique=true)
|
* @ORM\Column(type="string", length=80, unique=true)
|
||||||
* @Assert\NotBlank()
|
* @Assert\NotBlank()
|
||||||
*/
|
*/
|
||||||
protected $source_id;
|
protected $code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(type="string", length=80)
|
||||||
|
* @Assert\NotBlank()
|
||||||
|
*/
|
||||||
|
protected $name;
|
||||||
|
|
||||||
// callback URL
|
// callback URL
|
||||||
/**
|
/**
|
||||||
|
|
@ -32,10 +41,19 @@ class JobOrderSource
|
||||||
*/
|
*/
|
||||||
protected $callback_url;
|
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()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->source_id = '';
|
$this->code = '';
|
||||||
|
$this->name = '';
|
||||||
$this->callback_url = '';
|
$this->callback_url = '';
|
||||||
|
|
||||||
|
$this->api_users = new ArrayCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getID()
|
public function getID()
|
||||||
|
|
@ -43,15 +61,26 @@ class JobOrderSource
|
||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setSourceID($source_id)
|
public function setCode($code)
|
||||||
{
|
{
|
||||||
$this->source_id = $source_id;
|
$this->code = $code;
|
||||||
return $this;
|
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)
|
public function setCallbackURL($callback_url)
|
||||||
|
|
@ -64,5 +93,10 @@ class JobOrderSource
|
||||||
{
|
{
|
||||||
return $this->callback_url;
|
return $this->callback_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getApiUsers()
|
||||||
|
{
|
||||||
|
return $this->api_users;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,20 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group m-form__group row no-border">
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<label data-field="source">
|
||||||
|
Source
|
||||||
|
</label>
|
||||||
|
<select class="form-control m-input" id="source_id" name="source_id">
|
||||||
|
<option value=""></option>
|
||||||
|
{% for source in sources %}
|
||||||
|
<option value="{{ source.getID }}"{{ source.getID == obj.getSource.getID|default(0) ? ' selected' }}>{{ source.getName }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
<div class="form-control-feedback hide" data-field="source_id"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group m-form__group row no-border">
|
<div class="form-group m-form__group row no-border">
|
||||||
<div class="col-lg-8">
|
<div class="col-lg-8">
|
||||||
<label data-field="brand">
|
<label data-field="brand">
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
<h3 class="m-portlet__head-text">
|
<h3 class="m-portlet__head-text">
|
||||||
{% if mode == 'update' %}
|
{% if mode == 'update' %}
|
||||||
Edit Job Order Source
|
Edit Job Order Source
|
||||||
<small>{{ jo_source.getSourceID() }}</small>
|
<small>{{ jo_source.getName }}</small>
|
||||||
{% else %}
|
{% else %}
|
||||||
New Job Order Source
|
New Job Order Source
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
@ -35,12 +35,21 @@
|
||||||
<form id="row-form" class="m-form m-form--fit m-form--label-align-right m-form--group-seperator-dashed" method="post" action="{{ mode == 'update' ? url('job_order_source_update_submit', {'id': jo_source.getId()}) : url('job_order_source_add_submit') }}">
|
<form id="row-form" class="m-form m-form--fit m-form--label-align-right m-form--group-seperator-dashed" method="post" action="{{ mode == 'update' ? url('job_order_source_update_submit', {'id': jo_source.getId()}) : url('job_order_source_add_submit') }}">
|
||||||
<div class="m-portlet__body">
|
<div class="m-portlet__body">
|
||||||
<div class="form-group m-form__group row no-border">
|
<div class="form-group m-form__group row no-border">
|
||||||
<label class="col-lg-3 col-form-label" data-field="source_id">
|
<label class="col-lg-3 col-form-label" data-field="code">
|
||||||
Source ID:
|
Code:
|
||||||
</label>
|
</label>
|
||||||
<div class="col-lg-9">
|
<div class="col-lg-9">
|
||||||
<input type="text" name="source_id" class="form-control m-input" value="{{ jo_source.getSourceID() }}">
|
<input type="text" name="code" class="form-control m-input" value="{{ jo_source.getCode() }}">
|
||||||
<div class="form-control-feedback hide" data-field="source_id"></div>
|
<div class="form-control-feedback hide" data-field="code"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group m-form__group row no-border">
|
||||||
|
<label class="col-lg-3 col-form-label" data-field="name">
|
||||||
|
Name:
|
||||||
|
</label>
|
||||||
|
<div class="col-lg-9">
|
||||||
|
<input type="text" name="name" class="form-control m-input" value="{{ jo_source.getName() }}">
|
||||||
|
<div class="form-control-feedback hide" data-field="name"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group m-form__group row">
|
<div class="form-group m-form__group row">
|
||||||
|
|
|
||||||
|
|
@ -84,8 +84,8 @@ $(function() {
|
||||||
width: 30
|
width: 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'source_id',
|
field: 'name',
|
||||||
title: 'Source ID'
|
title: 'Name'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'Actions',
|
field: 'Actions',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue