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;
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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'] . '%');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,20 @@
|
|||
</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="col-lg-8">
|
||||
<label data-field="brand">
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<h3 class="m-portlet__head-text">
|
||||
{% if mode == 'update' %}
|
||||
Edit Job Order Source
|
||||
<small>{{ jo_source.getSourceID() }}</small>
|
||||
<small>{{ jo_source.getName }}</small>
|
||||
{% else %}
|
||||
New Job Order Source
|
||||
{% 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') }}">
|
||||
<div class="m-portlet__body">
|
||||
<div class="form-group m-form__group row no-border">
|
||||
<label class="col-lg-3 col-form-label" data-field="source_id">
|
||||
Source ID:
|
||||
<label class="col-lg-3 col-form-label" data-field="code">
|
||||
Code:
|
||||
</label>
|
||||
<div class="col-lg-9">
|
||||
<input type="text" name="source_id" class="form-control m-input" value="{{ jo_source.getSourceID() }}">
|
||||
<div class="form-control-feedback hide" data-field="source_id"></div>
|
||||
<input type="text" name="code" class="form-control m-input" value="{{ jo_source.getCode() }}">
|
||||
<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 class="form-group m-form__group row">
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ $(function() {
|
|||
width: 30
|
||||
},
|
||||
{
|
||||
field: 'source_id',
|
||||
title: 'Source ID'
|
||||
field: 'name',
|
||||
title: 'Name'
|
||||
},
|
||||
{
|
||||
field: 'Actions',
|
||||
|
|
|
|||
Loading…
Reference in a new issue