File manager - Edit - /var/www/html/portal/app/Http/Controllers/FluxoOnibusController.php
Back
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\FluxoOnibus; use App\Models\User; use App\Http\Requests\FluxoOnibusRequest; use Illuminate\Http\Request; use Illuminate\Support\Str; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Log; use App\Helpers\FileUploadHelper; class FluxoOnibusController extends Controller { /** * Display a listing of the resource. */ public function index() { $fluxos = FluxoOnibus::orderBy('created_at', 'desc')->paginate(10); return view('admin.fluxo-onibus.index', compact('fluxos')); } /** * Verify CPF and redirect to create or edit */ public function verify(Request $request) { if ($request->isMethod('post')) { $request->validate([ 'cpf' => 'required|string|max:14|regex:/^\d{3}\.\d{3}\.\d{3}-\d{2}$/', ], [ 'cpf.required' => __("* O CPF é obrigatório!"), 'cpf.string' => __("* Formato de CPF inválido!"), 'cpf.max' => __("* O CPF deve possuir 14 caracteres (com pontos e traço)!"), 'cpf.regex' => __("* O CPF deve estar no formato xxx.xxx.xxx-xx!"), ]); // Buscar usuário pelo CPF (já formatado) $cpf = $request->cpf; $user = User::where('cpf', $cpf)->first(); if ($user) { // Guia existe - redirecionar para create com dados preenchidos return redirect()->route('admin.fluxoOnibus.create') ->with('guia_data', [ 'nome_guia' => $user->getNameAttribute(), // "firstName lastName" 'email_guia' => $user->email, 'tel_guia' => $user->phoneNumber, 'cpf_guia' => $user->cpf, 'reg_cadastur' => $user->guia->reg_cadastur ?? null, // se tiver relação com guia 'owner_id' => $user->id, ]) ->with('success', 'Guia encontrado! Dados preenchidos automaticamente.'); } else { // Guia não existe - redirecionar para create normal return redirect()->route('admin.fluxoOnibus.create') ->with('cpf_guia', $cpf) // Mantém o CPF preenchido ->with('info', 'Guia não encontrado no sistema. Preencha os dados manualmente.'); } } // GET request - mostrar formulário de verificação return view('admin.fluxo-onibus.verify'); } /** * Show the form for creating a new resource. */ public function create() { $veiculos = ['Van', 'Micro-ônibus', 'Ônibus', 'Double Deck']; // Verificar se há dados do guia na session $guiaData = session('guia_data', []); $cpfGuia = session('cpf_guia', ''); return view('admin.fluxo-onibus.create', compact('veiculos', 'guiaData', 'cpfGuia')); } /** * Store a newly created resource in storage. */ public function store(FluxoOnibusRequest $request) { try { $validated = $request->validated(); $id = (string) Str::uuid(); // Processar upload if ($request->hasFile('upload')) { $file = $request->file('upload'); // Valida arquivo if (FileUploadHelper::validateFile( $file, FileUploadHelper::ALLOWED_GENERAL_EXTENSIONS, FileUploadHelper::ALLOWED_GENERAL_MIME_TYPES )) { $safeFileName = FileUploadHelper::generateSafeFileName( $file, FileUploadHelper::ALLOWED_GENERAL_EXTENSIONS ); $fileName = 'fluxo_onibus_' . $id . '_' . time() . '_' . $safeFileName; $filePath = $file->storeAs('fluxo_onibus', $fileName, 'public'); $validated['upload'] = $filePath; } } // Adicionar dados padrão se necessário $validated['id'] = $id; $validated['status'] = $validated['status'] ?? 'pendente'; $validated['categoria'] = $validated['categoria'] ?? 'onibus'; // Criar o fluxo de ônibus FluxoOnibus::create($validated); return redirect()->route('admin.fluxoOnibus.index') ->with('success', 'Fluxo de ônibus cadastrado com sucesso!'); } catch (\Exception $e) { Log::error('Erro ao criar fluxo onibus: ' . $e->getMessage()); return redirect()->back() ->with('error', 'Erro ao cadastrar fluxo de ônibus: ' . $e->getMessage()) ->withInput(); } } /** * Display the specified resource. */ public function show(FluxoOnibus $fluxoOnibus) { return view('admin.fluxo-onibus.show', compact('fluxoOnibus')); } public function edit(FluxoOnibus $fluxoOnibus) { $veiculos = ['Van', 'Micro-ônibus', 'Ônibus', 'Double Deck']; return view('admin.fluxo-onibus.edit', compact('fluxoOnibus', 'veiculos')); } /** * Update the specified resource in storage. */ public function update(FluxoOnibusRequest $request, FluxoOnibus $fluxoOnibus) { $validated = $request->validated(); // Processar upload do arquivo if ($request->hasFile('upload')) { // Deletar arquivo anterior se existir if ($fluxoOnibus->upload && Storage::disk('public')->exists($fluxoOnibus->upload)) { Storage::disk('public')->delete($fluxoOnibus->upload); } $file = $request->file('upload'); // Valida arquivo if (FileUploadHelper::validateFile( $file, FileUploadHelper::ALLOWED_GENERAL_EXTENSIONS, FileUploadHelper::ALLOWED_GENERAL_MIME_TYPES )) { $safeFileName = FileUploadHelper::generateSafeFileName( $file, FileUploadHelper::ALLOWED_GENERAL_EXTENSIONS ); $fileName = 'fluxo_onibus_' . $fluxoOnibus->id . '_' . time() . '_' . $safeFileName; $filePath = $file->storeAs('fluxo_onibus', $fileName, 'public'); $validated['upload'] = $filePath; } } else { // Manter o arquivo atual se não foi enviado novo arquivo $validated['upload'] = $fluxoOnibus->upload; } $fluxoOnibus->update($validated); return redirect()->route('admin.fluxoOnibus.index') ->with('success', 'Fluxo de ônibus atualizado com sucesso!'); } /** * Remove the specified resource from storage. */ public function destroy(FluxoOnibus $fluxoOnibus) { // Deletar arquivo se existir if ($fluxoOnibus->upload && Storage::disk('public')->exists($fluxoOnibus->upload)) { Storage::disk('public')->delete($fluxoOnibus->upload); } $fluxoOnibus->delete(); return redirect()->route('admin.fluxoOnibus.index') ->with('success', 'Fluxo de ônibus excluído com sucesso!'); } /** * Download do arquivo */ public function download(FluxoOnibus $fluxoOnibus) { if (!$fluxoOnibus->upload || !Storage::disk('public')->exists($fluxoOnibus->upload)) { return redirect()->back()->with('error', 'Arquivo não encontrado.'); } return Storage::disk('public')->download($fluxoOnibus->upload); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.09 |
proxy
|
phpinfo
|
Settings