Skip to content

Commit

Permalink
Actualizacion 9
Browse files Browse the repository at this point in the history
  • Loading branch information
MikeLG90 committed Aug 22, 2024
1 parent 8e4c1b0 commit dc6a4a3
Show file tree
Hide file tree
Showing 20 changed files with 988 additions and 188 deletions.
14 changes: 14 additions & 0 deletions app/Http/Controllers/Auth/RegisteredUserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules;
use Illuminate\Support\Facades\DB;
use Illuminate\View\View;
use Faker\Factory as Faker;

Expand Down Expand Up @@ -47,6 +48,10 @@ public function store(Request $request): RedirectResponse
$username = $faker->unique()->userName;
$rol_id = 1;

DB::beginTransaction();

try {

$user = User::create([
'nombre_usuario' => $username,
'email' => $request->email,
Expand All @@ -64,13 +69,22 @@ public function store(Request $request): RedirectResponse
$persona->sexo = $request->genero;
$persona->save();

$user->persona_id = $persona->persona_id;
$user->save();

$personaId = $persona->persona_id;
$user->persona_id = $personaId;

event(new Registered($user));

Auth::login($user);

DB::commit();

return redirect(RouteServiceProvider::HOME);
} catch (\Exception $e) {
DB::rollBack();
return redirect()->back()->withErrors(['error' => 'Hubo un error al registrar el usuario']);
}
}
}
31 changes: 30 additions & 1 deletion app/Http/Controllers/DashController.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
use ArielMejiaDev\LarapexCharts\LarapexChart;
use Illuminate\Support\Facades\Auth;


class DashController extends Controller
Expand Down Expand Up @@ -115,7 +116,7 @@ public function index()
]
]); */

//dd(Auth::user()->role->rol);
return view('barebone', compact('conteo_hoy','chart', 'conteo_permitido', 'conteo_denegado', 'porcentaje_perm', 'porcentaje_deneg'));
}

Expand Down Expand Up @@ -148,5 +149,33 @@ public function pollAccessCount(Request $request)

usleep(500000);
}

}

public function miActividad()
{
setlocale(LC_TIME, 'es_ES.UTF-8');
Carbon::setLocale('es');

$areas = EventosAcceso::accesosUser();

// mapeado del array areas para convertir el formato de fecha y hora al convencional
$areasFormateadas = $areas->map(function($area){
$area->created_at = Carbon::parse($area->created_at)->translatedFormat('j \d\e F \d\e Y h:i A');
return $area;
});

//obtener el último acceso del usuario
$ultimoAcceso = EventosAcceso::where('usuario_id', Auth::user()->usuario_id)
->orderBy('created_at', 'desc')
->first();

// formatear el tiempo transcurrido desde el último acceso
// la funcion de carbon diffForHumans() Formatea la fecha del último acceso para que se muestre como "hace 2 horas" o similar.
$ultimoAccesoFormat = $ultimoAcceso
? Carbon::parse($ultimoAcceso->created_at)->diffForHumans()
: 'No se ha registrado ningún acceso';

return view('dashboard-u', compact('areasFormateadas', 'ultimoAccesoFormat'));
}
}
9 changes: 9 additions & 0 deletions app/Http/Controllers/EventosController.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Auth;

class EventosController extends Controller
{
Expand All @@ -24,4 +25,12 @@ public function index()

return view('pages-control.historial', compact('eventos'));
}

public function miHistorial()
{
$user_id = Auth::user()->usuario_id;
$eventos = EventosAcceso::accesosUsers($user_id);

return view('pages-control.mi-historial', compact('eventos'));
}
}
168 changes: 168 additions & 0 deletions app/Http/Controllers/SolicitudController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Area;
use App\Models\Solicitud;
use App\Models\SolicitudUsuarios;
use App\Models\EventosAcceso;
use App\Models\Autorizaciones;
use RealRashid\SweetAlert\Facades\Alert;
use ArielMejiaDev\LarapexCharts\LarapexChart;
use App\Models\User;
use DateTime;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Auth;

