mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-26 06:04:08 -08:00
Merge pull request #13453 from inietov/fixes/accessories_declined_issue
Fixed #13317 Accessories declined by user remain assigned
This commit is contained in:
commit
aafb7668f5
|
@ -245,6 +245,36 @@ class AcceptanceController extends Controller
|
||||||
$return_msg = trans('admin/users/message.accepted');
|
$return_msg = trans('admin/users/message.accepted');
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check for the eula-pdfs directory
|
||||||
|
*/
|
||||||
|
if (! Storage::exists('private_uploads/eula-pdfs')) {
|
||||||
|
Storage::makeDirectory('private_uploads/eula-pdfs', 775);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Setting::getSettings()->require_accept_signature == '1') {
|
||||||
|
|
||||||
|
// Check if the signature directory exists, if not create it
|
||||||
|
if (!Storage::exists('private_uploads/signatures')) {
|
||||||
|
Storage::makeDirectory('private_uploads/signatures', 775);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The item was accepted, check for a signature
|
||||||
|
if ($request->filled('signature_output')) {
|
||||||
|
$sig_filename = 'siglog-' . Str::uuid() . '-' . date('Y-m-d-his') . '.png';
|
||||||
|
$data_uri = $request->input('signature_output');
|
||||||
|
$encoded_image = explode(',', $data_uri);
|
||||||
|
$decoded_image = base64_decode($encoded_image[1]);
|
||||||
|
Storage::put('private_uploads/signatures/' . $sig_filename, (string)$decoded_image);
|
||||||
|
|
||||||
|
// No image data is present, kick them back.
|
||||||
|
// This mostly only applies to users on super-duper crapola browsers *cough* IE *cough*
|
||||||
|
} else {
|
||||||
|
return redirect()->back()->with('error', trans('general.shitty_browser'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Format the data to send the declined notification
|
// Format the data to send the declined notification
|
||||||
$branding_settings = SettingsController::getPDFBranding();
|
$branding_settings = SettingsController::getPDFBranding();
|
||||||
|
|
||||||
|
@ -281,11 +311,18 @@ class AcceptanceController extends Controller
|
||||||
'item_model' => $display_model,
|
'item_model' => $display_model,
|
||||||
'item_serial' => $item->serial,
|
'item_serial' => $item->serial,
|
||||||
'declined_date' => Carbon::parse($acceptance->declined_at)->format('Y-m-d'),
|
'declined_date' => Carbon::parse($acceptance->declined_at)->format('Y-m-d'),
|
||||||
|
'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null,
|
||||||
'assigned_to' => $assigned_to,
|
'assigned_to' => $assigned_to,
|
||||||
'company_name' => $branding_settings->site_name,
|
'company_name' => $branding_settings->site_name,
|
||||||
'date_settings' => $branding_settings->date_display_format,
|
'date_settings' => $branding_settings->date_display_format,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if ($pdf_view_route!='') {
|
||||||
|
\Log::debug($pdf_filename.' is the filename, and the route was specified.');
|
||||||
|
$pdf = Pdf::loadView($pdf_view_route, $data);
|
||||||
|
Storage::put('private_uploads/eula-pdfs/' .$pdf_filename, $pdf->output());
|
||||||
|
}
|
||||||
|
|
||||||
$acceptance->decline($sig_filename);
|
$acceptance->decline($sig_filename);
|
||||||
$acceptance->notify(new AcceptanceAssetDeclinedNotification($data));
|
$acceptance->notify(new AcceptanceAssetDeclinedNotification($data));
|
||||||
event(new CheckoutDeclined($acceptance));
|
event(new CheckoutDeclined($acceptance));
|
||||||
|
|
|
@ -349,6 +349,22 @@ class Accessory extends SnipeModel
|
||||||
return (int) $remaining;
|
return (int) $remaining;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run after the checkout acceptance was declined by the user
|
||||||
|
*
|
||||||
|
* @param User $acceptedBy
|
||||||
|
* @param string $signature
|
||||||
|
*/
|
||||||
|
public function declinedCheckout(User $declinedBy, $signature)
|
||||||
|
{
|
||||||
|
if (is_null($accessory_user = \DB::table('accessories_users')->where('assigned_to', $declinedBy->id)->where('accessory_id', $this->id)->latest('created_at'))) {
|
||||||
|
// Redirect to the accessory management page with error
|
||||||
|
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$accessory_user->limit(1)->delete();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query builder scope to order on company
|
* Query builder scope to order on company
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue