diff --git a/app/Http/Controllers/denunciasController.php b/app/Http/Controllers/denunciasController.php new file mode 100644 index 0000000..8e096ce --- /dev/null +++ b/app/Http/Controllers/denunciasController.php @@ -0,0 +1,81 @@ + get(); + + return view('denuncias.index', ['denuncias'=>$denuncias]); + } + public function show($id){ + $denuncias = denuncias::findOrfail($id); + return view('denuncias.show', ["denuncias"=>$denuncias]); + } + + public function destroy(Request $request, $id){ + $denuncias = denuncias::findOrfail($id); + $denuncias->delete(); + $request->session()->flash('mensaje-success', 'La denuncia fue eliminada.'); + return redirect('/denuncias'); + } + + public function create(){ + return view('denuncias.new'); + } + + public function store(StoreDenunciasRequest $request){ + + $denuncias = new denuncias(); + $denuncias->fill([ + 'nombre_denunciante' => $request->input('nombre'), + 'apellido_denunciante' => $request->input('apellido'), + 'dni_denunciante' => $request->input('dni'), + 'fecha' => $request->input('fecha'), + 'tipo' => $request->input('tipo'), + 'descripcion' => $request->input('descripcion'), + 'lugar' => $request->input('lugar'), + ]); + $denuncias->save(); + $request->session()->flash('mensaje-success', 'La denuncia fue guardada exitosamente.'); + return redirect('/denuncias'); + } + + public function edit($id){ + $denuncias = denuncias::findOrfail($id); + return view('denuncias.edit', ["denuncia"=>$denuncias]); + } + + public function update(UpdatedDenunciasRequest $request, $id){ + $denuncias = denuncias::findOrfail($id); + $denuncias->fill([ + 'nombre_denunciante' => $request->input('nombre'), + 'apellido_denunciante' => $request->input('apellido'), + 'dni_denunciante' => $request->input('dni'), + 'fecha' => $request->input('fecha'), + 'tipo' => $request->input('tipo'), + 'descripcion' => $request->input('descripcion'), + 'lugar' => $request->input('lugar'), + ]); + $denuncias->update(); + $request->session()->flash('mensaje-success', 'Los datos fueron modificados.'); + return redirect('/denuncias'); + } + + public function restaurar(Request $request, $id){ + $denuncias = denuncias::withTrashed()->findOrfail($id); + $denuncias->restore(); + $request->session()->flash('mensaje-success', 'La denuncia fue restaurada.'); + return redirect('/denuncias'); + } +} + diff --git a/app/Http/Controllers/detenidosController.php b/app/Http/Controllers/detenidosController.php new file mode 100644 index 0000000..b4d43b2 --- /dev/null +++ b/app/Http/Controllers/detenidosController.php @@ -0,0 +1,63 @@ +$detenidos]); + } + public function show($id){ + $detenidos = detenidos::findOrfail($id); + return view('detenidos.show', ["detenido"=>$detenido]); + } + + public function create(){ + return view('detenidos.new'); + } + + public function store(StoreDetenidosRequest $request){ + + $detenidos = new detenidos(); + $detenidos->fill([ + 'nombre' => $request->input('nombre'), + 'apellido' => $request->input('apellido'), + 'dni' => $request->input('dni'), + 'fecha_nacimiento' => $request->input('fecha_nacimiento'), + 'domicilio' => $request->input('domicilio'), + ]); + $detenidos->save(); + $request->session()->flash('mensaje-success', 'Los datos fueron guardados exitosamente.'); + return redirect('/detenidos'); + } + + public function edit($id){ + $detenidos = detenidos::findOrfail($id); + return view('detenidos.edit', ["detenido"=>$detenidos]); + } + + public function update(UpdatedDetenidosRequest $request, $id){ + $detenidos = detenidos::findOrfail($id); + $detenidos->fill([ + 'nombre' => $request->input('nombre'), + 'apellido' => $request->input('apellido'), + 'dni' => $request->input('dni'), + 'fecha_nacimiento' => $request->input('fecha_nacimiento'), + 'domicilio' => $request->input('domicilio'), + ]); + $detenidos->update(); + $request->session()->flash('mensaje-success', 'Los datos fueron modificados exitosamente.'); + return redirect('/detenidos'); + } +} + diff --git a/app/Http/Requests/StoreDenunciasRequest.php b/app/Http/Requests/StoreDenunciasRequest.php new file mode 100644 index 0000000..bee441b --- /dev/null +++ b/app/Http/Requests/StoreDenunciasRequest.php @@ -0,0 +1,63 @@ + 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/', + 'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/', + 'dni' => 'required|numeric|digits_between:7,8|unique:denuncias,dni_denunciante', + 'fecha' => 'required|date', + 'tipo' => 'required|max:100', + 'descripcion' => 'required|max:1000', + 'lugar' => 'required|max:100', + ]; + } + + /** + * Mensajes personalizados de validación. + */ + public function messages(): array + { + return [ + 'nombre.required' => 'El campo nombre es requerido', + 'nombre.regex' => 'El campo nombre sólo debe contener letras', + + 'apellido.required' => 'El campo apellido es requerido', + 'apellido.regex' => 'El campo apellido sólo debe contener letras', + + 'dni.required' => 'El campo DNI es requerido', + 'dni.numeric' => 'El campo DNI sólo admite números', + 'dni.digits_between' => 'El campo DNI debe tener entre 7 y 8 dígitos', + 'dni.unique' => 'El DNI ya se encuentra registrado en otra denuncia', + + 'fecha.required' => 'El campo fecha es requerido', + 'fecha.date' => 'La fecha ingresada no es válida', + + 'tipo.required' => 'El campo tipo es requerido', + 'tipo.max' => 'El tipo no puede superar los 100 caracteres', + + 'descripcion.required' => 'El campo descripción es requerido', + 'descripcion.max' => 'La descripción no puede superar los 1000 caracteres', + + 'lugar.required' => 'El campo lugar es requerido', + 'lugar.max' => 'El lugar no puede superar los 100 caracteres', + ]; + } +} \ No newline at end of file diff --git a/app/Http/Requests/StoreDetenidosRequest.php b/app/Http/Requests/StoreDetenidosRequest.php new file mode 100644 index 0000000..662a1e0 --- /dev/null +++ b/app/Http/Requests/StoreDetenidosRequest.php @@ -0,0 +1,55 @@ + 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/', + 'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/', + 'dni' => 'required|numeric|digits_between:7,8|unique:detenidos,dni', + 'fecha_nacimiento' => 'required|date', + 'domicilio' => 'required|max:150', + ]; + } + + /** + * Mensajes personalizados de validación. + */ + public function messages(): array + { + return [ + 'nombre.required' => 'El campo nombre es requerido', + 'nombre.regex' => 'El campo nombre sólo debe contener letras', + + 'apellido.required' => 'El campo apellido es requerido', + 'apellido.regex' => 'El campo apellido sólo debe contener letras', + + 'dni.required' => 'El campo DNI es requerido', + 'dni.numeric' => 'El campo DNI sólo admite números', + 'dni.digits_between' => 'El campo DNI debe tener entre 7 y 8 dígitos', + 'dni.unique' => 'El DNI ya se encuentra registrado', + + 'fecha_nacimiento.required' => 'El campo fecha de nacimiento es requerido', + 'fecha_nacimiento.date' => 'La fecha de nacimiento ingresada no es válida', + + 'domicilio.required' => 'El campo domicilio es requerido', + 'domicilio.max' => 'El domicilio no puede superar los 150 caracteres', + ]; + } +} \ No newline at end of file diff --git a/app/Http/Requests/UpdatedDenunciasRequest.php b/app/Http/Requests/UpdatedDenunciasRequest.php new file mode 100644 index 0000000..2bb1d45 --- /dev/null +++ b/app/Http/Requests/UpdatedDenunciasRequest.php @@ -0,0 +1,62 @@ + 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/', + 'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/', + 'dni' => 'required|numeric|digits_between:7,8', + 'fecha' => 'required|date', + 'tipo' => 'required|max:100', + 'descripcion' => 'required|max:1000', + 'lugar' => 'required|max:100', + ]; + } + + /** + * Mensajes personalizados de validación. + */ + public function messages(): array + { + return [ + 'nombre.required' => 'El campo nombre es requerido', + 'nombre.regex' => 'El campo nombre sólo debe contener letras', + + 'apellido.required' => 'El campo apellido es requerido', + 'apellido.regex' => 'El campo apellido sólo debe contener letras', + + 'dni.required' => 'El campo DNI es requerido', + 'dni.numeric' => 'El campo DNI sólo admite números', + 'dni.digits_between' => 'El campo DNI debe tener entre 7 y 8 dígitos', + + 'fecha.required' => 'El campo fecha es requerido', + 'fecha.date' => 'La fecha ingresada no es válida', + + 'tipo.required' => 'El campo tipo es requerido', + 'tipo.max' => 'El tipo no puede superar los 100 caracteres', + + 'descripcion.required' => 'El campo descripción es requerido', + 'descripcion.max' => 'La descripción no puede superar los 1000 caracteres', + + 'lugar.required' => 'El campo lugar es requerido', + 'lugar.max' => 'El lugar no puede superar los 100 caracteres', + ]; + } +} \ No newline at end of file diff --git a/app/Http/Requests/UpdatedDetenidosRequest.php b/app/Http/Requests/UpdatedDetenidosRequest.php new file mode 100644 index 0000000..1672010 --- /dev/null +++ b/app/Http/Requests/UpdatedDetenidosRequest.php @@ -0,0 +1,54 @@ + 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/', + 'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/', + 'dni' => 'required|numeric|digits_between:7,8', + 'fecha_nacimiento' => 'required|date', + 'domicilio' => 'required|max:150', + ]; + } + + /** + * Mensajes personalizados de validación. + */ + public function messages(): array + { + return [ + 'nombre.required' => 'El campo nombre es requerido', + 'nombre.regex' => 'El campo nombre sólo debe contener letras', + + 'apellido.required' => 'El campo apellido es requerido', + 'apellido.regex' => 'El campo apellido sólo debe contener letras', + + 'dni.required' => 'El campo DNI es requerido', + 'dni.numeric' => 'El campo DNI sólo admite números', + 'dni.digits_between' => 'El campo DNI debe tener entre 7 y 8 dígitos', + + 'fecha_nacimiento.required' => 'El campo fecha de nacimiento es requerido', + 'fecha_nacimiento.date' => 'La fecha de nacimiento ingresada no es válida', + + 'domicilio.required' => 'El campo domicilio es requerido', + 'domicilio.max' => 'El domicilio no puede superar los 150 caracteres', + ]; + } +} \ No newline at end of file diff --git a/app/Models/denuncias.php b/app/Models/denuncias.php new file mode 100644 index 0000000..d691ea1 --- /dev/null +++ b/app/Models/denuncias.php @@ -0,0 +1,27 @@ + 'SICOP', - 'logo_img' => 'vendor/adminlte/dist/img/AdminLTELogo.png', + 'logo_img' => 'vendor/adminlte/dist/img/logo_sicop.jpg', 'logo_img_class' => 'brand-image img-circle elevation-3', 'logo_img_xl' => null, 'logo_img_xl_class' => 'brand-image-xs', - 'logo_img_alt' => 'Admin Logo', + 'logo_img_alt' => 'Logo SICOP', /* |-------------------------------------------------------------------------- @@ -86,7 +86,7 @@ return [ 'auth_logo' => [ 'enabled' => false, 'img' => [ - 'path' => 'vendor/adminlte/dist/img/AdminLTELogo.png', + 'path' => 'vendor/adminlte/dist/img/logo_sicop.jpg', 'alt' => 'Auth Logo', 'class' => '', 'width' => 50, @@ -298,7 +298,9 @@ return [ | */ - 'menu' => [ + + + 'menu' => [ [ 'text' => 'Inicio', @@ -309,8 +311,8 @@ return [ ['header' => 'ADMINISTRACIÓN'], [ - 'text' => 'personal', - 'icon' => 'fas fa-fw fa-list', + 'text' => 'Personal', + 'icon' => 'fas fa-fw fa-user', 'submenu' => [ [ @@ -328,8 +330,51 @@ return [ ], ], + [ + 'text' => 'Denuncias', + 'icon' => 'fas fa-fw fa-file-alt', + 'submenu' => [ + + [ + 'text' => 'Listado', + 'route' => 'denuncias.index', + 'icon' => 'fas fa-fw fa-list-ul', + ], + + [ + 'text' => 'Nueva denuncia', + 'route' => 'denuncias.create', + 'icon' => 'fas fa-fw fa-plus', + ], + + ], + ], + + [ + 'text' => 'Detenidos', + 'icon' => 'fas fa-fw fa-user-lock', + 'submenu' => [ + + [ + 'text' => 'Listado', + 'route' => 'detenidos.index', + 'icon' => 'fas fa-fw fa-list-ul', + ], + + [ + 'text' => 'Nuevo detenido', + 'route' => 'detenidos.create', + 'icon' => 'fas fa-fw fa-plus', + ], + + ], + ], + ], + + + /* |-------------------------------------------------------------------------- | Menu Filters diff --git a/public/img/escudo policia.jpg b/public/img/escudo policia.jpg new file mode 100644 index 0000000..f4992ef Binary files /dev/null and b/public/img/escudo policia.jpg differ diff --git a/public/vendor/adminlte/dist/img/logo_sicop.jpg b/public/vendor/adminlte/dist/img/logo_sicop.jpg new file mode 100644 index 0000000..f4992ef Binary files /dev/null and b/public/vendor/adminlte/dist/img/logo_sicop.jpg differ diff --git a/resources/views/denuncias/edit.blade.php b/resources/views/denuncias/edit.blade.php new file mode 100644 index 0000000..d4b919d --- /dev/null +++ b/resources/views/denuncias/edit.blade.php @@ -0,0 +1,233 @@ +@extends('layouts.admin') + +@section('contenido') + + +
+ +
+ +

Editar Datos de la Denuncia

+ +
+ +
+ + + +
+ +
+ + @include('compartido.mensajes') + @include('compartido.errores') + +
+ +
+ +
+ + + +
+ + @csrf + + @method('PUT') + + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ + +
+ + + + + +
+ +
+ + +
+ + + +
+ + +
+ + + +
+ + + +
+ + + Salir + + +
+ +
+ +
+ +@endsection + + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/resources/views/denuncias/index.blade.php b/resources/views/denuncias/index.blade.php new file mode 100644 index 0000000..23b2ba4 --- /dev/null +++ b/resources/views/denuncias/index.blade.php @@ -0,0 +1,155 @@ +@extends('layouts.admin') + +@section('contenido') + +
+
+

Listado de Denuncias

+
+
+ +
+
+ + Nueva denuncia + +
+
+ +
+ +
+
+ + @include('compartido.mensajes') + @include('compartido.errores') + +
+ + + + + + + + + + + + + + + + + + @foreach($denuncias as $den) + + + + + + + + + + + + + + + + + + + + @endforeach + + + +
IdDenuncianteDNIFechaTipoLugarAcciones
{{ $den->id_denuncia }} + {{ $den->nombre_denunciante }} + {{ $den->apellido_denunciante }} + {{ $den->dni_denunciante }}{{ $den->fecha }}{{ $den->tipo }}{{ $den->lugar }} + + @if($den->deleted_at == null) + +
+ + @csrf + @method('DELETE') + + + + + + + + + + + + + + +
+ + @else + +
+ + @csrf + @method('PUT') + + + + +
+ + @endif + +
+ +
+ +
+
+ +@endsection + + +@push('styles') + +@endpush + + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/resources/views/denuncias/new.blade.php b/resources/views/denuncias/new.blade.php new file mode 100644 index 0000000..1f3fdb5 --- /dev/null +++ b/resources/views/denuncias/new.blade.php @@ -0,0 +1,221 @@ +@extends('layouts.admin') +@section('contenido') + + +
+
+

Nueva Denuncia

+
+
+ + + +
+
+ + @include('compartido.mensajes') + @include('compartido.errores') + +
+
+ +
+ + + +
+ + @csrf + + +
+ + +
+ + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ + +
+ + + + + +
+ +
+ + +
+ + + +
+ + +
+ + + +
+ + + +
+ + + Salir + + +
+ +
+ +
+ +@endsection + + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/resources/views/denuncias/show.blade.php b/resources/views/denuncias/show.blade.php new file mode 100644 index 0000000..fd1c835 --- /dev/null +++ b/resources/views/denuncias/show.blade.php @@ -0,0 +1,189 @@ +@extends('layouts.admin') + +@section('contenido') + +
+ +
+ +

Ver Datos de la Denuncia

+ +
+ +
+ +
+ +
+ + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ +
+ + + + + +
+ +
+ + +
+ + + + + +
+ +
+ + + Salir + + +
+ +
+ + +@endsection \ No newline at end of file diff --git a/resources/views/detenidos/edit.blade.php b/resources/views/detenidos/edit.blade.php new file mode 100644 index 0000000..d3bffc5 --- /dev/null +++ b/resources/views/detenidos/edit.blade.php @@ -0,0 +1,191 @@ +@extends('layouts.admin') + +@section('contenido') + + +
+ +
+ +

Editar Datos del Detenido

+ +
+ +
+ + + +
+ +
+ + @include('compartido.mensajes') + @include('compartido.errores') + +
+ +
+ +
+ + + +
+ + @csrf + + @method('PUT') + + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + +
+ + + +
+ + +
+ + + +
+ + + +
+ + + Salir + + +
+ +
+ +
+ +@endsection + + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/resources/views/detenidos/index.blade.php b/resources/views/detenidos/index.blade.php new file mode 100644 index 0000000..51c5a19 --- /dev/null +++ b/resources/views/detenidos/index.blade.php @@ -0,0 +1,114 @@ +@extends('layouts.admin') + +@section('contenido') + +
+
+

Listado de Detenidos

+
+
+ +
+
+ + Nuevo detenido + +
+
+ +
+ +
+
+ + @include('compartido.mensajes') + @include('compartido.errores') + +
+ + + + + + + + + + + + + + + + + + @foreach($detenidos as $det) + + + + + + + + + + + + + + + + + + + + @endforeach + + + +
IdNombreApellidoDNIFecha de nacimientoDomicilioAcciones
{{ $det->id_detenido }}{{ $det->nombre }}{{ $det->apellido }}{{ $det->dni }}{{ $det->fecha_nacimiento }}{{ $det->domicilio }} + + + + + + + + + + + +
+ +
+ +
+
+ +@endsection + + +@push('styles') + +@endpush + + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/resources/views/detenidos/new.blade.php b/resources/views/detenidos/new.blade.php new file mode 100644 index 0000000..7bf844d --- /dev/null +++ b/resources/views/detenidos/new.blade.php @@ -0,0 +1,181 @@ +@extends('layouts.admin') + +@section('contenido') + + +
+
+

Nuevo Detenido

+
+
+ + + +
+
+ + @include('compartido.mensajes') + @include('compartido.errores') + +
+
+ +
+ + + +
+ + @csrf + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + +
+ + + +
+ + +
+ + + +
+ + + +
+ + + Salir + + +
+ +
+ +
+ +@endsection + + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/resources/views/detenidos/show.blade.php b/resources/views/detenidos/show.blade.php new file mode 100644 index 0000000..0d6a63c --- /dev/null +++ b/resources/views/detenidos/show.blade.php @@ -0,0 +1,148 @@ +@extends('layouts.admin') + +@section('contenido') + +
+ +
+ +

Ver Datos del Detenido

+ +
+ +
+ +
+ +
+ + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + + +
+ + +
+ + + + + +
+ + + +
+ + + + + +
+ +
+ + +
+ + + + + +
+ +
+ + + Salir + + +
+ +
+ + +@endsection \ No newline at end of file diff --git a/resources/views/personal/index.blade.php b/resources/views/personal/index.blade.php index d395a48..7286b8b 100644 --- a/resources/views/personal/index.blade.php +++ b/resources/views/personal/index.blade.php @@ -82,14 +82,14 @@ - + @else diff --git a/routes/web.php b/routes/web.php index 88ee372..3607f5b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,9 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\personalController; +use App\Http\Controllers\denunciasController; +use App\Http\Controllers\detenidosController; + /* |-------------------------------------------------------------------------- | Web Routes @@ -20,6 +23,13 @@ Route::get('/', function () { Route::resource('personal', personalController::class); Route::put('personal/restaurar/{personal}', [personalController::class, 'restaurar'])->name('personal.restaurar'); +Route::resource('denuncias', denunciasController::class); +Route::put('denuncias/restaurar/{denuncias}', [denunciasController::class, 'restaurar'])->name('denuncias.restaurar'); + +Route::resource('detenidos', detenidosController::class); + + + /*Route::get('personal', [personalController::class, 'index'])->name('personal.index'); Route::post('personal', [personalController::class, 'store'])->name('personal.store'); Route::get('personal/create', [personalController::class, 'create'])->name('personal.create');