CRUD denuncias y detenidos

This commit is contained in:
Silvia Moya 2026-08-21 08:57:36 -03:00
parent 6b8bc4d16a
commit cddfb046bd
21 changed files with 1923 additions and 8 deletions

View File

@ -0,0 +1,81 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use App\Models\denuncias;
use App\Http\Requests\UpdatedDenunciasRequest;
use App\Http\Requests\StoreDenunciasRequest;
class denunciasController extends Controller
{
public function index(Request $request){
$denuncias = denuncias::withTrashed()-> 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');
}
}

View File

@ -0,0 +1,63 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use App\Models\detenidos;
use App\Http\Requests\UpdatedDetenidosRequest;
use App\Http\Requests\StoreDetenidosRequest;
class detenidosController extends Controller
{
public function index(Request $request){
$detenidos = detenidos::get();
return view('detenidos.index', ['detenidos'=>$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');
}
}

View File

@ -0,0 +1,63 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreDenunciasRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'nombre' => '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',
];
}
}

View File

@ -0,0 +1,55 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreDetenidosRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'nombre' => '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',
];
}
}

View File

@ -0,0 +1,62 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdatedDenunciasRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'nombre' => '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',
];
}
}

View File

@ -0,0 +1,54 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdatedDetenidosRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'nombre' => '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',
];
}
}

27
app/Models/denuncias.php Normal file
View File

@ -0,0 +1,27 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class denuncias extends Model
{
use HasFactory;
use SoftDeletes;
protected $table = 'denuncias';
public $primaryKey = 'id_denuncia';
public $timestamps = true;
protected $fillable = [
'nombre_denunciante',
'apellido_denunciante',
'dni_denunciante',
'fecha',
'tipo',
'descripcion',
'lugar',
];
}

23
app/Models/detenidos.php Normal file
View File

@ -0,0 +1,23 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class detenidos extends Model
{
use HasFactory;
protected $table = 'detenidos';
public $primaryKey = 'id_detenido';
public $timestamps = true;
protected $fillable = [
'nombre',
'apellido',
'dni',
'fecha_nacimiento',
'domicilio',
];
}

View File

