mirror of
https://github.com/snipe/snipe-it.git
synced 2025-03-05 20:52:15 -08:00
implemented specific seat checkout (#5887)
This commit is contained in:
parent
de413408f5
commit
66c3f5432d
|
@ -265,31 +265,40 @@ class LicensesController extends Controller
|
||||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||||
* @since [v1.0]
|
* @since [v1.0]
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
|
* @param int $licenseId
|
||||||
* @param int $seatId
|
* @param int $seatId
|
||||||
* @return \Illuminate\Http\RedirectResponse
|
* @return \Illuminate\Http\RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function postCheckout(Request $request, $licenseId)
|
public function postCheckout(Request $request, $licenseId, $seatId = null)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Check that the license is valid
|
// Check that the license is valid
|
||||||
if ($license = License::where('id',$licenseId)->first()) {
|
if ($license = License::where('id', $licenseId)->first()) {
|
||||||
|
|
||||||
// If the license is valid, check that there is an available seat
|
// If the license is valid, check that there is an available seat
|
||||||
if ($license->getAvailSeatsCountAttribute() < 1) {
|
if ($license->getAvailSeatsCountAttribute() < 1) {
|
||||||
return redirect()->route('licenses.index')->with('error', 'There are no available seats for this license');
|
return redirect()->route('licenses.index')->with('error', 'There are no available seats for this license');
|
||||||
}
|
}
|
||||||
|
if (!$seatId) {
|
||||||
// Get the next available seat for this license
|
// Get the next available seat for this license
|
||||||
$next = $license->freeSeat();
|
$next = $license->freeSeat();
|
||||||
|
if (!$next) {
|
||||||
if (!$next) {
|
return redirect()->route('licenses.index')->with('error', 'There are no available seats for this license');
|
||||||
return redirect()->route('licenses.index')->with('error', 'There are no available seats for this license');
|
}
|
||||||
|
if (!$licenseSeat = LicenseSeat::where('id', '=', $next->id)->first()) {
|
||||||
|
return redirect()->route('licenses.index')->with('error', 'There are no available seats for this license');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$licenseSeat = LicenseSeat::where('id', '=', $seatId)->first();
|
||||||
|
if (!$licenseSeat) {
|
||||||
|
return redirect()->route('licenses.index')->with('error', 'License seat is not available for checkout');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!$licenseSeat = LicenseSeat::where('id', '=', $next->id)->first()) {
|
|
||||||
return redirect()->route('licenses.index')->with('error', 'There are no available seats for this license');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$this->authorize('checkout', $license);
|
$this->authorize('checkout', $license);
|
||||||
|
|
||||||
|
|
|
@ -277,7 +277,7 @@
|
||||||
function licenseSeatInOutFormatter(value, row) {
|
function licenseSeatInOutFormatter(value, row) {
|
||||||
// The user is allowed to check the license seat out and it's available
|
// The user is allowed to check the license seat out and it's available
|
||||||
if ((row.available_actions.checkout == true) && (row.user_can_checkout == true) && ((!row.asset_id) && (!row.assigned_to))) {
|
if ((row.available_actions.checkout == true) && (row.user_can_checkout == true) && ((!row.asset_id) && (!row.assigned_to))) {
|
||||||
return '<a href="{{ url('/') }}/licenses/' + row.license_id + '/checkout" class="btn btn-sm bg-maroon" data-tooltip="true" title="Check this item out">{{ trans('general.checkout') }}</a>';
|
return '<a href="{{ url('/') }}/licenses/' + row.license_id + '/checkout/'+row.id+'" class="btn btn-sm bg-maroon" data-tooltip="true" title="Check this item out">{{ trans('general.checkout') }}</a>';
|
||||||
} else {
|
} else {
|
||||||
return '<a href="{{ url('/') }}/licenses/' + row.id + '/checkin" class="btn btn-sm bg-purple" data-tooltip="true" title="Check in this license seat.">{{ trans('general.checkin') }}</a>';
|
return '<a href="{{ url('/') }}/licenses/' + row.id + '/checkin" class="btn btn-sm bg-purple" data-tooltip="true" title="Check in this license seat.">{{ trans('general.checkin') }}</a>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,12 @@ Route::group([ 'prefix' => 'licenses', 'middleware' => ['auth'] ], function () {
|
||||||
'as' => 'licenses.freecheckout',
|
'as' => 'licenses.freecheckout',
|
||||||
'uses' => 'LicensesController@getFreeLicense'
|
'uses' => 'LicensesController@getFreeLicense'
|
||||||
]);
|
]);
|
||||||
Route::get('{licenseId}/checkout', [
|
Route::get('{licenseId}/checkout/{seatId?}', [
|
||||||
'as' => 'licenses.checkout',
|
'as' => 'licenses.checkout',
|
||||||
'uses' => 'LicensesController@getCheckout'
|
'uses' => 'LicensesController@getCheckout'
|
||||||
]);
|
]);
|
||||||
Route::post(
|
Route::post(
|
||||||
'{licenseId}/checkout',
|
'{licenseId}/checkout/{seatId?}',
|
||||||
[ 'as' => 'licenses.checkout', 'uses' => 'LicensesController@postCheckout' ]
|
[ 'as' => 'licenses.checkout', 'uses' => 'LicensesController@postCheckout' ]
|
||||||
);
|
);
|
||||||
Route::get('{licenseId}/checkin/{backto?}', [
|
Route::get('{licenseId}/checkin/{backto?}', [
|
||||||
|
|
Loading…
Reference in a new issue