class SolicitudController extends Controller
{
public function crearSolicitud()
{
$users_i = User::users();
$areas = Area::all();


return view('pages-control.solicitudes.solicitud_form', compact('users_i', 'areas'));

}

public function store(Request $request)
{
$solicitud = new Solicitud();
$solicitud->usuario_id = Auth::user()->usuario_id;
$solicitud->mensaje = $request->mensaje;
$solicitud->area_id = $request->area;
$solicitud->mensaje = $request->mensaje;
$solicitud->save();

$usuarios = $request->usuarios;

foreach ($usuarios as $user)
{
$solicitud_usuario = new SolicitudUsuarios();
$solicitud_usuario->solicitud_id = $solicitud->solicitud_id;
$solicitud_usuario->usuario_id = $user;
$solicitud_usuario->updated_at = now();
$solicitud_usuario->save();
}

return redirect()->back()->with('success', 'Se acaba de enviar tu solicitud');


}

public function index()
{
setlocale(LC_TIME, 'es_ES.UTF-8');
Carbon::setLocale('es');

$solicitudes = DB::table('solicitudes as a')
->join('usuarios as b', 'a.usuario_id', '=', 'b.usuario_id')
->join('persona as c', 'b.usuario_id', '=', 'c.usuario_id')
->join('areas as e', 'a.area_id', '=', 'e.area_id')
->select('c.nombre', 'c.ape_materno', 'c.ape_paterno', 'a.created_at', 'a.solicitud_id', 'a.estado')
->get();

/* foreach($solicitudes as $solicitud) {
$solicitudes_usuario = DB::table('solicitud_usuarios as s')
->join('solicitudes as b', 's.solicitud_id', '=', 'b.solicitud_id')
->join('usuarios as u', 's.usuario_id', '=', 'u.usuario_id')
->join('persona as p', 'u.usuario_id', '=', 'p.usuario_id')
->select('b.area_id', 's.usuario_id')
->where('s.solicitud_id', $solicitud->solicitud_id)
->get();
} */

$solicitudes_format = collect($solicitudes)->map(function($solicitud){
return [
'nombre' => $solicitud->nombre . ' ' . $solicitud->ape_materno . ' '. $solicitud->ape_paterno,
'id' => $solicitud->solicitud_id,
'estado' => $solicitud->estado,
'fecha' => $solicitud->created_at
? Carbon::parse($solicitud->created_at)->diffForHumans()
: 'No se ha registrado fecha',
];
});

$solicitudes_array = $solicitudes_format->toArray();




return view('pages-control.solicitudes.buzon', compact('solicitudes_array'));

}

public function verSolicitud(String $id)
{
setlocale(LC_TIME, 'es_ES.UTF-8');
Carbon::setLocale('es');

$solicitud = DB::table('solicitudes as a')
->join('usuarios as b', 'a.usuario_id', '=', 'b.usuario_id')
->join('persona as c', 'b.usuario_id', '=', 'c.usuario_id')
->join('areas as e', 'a.area_id', '=', 'e.area_id')
->where('a.solicitud_id', $id)
->select('c.nombre', 'c.ape_materno', 'c.ape_paterno', 'a.created_at', 'a.solicitud_id', 'a.estado', 'a.created_at', 'a.fecha_deseada',
'a.mensaje', 'a.area_id')
->first();

$fecha_creacion = Carbon::parse($solicitud->created_at)->translatedFormat('j \d\e F \d\e Y');
$fecha_deseada = Carbon::parse($solicitud->fecha_deseada)->translatedFormat('j \d\e F \d\e Y');

$usuarios = DB::table('solicitud_usuarios as s')
->join('solicitudes as b', 's.solicitud_id', '=', 'b.solicitud_id')
->join('usuarios as u', 's.usuario_id', '=', 'u.usuario_id')
->join('persona as p', 'u.usuario_id', '=', 'p.usuario_id')
->join('roles as r', 'u.rol_id', '=', 'r.rol_id')
->select(DB::raw('CONCAT(p.nombre, " ", p.ape_materno, " ", p.ape_paterno) AS full_name'), 'r.rol', 'b.area_id', 's.usuario_id',)
->where('s.solicitud_id', $solicitud->solicitud_id)
->get();


// dd($usuarios);

return view('pages-control.solicitudes.ver-solicitud', compact('solicitud', 'fecha_creacion', 'fecha_deseada', 'usuarios'));

}

public function concederPermisos(Request $request)
{
// Valida los datos recibidos
$request->validate([
'selected_items' => 'array', // Asegúrate de que sea un array
'selected_items.*' => 'integer' // Cada elemento del array debe ser un entero
]);

// Obtén los IDs seleccionados
$users = $request->input('selected_items', []);
$area = $request->area;

// dd($users);

foreach($users as $user)
{
$autorizacion = new Autorizaciones;
$autorizacion->usuario_id = $user;
$autorizacion->area_id = $area;
$now = now(); // Obtener la fecha y hora actual
$autorizacion->created_at = $now;
$autorizacion->updated_at = $now;
$autorizacion->expires_at = Carbon::create($request->fecha);
$autorizacion->save();

}

$solicitud = Solicitud::find($request->solicitud);
$solicitud->estado = 'ACEPTADA';
$solicitud->save();

return redirect()->back()->with('success', 'Los usuarios ahora tienen acceso a esta área');

}
}
1 change: 1 addition & 0 deletions app/Http/Kernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,6 @@ class Kernel extends HttpKernel
'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'checkRole' => \App\Http\Middleware\CheckRole::class,
];
}
32 changes: 32 additions & 0 deletions app/Http/Middleware/CheckRole.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\Auth;

