Untitled
unknown
plain_text
a year ago
3.8 kB
11
Indexable
<?php
namespace App\Http\Controllers;
use App\Models\Transport;
use App\Models\Action;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class TransportProcessController extends Controller
{
public function selectAction(Request $request)
{
$action = $request->query('action');
return view('transport_process.scan_qr_code', compact('action'));
}
public function scanQRCode($action)
{
return view('transport_process.scan_qr_code', compact('action'));
}
public function showTransportForm(Request $request)
{
$qrCode = $request->input('qr_code');
$actionType = $request->input('action');
$nuomotojai = Action::distinct()->pluck('nuomotojas')->map(function($nuomotojas) {
return ['label' => $nuomotojas, 'value' => $nuomotojas];
});
$transport = Transport::where('qr_code_id', $qrCode)->first();
if (!$transport) {
return redirect()->route('transport-process.select-action')->with('error', 'Transport not found.');
}
return view('transport_process.show_transport_form', compact('nuomotojai', 'transport', 'actionType'));
}
public function processForm(Request $request)
{
$qrCode = $request->input('qr_code');
$actionType = $request->input('action');
$nuomotojas = $request->input('nuomotojas');
$transport = Transport::where('qr_code_id', $qrCode)->first();
if (!$transport) {
return redirect()->route('transport-process.select-action')->with('error', 'Transport not found.');
}
$action = new Action();
$action->action = $actionType;
$action->transport_id = $transport->id;
$action->user_id = auth()->id();
$action->nuomotojas = $nuomotojas;
$action->odometer = $request->input('odometer');
if ($request->hasFile('front_image')) {
$action->front_image = $request->file('front_image')->store('images', 'public');
}
if ($request->hasFile('back_image')) {
$action->back_image = $request->file('back_image')->store('images', 'public');
}
if ($request->hasFile('left_image')) {
$action->left_image = $request->file('left_image')->store('images', 'public');
}
if ($request->hasFile('right_image')) {
$action->right_image = $request->file('right_image')->store('images', 'public');
}
if ($request->filled('damage_report')) {
$action->damage_report = $request->input('damage_report');
}
if ($request->hasFile('damage_images')) {
$damageImages = [];
foreach ($request->file('damage_images') as $damageImage) {
$damageImages[] = $damageImage->store('images', 'public');
}
$action->damage_images = json_encode($damageImages); // Convert array to JSON string
}
$action->save();
if ($actionType === 'issue') {
Session::flash('deposite_alert', 'Iš nuomotojo paimkite 150 Eur užstatą.');
return redirect()->route('transport-process.confirmation', ['action' => $action->id]);
}
if ($actionType === 'accept' && !empty($action->damage_report)) {
return redirect()->route('transport-process.deposit-warning', ['action' => $action->id]);
}
return redirect()->route('transport-process.confirmation', ['action' => $action->id]);
}
public function depositWarning(Action $action)
{
return view('transport_process.deposit_warning', compact('action'));
}
public function confirmation(Action $action)
{
return view('transport_process.confirmation', compact('action'));
}
}Editor is loading...
Leave a Comment