busqueda; if ($busqueda) { // Busca en la columna 'nombre' de la tabla 'despartamentos' $despartamentos = despartamento::where('nombre', 'LIKE', "%{$busqueda}%")->where('eliminado', 0)->get(); if ($despartamentos->isEmpty()) { return redirect()->route('despartamento.index') ->with('error', 'No existe ningún departamento con el nombre "' . $busqueda . '". Por favor, inténtalo de nuevo.'); } } else { // Si no hay búsqueda, mostrar todos los departamentos $despartamentos = despartamento::where('eliminado', 0)->get(); } return view('despartamentos', ['despartamentos' => $despartamentos]); } /** * Show the form for creating a new resource. */ public function create() { return view('despartamentosCrearEditar', ['despartamento' => null]); // No se necesita pasar departamentos } /** * Store a newly created resource in storage. */ public function store(Request $request) { // Valida la entrada $request->validate([ 'departamento' => 'required|string|max:255|unique:despartamentos,departamento', // Asegúrate de que 'departamento' sea único ], [ 'departamento.required' => 'El campo departamento es obligatorio.', 'departamento.string' => 'El campo departamento debe ser una cadena de texto.', 'departamento.max' => 'El campo departamento no puede tener más de 255 caracteres.', 'departamento.unique' => 'Ya existe un departamento con ese nombre.', ]); // Crea un nuevo departamento $despartamento = new despartamento(); $despartamento->departamento = $request->departamento; // Asigna el nombre ingresado por el usuario $despartamento->eliminado = 0; // Departamento como activo por defecto $despartamento->save(); return redirect()->route('despartamentos.index')->with('success', 'Departamento creado exitosamente.'); } /** * Show the form for editing the specified resource. */ public function edit($id) { $despartamento = despartamento::findOrFail($id); // Busca el departamento por ID return view('despartamentosCrearEditar', ['despartamento' => $despartamento]); // Pasa el departamento a la vista } /** * Update the specified resource in storage. */ public function update(Request $request, $id) { $request->validate([ 'departamento' => 'required|string|max:255|unique:despartamentos,departamento', // Asegúrate de que 'departamento' sea único ], [ 'departamento.required' => 'El campo departamento es obligatorio.', 'departamento.string' => 'El campo departamento debe ser una cadena de texto.', 'departamento.max' => 'El campo departamento no puede tener más de 255 caracteres.', 'departamento.unique' => 'Ya existe un departamento con ese nombre, por favor elige otro.', ]); $despartamento = despartamento::findOrFail($id); // Encuentra el departamento por ID // Verifica si el nombre del departamento ha cambiado if ($despartamento->departamento !== $request->departamento) { $despartamento->departamento = $request->departamento; // Actualiza el nombre del departamento } $despartamento->eliminado = 0; // Cambia el estado a activo si se está editando $despartamento->save(); // Guarda los cambios return redirect()->route('despartamentos.index')->with('success', 'Departamento actualizado correctamente.'); } /** * Remove the specified resource from storage. */ public function destroy($id) { $despartamento = despartamento::findOrFail($id); // Encuentra el departamento por ID $despartamento->eliminado = 1; // Cambia el estado a inactivo $despartamento->save(); // Guarda los cambios return redirect()->route('despartamentos.index')->with('success', 'Departamento inactivado correctamente.'); } public function exportExcel() { return Excel::download(new DespartamentosExport, 'despartamentos.xlsx'); } public function exportPDF() { $departamentos = despartamento::where('eliminado', 0)->get(); $pdf = PDF::loadView('exports.departamentos', ['departamentos' => $departamentos]); return $pdf->download('departamentos.pdf'); } }