class CheckRole
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next, $role): Response
{

if(!Auth::check()) {
return redirect()->route('login');
}

$user = Auth::user();

if ($user->role->rol !== $role) {
return redirect('/user-info');
}

return $next($request);
}
}
34 changes: 34 additions & 0 deletions app/Models/EventosAcceso.php
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,40 @@ public static function accesosHoy()

return $sql->get();
}

public static function accesosUsers($user_id = null)
{
$sql = DB::table('eventos_acceso as e')
->join('usuarios as u', 'e.usuario_id', '=', 'u.usuario_id')
->join('persona as p', 'u.usuario_id', '=', 'p.usuario_id')
->join('areas as a', 'e.area_id', '=', 'a.area_id')
->select(DB::raw('CONCAT(p.nombre, " ", p.ape_materno, " ", p.ape_paterno) AS full_name'), 'a.nombre', 'e.permiso', 'e.fecha_hora')
->where('e.usuario_id', $user_id)
->orderBy('e.fecha_hora', 'desc');

return $sql->get();
}

public static function accesosUser()
{
$fechaInicio = now()->startOfWeek();
$fechaFin = now()->endOfWeek();

$sql = DB::table('eventos_acceso as e')
->join('usuarios as u', 'e.usuario_id', '=', 'u.usuario_id')
->join('areas as a', 'e.area_id', '=', 'a.area_id')
->select('a.nombre', 'e.created_at',
DB::raw("(SELECT COUNT(*) FROM eventos_acceso
WHERE eventos_acceso.usuario_id = u.usuario_id AND eventos_acceso.area_id = a.area_id
AND eventos_acceso.created_at BETWEEN '$fechaInicio' AND '$fechaFin') as conteo
")
)
->where('u.usuario_id', '=', auth()->user()->usuario_id)
->orderBy('e.created_at', 'desc')
->limit(3);

return $sql->get();
}
}


Expand Down
20 changes: 20 additions & 0 deletions app/Models/Notificacion.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Notificacion extends Model
{
use HasFactory;

protected $table = 'notificaciones';
protected $primaryKey = 'notificacion_id';

protected $fillabale = [
'mensaje',
'usuario_id'

];
}
Loading

0 comments on commit dc6a4a3

Please sign in to comment.