@ -64,11 +64,11 @@ return [
*/
'logo' => '<b>SICOP</b>',
'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

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,233 @@
@extends('layouts.admin')
@section('contenido')
<!-- Título -->
<div class="row justify-content-center align-items-center">
<div class="col-lg-11 col-md-11 col-sm-11 col-xs-11">
<h3>Editar Datos de la Denuncia</h3>
</div>
</div>
<!-- Mensajes -->
<div class="row">
<div class="col-md-10">
@include('compartido.mensajes')
@include('compartido.errores')
</div>
</div>
<br>
<!-- Formulario de edición -->
<form method="POST"
action="{{ route('denuncias.update', $denuncia->id_denuncia) }}">
@csrf
@method('PUT')
<!-- Primera fila -->
<div class="row">
<!-- Nombre -->
<div class="form-group col-md-4">
<label for="nombre" class="form-check-label">
Nombre del denunciante (*)
</label>
<input
type="text"
name="nombre"
id="nombre"
class="form-control"
value="{{ old('nombre', $denuncia->nombre_denunciante) }}"
required
>
</div>
<!-- Apellido -->
<div class="form-group col-md-4">
<label for="apellido" class="form-check-label">
Apellido del denunciante (*)
</label>
<input
type="text"
name="apellido"
id="apellido"
class="form-control"
value="{{ old('apellido', $denuncia->apellido_denunciante) }}"
required
>
</div>
<!-- DNI -->
<div class="form-group col-md-4">
<label for="dni" class="form-check-label">
DNI (*)
</label>
<input
type="text"
name="dni"
id="dni"
class="form-control"
value="{{ old('dni', $denuncia->dni_denunciante) }}"
required
>
</div>
</div>
<!-- Segunda fila -->
<div class="row">
<!-- Fecha -->
<div class="form-group col-md-4">
<label for="fecha" class="form-check-label">
Fecha (*)
</label>
<input
type="date"
name="fecha"
id="fecha"
class="form-control"
value="{{ old('fecha', $denuncia->fecha) }}"
required
>
</div>
<!-- Tipo -->
<div class="form-group col-md-4">
<label for="tipo" class="form-check-label">
Tipo de denuncia (*)
</label>
<input
type="text"
name="tipo"
id="tipo"
class="form-control"
value="{{ old('tipo', $denuncia->tipo) }}"
required
>
</div>
<!-- Lugar -->
<div class="form-group col-md-4">
<label for="lugar" class="form-check-label">
Lugar (*)
</label>
<input
type="text"
name="lugar"
id="lugar"
class="form-control"
value="{{ old('lugar', $denuncia->lugar) }}"
required
>
</div>
</div>
<!-- Tercera fila -->
<div class="row">
<!-- Descripción -->
<div class="form-group col-md-12">
<label for="descripcion" class="form-check-label">
Descripción (*)
</label>
<textarea
name="descripcion"
id="descripcion"
rows="6"
class="form-control"
required
>{{ old('descripcion', $denuncia->descripcion) }}</textarea>
</div>
</div>
<br>
<!-- Botones -->
<div class="row justify-content-center align-items-center">
<!-- Guardar -->
<div class="col-md-2">
<button
type="submit"
class="btn btn-success btn-block btn-lg"
>
Guardar
</button>
</div>
<!-- Salir -->
<div class="col-md-2">
<a
href="{{ route('denuncias.index') }}"
class="btn btn-primary btn-block btn-lg"
title="Salir"
>
Salir
</a>
</div>
</div>
</form>
@endsection
@push('scripts')
<script>
// Aquí podremos agregar JavaScript específico para esta vista.
</script>
@endpush

View File

@ -0,0 +1,155 @@
@extends('layouts.admin')
@section('contenido')
<div class="row justify-content-center align-items-center">
<div class="col-12 col-md-11">
<h3>Listado de Denuncias</h3>
</div>
</div>
<div class="row justify-content-center align-items-center">
<div class="col-md-2">
<a href="{{ route('denuncias.create') }}"
class="btn btn-success btn-block btn-lg"
title="Nueva Denuncia">
Nueva denuncia
</a>
</div>
</div>
<br>
<div class="row justify-content-center align-items-center">
<div class="col-12 col-md-11">
@include('compartido.mensajes')
@include('compartido.errores')
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover" id="example">
<thead>
<tr>
<th>Id</th>
<th>Denunciante</th>
<th>DNI</th>
<th>Fecha</th>
<th>Tipo</th>
<th>Lugar</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
@foreach($denuncias as $den)
<tr>
<td>{{ $den->id_denuncia }}</td>
<td>
{{ $den->nombre_denunciante }}
{{ $den->apellido_denunciante }}
</td>
<td>{{ $den->dni_denunciante }}</td>
<td>{{ $den->fecha }}</td>
<td>{{ $den->tipo }}</td>
<td>{{ $den->lugar }}</td>
<td align="center">
@if($den->deleted_at == null)
<form method="POST"
action="{{ route('denuncias.destroy', $den->id_denuncia) }}"
style="display:inline;">
@csrf
@method('DELETE')
<!-- Ver -->
<a class="btn btn-info"
href="{{ route('denuncias.show', $den->id_denuncia) }}"
title="Ver más">
<i class="fa fa-eye"></i>
</a>
<!-- Editar -->
<a class="btn btn-warning"
href="{{ route('denuncias.edit', $den->id_denuncia) }}"
title="Editar">
<i class="fas fa-edit"></i>
</a>
<!-- Eliminar -->
<button class="btn btn-danger"
onclick="return confirm('¿Está seguro de eliminar esta denuncia?');"
title="Eliminar">
<i class="fas fa-trash"></i>
</button>
</form>
@else
<form method="POST"
action="{{ route('denuncias.restaurar', $den->id_denuncia) }}"
style="display:inline;">
@csrf
@method('PUT')
<!-- Restaurar -->
<button class="btn btn-success"
onclick="return confirm('¿Está seguro de restaurar esta denuncia?');"
title="Restaurar">
<i class="fa fa-undo"></i>
</button>
</form>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection
@push('styles')
@endpush
@push('scripts')
<script>
$('#example').DataTable({
dom: 'Bfrtip',
buttons: ['excel'],
pageLength: 5,
});
</script>
@endpush

View File

@ -0,0 +1,221 @@
@extends('layouts.admin')
@section('contenido')
<!-- Título -->
<div class="row justify-content-center align-items-center">
<div class="col-lg-11 col-md-11 col-sm-11 col-xs-11">
<h3>Nueva Denuncia</h3>
</div>
</div>
<!-- Mensajes -->
<div class="row">
<div class="col-md-10">
@include('compartido.mensajes')
@include('compartido.errores')
</div>
</div>
<br>
<!-- Formulario para crear una nueva denuncia -->
<form method="POST" action="{{ route('denuncias.store') }}">
@csrf
<!-- Primera fila -->
<div class="row">
<!-- Nombre -->
<div class="form-group col-md-4">
<label for="nombre" class="form-check-label">
Nombre del denunciante (*)
</label>
<input
type="text"
name="nombre"
id="nombre"
value="{{ old('nombre') }}"
required
class="form-control"
>
</div>
<!-- Apellido -->
<div class="form-group col-md-4">
<label for="apellido" class="form-check-label">
Apellido del denunciante (*)
</label>
<input
type="text"
name="apellido"
id="apellido"
value="{{ old('apellido') }}"
required
class="form-control"
>
</div>
<!-- DNI -->
<div class="form-group col-md-4">
<label for="dni" class="form-check-label">
DNI (*)
</label>
<input
type="text"
name="dni"
id="dni"
value="{{ old('dni') }}"
required
class="form-control"
>
</div>
</div>
<!-- Segunda fila -->
<div class="row">
<!-- Fecha -->
<div class="form-group col-md-4">
<label for="fecha" class="form-check-label">
Fecha (*)
</label>
<input
type="date"
name="fecha"
id="fecha"
value="{{ old('fecha') }}"
required
class="form-control"
>
</div>
<!-- Tipo -->
<div class="form-group col-md-4">
<label for="tipo" class="form-check-label">
Tipo de denuncia (*)
</label>
<input
type="text"
name="tipo"
id="tipo"
value="{{ old('tipo') }}"
required
class="form-control"
>
</div>
<!-- Lugar -->
<div class="form-group col-md-4">
<label for="lugar" class="form-check-label">
Lugar (*)
</label>
<input
type="text"
name="lugar"
id="lugar"
value="{{ old('lugar') }}"
required
class="form-control"
>
</div>
</div>
<!-- Tercera fila -->
<div class="row">
<!-- Descripción -->
<div class="form-group col-md-12">
<label for="descripcion" class="form-check-label">
Descripción (*)
</label>
<textarea
name="descripcion"
id="descripcion"
rows="5"
required
class="form-control"
maxlength="500"
>{{ old('descripcion') }}</textarea>
</div>
</div>
<br>
<!-- Botones -->
<div class="row justify-content-center align-items-center">
<!-- Guardar -->
<div class="col-md-2">
<button
type="submit"
class="btn btn-success btn-block btn-lg"
>
Guardar
</button>
</div>
<!-- Salir -->
<div class="col-md-2">
<a
href="{{ route('denuncias.index') }}"
class="btn btn-primary btn-block btn-lg"
title="Salir"
>
Salir
</a>
</div>
</div>
</form>
@endsection
@push('scripts')
<script>
// Aquí podremos agregar JavaScript específico para esta vista.
</script>
@endpush

View File

@ -0,0 +1,189 @@
@extends('layouts.admin')
@section('contenido')
<div class="row justify-content-center align-items-center">
<div class="col-lg-11 col-md-11 col-sm-11 col-xs-11">
<h3>Ver Datos de la Denuncia</h3>
<div class="progress" style="height: 2px;"></div>
</div>
</div>
<br>
<!-- Datos del denunciante -->
<div class="row">
<!-- Nombre -->
<div class="form-group col-md-4">
<label for="nombre" class="form-check-label">
Nombre del denunciante
</label>
<input
type="text"
name="nombre"
id="nombre"
class="form-control"
value="{{ $denuncia->nombre_denunciante }}"
readonly
>
</div>
<!-- Apellido -->
<div class="form-group col-md-4">
<label for="apellido" class="form-check-label">
Apellido del denunciante
</label>
<input
type="text"
name="apellido"
id="apellido"
class="form-control"
value="{{ $denuncia->apellido_denunciante }}"
readonly
>
</div>
<!-- DNI -->
<div class="form-group col-md-4">
<label for="dni" class="form-check-label">
DNI
</label>
<input
type="text"
name="dni"
id="dni"
class="form-control"
value="{{ $denuncia->dni_denunciante }}"
readonly
>
</div>
</div>
<!-- Datos de la denuncia -->
<div class="row">
<!-- Fecha -->
<div class="form-group col-md-4">
<label for="fecha" class="form-check-label">
Fecha
</label>
<input
type="text"
name="fecha"
id="fecha"
class="form-control"
value="{{ $denuncia->fecha }}"
readonly
>
</div>
<!-- Tipo -->
<div class="form-group col-md-4">
<label for="tipo" class="form-check-label">
Tipo de denuncia
</label>
<input
type="text"
name="tipo"
id="tipo"
class="form-control"
value="{{ $denuncia->tipo }}"
readonly
>
</div>
<!-- Lugar -->
<div class="form-group col-md-4">
<label for="lugar" class="form-check-label">
Lugar
</label>
<input
type="text"
name="lugar"
id="lugar"
class="form-control"
value="{{ $denuncia->lugar }}"
readonly
>
</div>
</div>
<!-- Descripción -->
<div class="row">
<div class="form-group col-md-12">
<label for="descripcion" class="form-check-label">
Descripción
</label>
<textarea
name="descripcion"
id="descripcion"
rows="6"
class="form-control"
readonly
>{{ $denuncia->descripcion }}</textarea>
</div>
</div>
<br>
<legend></legend>
<!-- Botón Salir -->
<div class="row justify-content-center align-items-center">
<div class="col-md-2">
<a
href="{{ route('denuncias.index') }}"
class="btn btn-primary btn-block btn-lg"
title="Salir"
>
Salir
</a>
</div>
</div>
@endsection

View File

@ -0,0 +1,191 @@
@extends('layouts.admin')
@section('contenido')
<!-- Título -->
<div class="row justify-content-center align-items-center">
<div class="col-lg-11 col-md-11 col-sm-11 col-xs-11">
<h3>Editar Datos del Detenido</h3>
</div>
</div>
<!-- Mensajes -->
<div class="row">
<div class="col-md-10">
@include('compartido.mensajes')
@include('compartido.errores')
</div>
</div>
<br>
<!-- Formulario de edición -->
<form method="POST"
action="{{ route('detenidos.update', $detenido->id_detenido) }}">
@csrf
@method('PUT')
<!-- Primera fila -->
<div class="row">
<!-- Nombre -->
<div class="form-group col-md-4">
<label for="nombre" class="form-check-label">
Nombre (*)
</label>
<input
type="text"
name="nombre"
id="nombre"
class="form-control"
value="{{ old('nombre', $detenido->nombre) }}"
required
>
</div>
<!-- Apellido -->
<div class="form-group col-md-4">
<label for="apellido" class="form-check-label">
Apellido (*)
</label>
<input
type="text"
name="apellido"
id="apellido"
class="form-control"
value="{{ old('apellido', $detenido->apellido) }}"
required
>
</div>
<!-- DNI -->
<div class="form-group col-md-4">
<label for="dni" class="form-check-label">
DNI (*)
</label>
<input
type="text"
name="dni"
id="dni"
class="form-control"
value="{{ old('dni', $detenido->dni) }}"
required
>
</div>
</div>
<!-- Segunda fila -->
<div class="row">
<!-- Fecha de nacimiento -->
<div class="form-group col-md-4">
<label for="fecha_nacimiento" class="form-check-label">
Fecha de nacimiento (*)
</label>
<input
type="date"
name="fecha_nacimiento"
id="fecha_nacimiento"
class="form-control"
value="{{ old('fecha_nacimiento', $detenido->fecha_nacimiento) }}"
required
>
</div>
<!-- Domicilio -->
<div class="form-group col-md-8">
<label for="domicilio" class="form-check-label">
Domicilio (*)
</label>
<input
type="text"
name="domicilio"
id="domicilio"
class="form-control"
value="{{ old('domicilio', $detenido->domicilio) }}"
required
>
</div>
</div>
<br>
<!-- Botones -->
<div class="row justify-content-center align-items-center">
<!-- Guardar -->
<div class="col-md-2">
<button
type="submit"
class="btn btn-success btn-block btn-lg"
>
Guardar
</button>
</div>
<!-- Salir -->
<div class="col-md-2">
<a
href="{{ route('detenidos.index') }}"
class="btn btn-primary btn-block btn-lg"
title="Salir"
>
Salir
</a>
</div>
</div>
</form>
@endsection
@push('scripts')
<script>
// Aquí podremos agregar JavaScript específico para esta vista.
</script>
@endpush

View File

@ -0,0 +1,114 @@
@extends('layouts.admin')
@section('contenido')
<div class="row justify-content-center align-items-center">
<div class="col-12 col-md-11">
<h3>Listado de Detenidos</h3>
</div>
</div>
<div class="row justify-content-center align-items-center">
<div class="col-md-2">
<a href="{{ route('detenidos.create') }}"
class="btn btn-success btn-block btn-lg"
title="Nuevo Detenido">
Nuevo detenido
</a>
</div>
</div>
<br>
<div class="row justify-content-center align-items-center">
<div class="col-12 col-md-11">
@include('compartido.mensajes')
@include('compartido.errores')
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover" id="example">
<thead>
<tr>
<th>Id</th>
<th>Nombre</th>
<th>Apellido</th>
<th>DNI</th>
<th>Fecha de nacimiento</th>
<th>Domicilio</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
@foreach($detenidos as $det)
<tr>
<td>{{ $det->id_detenido }}</td>
<td>{{ $det->nombre }}</td>
<td>{{ $det->apellido }}</td>
<td>{{ $det->dni }}</td>
<td>{{ $det->fecha_nacimiento }}</td>
<td>{{ $det->domicilio }}</td>
<td align="center">
<!-- Ver -->
<a class="btn btn-info"
href="{{ route('detenidos.show', $det->id_detenido) }}"
title="Ver más">
<i class="fa fa-eye"></i>
</a>
<!-- Editar -->
<a class="btn btn-warning"
href="{{ route('detenidos.edit', $det->id_detenido) }}"
title="Editar">
<i class="fas fa-edit"></i>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection
@push('styles')
@endpush
@push('scripts')
<script>
$('#example').DataTable({
dom: 'Bfrtip',
buttons: ['excel'],
pageLength: 5,
});
</script>
@endpush

View File

@ -0,0 +1,181 @@
@extends('layouts.admin')
@section('contenido')
<!-- Título -->
<div class="row justify-content-center align-items-center">
<div class="col-lg-11 col-md-11 col-sm-11 col-xs-11">
<h3>Nuevo Detenido</h3>
</div>
</div>
<!-- Mensajes -->
<div class="row">
<div class="col-md-10">
@include('compartido.mensajes')
@include('compartido.errores')
</div>
</div>
<br>
<!-- Formulario para crear un nuevo detenido -->
<form method="POST" action="{{ route('detenidos.store') }}">
@csrf
<!-- Primera fila -->
<div class="row">
<!-- Nombre -->
<div class="form-group col-md-4">
<label for="nombre" class="form-check-label">
Nombre (*)
</label>
<input
type="text"
name="nombre"
id="nombre"
value="{{ old('nombre') }}"
required
class="form-control"
>
</div>
<!-- Apellido -->
<div class="form-group col-md-4">
<label for="apellido" class="form-check-label">
Apellido (*)
</label>
<input
type="text"
name="apellido"
id="apellido"
value="{{ old('apellido') }}"
required
class="form-control"
>
</div>
<!-- DNI -->
<div class="form-group col-md-4">
<label for="dni" class="form-check-label">
DNI (*)
</label>
<input
type="text"
name="dni"
id="dni"
value="{{ old('dni') }}"
required
class="form-control"
>
</div>
</div>
<!-- Segunda fila -->
<div class="row">
<!-- Fecha de nacimiento -->
<div class="form-group col-md-4">
<label for="fecha_nacimiento" class="form-check-label">
Fecha de nacimiento (*)
</label>
<input
type="date"
name="fecha_nacimiento"
id="fecha_nacimiento"
value="{{ old('fecha_nacimiento') }}"
required
class="form-control"
>
</div>
<!-- Domicilio -->
<div class="form-group col-md-8">
<label for="domicilio" class="form-check-label">
Domicilio (*)
</label>
<input
type="text"
name="domicilio"
id="domicilio"
value="{{ old('domicilio') }}"
required
class="form-control"
>
</div>
</div>
<br>
<!-- Botones -->
<div class="row justify-content-center align-items-center">
<!-- Guardar -->
<div class="col-md-2">
<button
type="submit"
class="btn btn-success btn-block btn-lg"
>
Guardar
</button>
</div>
<!-- Salir -->
<div class="col-md-2">
<a
href="{{ route('detenidos.index') }}"
class="btn btn-primary btn-block btn-lg"
title="Salir"
>
Salir
</a>
</div>
</div>
</form>
@endsection
@push('scripts')
<script>
// Aquí podremos agregar JavaScript específico para esta vista.
</script>
@endpush

View File

@ -0,0 +1,148 @@
@extends('layouts.admin')
@section('contenido')
<div class="row justify-content-center align-items-center">
<div class="col-lg-11 col-md-11 col-sm-11 col-xs-11">
<h3>Ver Datos del Detenido</h3>
<div class="progress" style="height: 2px;"></div>
</div>
</div>
<br>
<!-- Datos del detenido -->
<div class="row">
<!-- Nombre -->
<div class="form-group col-md-4">
<label for="nombre" class="form-check-label">
Nombre
</label>
<input
type="text"
name="nombre"
id="nombre"
class="form-control"
value="{{ $detenidos->nombre }}"
readonly
>
</div>
<!-- Apellido -->
<div class="form-group col-md-4">
<label for="apellido" class="form-check-label">
Apellido
</label>
<input
type="text"
name="apellido"
id="apellido"
class="form-control"
value="{{ $detenidos->apellido }}"
readonly
>
</div>
<!-- DNI -->
<div class="form-group col-md-4">
<label for="dni" class="form-check-label">
DNI
</label>
<input
type="text"
name="dni"
id="dni"
class="form-control"
value="{{ $detenidos->dni }}"
readonly
>
</div>
</div>
<!-- Datos personales -->
<div class="row">
<!-- Fecha de nacimiento -->
<div class="form-group col-md-4">
<label for="fecha_nacimiento" class="form-check-label">
Fecha de nacimiento
</label>
<input
type="text"
name="fecha_nacimiento"
id="fecha_nacimiento"
class="form-control"
value="{{ $detenidos->fecha_nacimiento }}"
readonly
>
</div>
<!-- Domicilio -->
<div class="form-group col-md-8">
<label for="domicilio" class="form-check-label">
Domicilio
</label>
<input
type="text"
name="domicilio"
id="domicilio"
class="form-control"
value="{{ $detenidos->domicilio }}"
readonly
>
</div>
</div>
<br>
<legend></legend>
<!-- Botón Salir -->
<div class="row justify-content-center align-items-center">
<div class="col-md-2">
<a
href="{{ route('detenidos.index') }}"
class="btn btn-primary btn-block btn-lg"
title="Salir"
>
Salir
</a>
</div>
</div>
@endsection

View File

@ -82,14 +82,14 @@
<a class="btn btn-warning"
href="{{ route('personal.edit', $per->id_personal) }}"
title="Editar">
<i class="fa fa-pencil"></i>
<i class="fas fa-edit"></i>
</a>
<!-- btn-danger => rojo (acción destructiva como eliminar) -->
<button class="btn btn-danger"
onclick="return confirm('¿Está seguro de eliminar este efectivo?');"
title="Eliminar">
<i class="fa fa-remove"></i>
<i class="fas fa-trash"></i>
</button>
</form>
@else

View File

@ -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');