Merge branch 'master' into '13-job-order-reassignment'

# Conflicts:
#   src/Controller/JobOrderController.php
This commit is contained in:
Ramon Gutierrez 2018-02-26 22:36:18 +00:00
commit ea4906d207
7 changed files with 68 additions and 3 deletions

View file

@ -187,8 +187,12 @@ access_keys:
label: Incoming label: Incoming
- id: jo_proc.list - id: jo_proc.list
label: Processing label: Processing
- id: jo_proc.unlock
label: Processing Unlock
- id: jo_assign.list - id: jo_assign.list
label: Assigning label: Assigning
- id: jo_assign.unlock
label: Assigning Unlock
- id: jo_fulfill.list - id: jo_fulfill.list
label: Fulfillment label: Fulfillment
- id: jo_open.list - id: jo_open.list

View file

@ -121,4 +121,14 @@ jo_cancel:
jo_search: jo_search:
path: /job-order/search path: /job-order/search
controller: App\Controller\JobOrderController::getJobOrders controller: App\Controller\JobOrderController::getJobOrders
methods: [GET] methods: [GET]
jo_proc_unlock:
path: /job-order/{id}/unlock/processor
controller: App\Controller\JobOrderController::unlockProcessor
methods: [GET]
jo_assign_unlock:
path: /job-order/{id}/unlock/assignor
controller: App\Controller\JobOrderController::unlockAssignor
methods: [GET]

View file

@ -278,6 +278,7 @@ class JobOrderController extends BaseController
$tier_name = 'Processing'; $tier_name = 'Processing';
$rows_route = 'jo_proc_rows'; $rows_route = 'jo_proc_rows';
$edit_route = 'jo_proc_form'; $edit_route = 'jo_proc_form';
$unlock_route = 'jo_proc_unlock';
$jo_status = JOStatus::PENDING; $jo_status = JOStatus::PENDING;
break; break;
case 'assign': case 'assign':
@ -285,6 +286,7 @@ class JobOrderController extends BaseController
$tier_name = 'Assigning'; $tier_name = 'Assigning';
$rows_route = 'jo_assign_rows'; $rows_route = 'jo_assign_rows';
$edit_route = 'jo_assign_form'; $edit_route = 'jo_assign_form';
$unlock_route = 'jo_assign_unlock';
$jo_status = JOStatus::RIDER_ASSIGN; $jo_status = JOStatus::RIDER_ASSIGN;
break; break;
case 'fulfill': case 'fulfill':
@ -292,6 +294,7 @@ class JobOrderController extends BaseController
$tier_name = 'Fullfillment'; $tier_name = 'Fullfillment';
$rows_route = 'jo_fulfill_rows'; $rows_route = 'jo_fulfill_rows';
$edit_route = 'jo_fulfill_form'; $edit_route = 'jo_fulfill_form';
$unlock_route = '';
$jo_status = [ $jo_status = [
JOStatus::ASSIGNED, JOStatus::ASSIGNED,
JOStatus::IN_PROGRESS JOStatus::IN_PROGRESS
@ -323,6 +326,7 @@ class JobOrderController extends BaseController
'name' => $tier_name, 'name' => $tier_name,
'rows_route' => $rows_route, 'rows_route' => $rows_route,
'edit_route' => $edit_route, 'edit_route' => $edit_route,
'unlock_route' => $unlock_route,
'jo_status' => $jo_status 'jo_status' => $jo_status
]; ];
} }
@ -466,6 +470,9 @@ class JobOrderController extends BaseController
{ {
$row['meta']['update_url'] = $this->generateUrl($tier_params['edit_route'], ['id' => $row['id']]); $row['meta']['update_url'] = $this->generateUrl($tier_params['edit_route'], ['id' => $row['id']]);
} }
if ($tier_params['unlock_route'] != '')
$row['meta']['unlock_url'] = $this->generateUrl($tier_params['unlock_route'], ['id' => $row['id']]);
$rows[] = $row; $rows[] = $row;
} }
@ -1402,4 +1409,39 @@ class JobOrderController extends BaseController
'invoice' => $invoice 'invoice' => $invoice
]); ]);
} }
public function unlockProcessor($id)
{
$this->denyAccessUnlessGranted('jo_proc.unlock', null, 'No access.');
// clear lock
$em = $this->getDoctrine()->getManager();
$jo = $em->getRepository(JobOrder::class)->find($id);
if ($jo == null)
return $this->redirectToRoute('jo_proc');
$jo->setProcessedBy(null);
$em->flush();
// redirect to list
return $this->redirectToRoute('jo_proc');
}
public function unlockAssignor($id)
{
$this->denyAccessUnlessGranted('jo_assign.unlock', null, 'No access.');
// clear lock
$em = $this->getDoctrine()->getManager();
$jo = $em->getRepository(JobOrder::class)->find($id);
if ($jo == null)
return $this->redirectToRoute('jo_assign');
$jo->setAssignedBy(null);
$em->flush();
// redirect to list
return $this->redirectToRoute('jo_assign');
}
} }

View file

@ -288,7 +288,7 @@ class JobOrder
return $this->created_by; return $this->created_by;
} }
public function setAssignedBy(User $assigned_by) public function setAssignedBy(User $assigned_by = null)
{ {
$this->assigned_by = $assigned_by; $this->assigned_by = $assigned_by;
return $this; return $this;
@ -299,7 +299,7 @@ class JobOrder
return $this->assigned_by; return $this->assigned_by;
} }
public function setProcessedBy(User $user) public function setProcessedBy(User $user = null)
{ {
$this->processed_by = $user; $this->processed_by = $user;
return $this; return $this;

View file

@ -109,6 +109,10 @@
overflow: 'visible', overflow: 'visible',
template: function (row, index, datatable) { template: function (row, index, datatable) {
var actions = '<a href="' + row.meta.update_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View / Edit"><i class="la la-edit"></i></a>'; var actions = '<a href="' + row.meta.update_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View / Edit"><i class="la la-edit"></i></a>';
{% if is_granted('jo_assign.unlock') %}
actions += '<a href="' + row.meta.unlock_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="Unlock"><i class="fa fa-unlock"></i></a>';
{% endif %}
return actions; return actions;
}, },

View file

@ -105,6 +105,10 @@
overflow: 'visible', overflow: 'visible',
template: function (row, index, datatable) { template: function (row, index, datatable) {
var actions = '<a href="' + row.meta.update_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View / Edit"><i class="la la-edit"></i></a>'; var actions = '<a href="' + row.meta.update_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View / Edit"><i class="la la-edit"></i></a>';
{% if row.meta.unlock_url != "" && is_granted('jo_proc.unlock') %}
actions += '<a href="' + row.meta.unlock_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="Unlock"><i class="fa fa-unlock"></i></a>';
{% endif %}
return actions; return actions;
}, },

View file

@ -105,6 +105,7 @@
overflow: 'visible', overflow: 'visible',
template: function (row, index, datatable) { template: function (row, index, datatable) {
var actions = '<a href="' + row.meta.update_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View / Edit"><i class="la la-edit"></i></a>'; var actions = '<a href="' + row.meta.update_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View / Edit"><i class="la la-edit"></i></a>';
actions += '<a href="' + row.meta.unlock_url + '" class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill btn-edit" title="View / Edit"><i class="la la-edit"></i></a>';
return actions; return actions;
}, },