se agrega modelo de asistencias, correcciones de codigo qr y procesador de unsubscribes

This commit is contained in:
2026-02-20 16:11:57 -06:00
parent cf4037cb80
commit 9e227f9653
67 changed files with 691 additions and 114 deletions
+34
View File
@@ -0,0 +1,34 @@
@extends('layouts.landing')
@section('title',"Crear")
@section('content')
<div class="container-fluid">
<div class="card shadow mb-4">
<div class="card-header py-3">
<div class="d-sm-flex align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">Crear códgio qr</h6>
<a href="{{route('areacode.index')}}" class="d-sm-inline-block btn btn-sm btn-primary shadow-sm"><i class="fas fa-download fa-sm text-white-50"></i> Regresar</a>
</div>
</div>
<div class="card-body">
<form action="{{route('areacode.store')}}" method="POST">
@csrf
<div class="mb-3">
<label class="small mb-1">Nombre</label>
<input class="form-control" name="name">
</div>
<div class="mb-3">
<label class="small mb-1">Descripción</label>
<input class="form-control" name="description">
</div>
<input class="btn btn-primary" type="submit" value="Crear">
</form>
</div>
</div>
</div>
@endsection
+39
View File
@@ -0,0 +1,39 @@
@extends('layouts.landing')
@section('title',"Edit")
@section('content')
<div class="container-fluid">
<div class="card shadow mb-4">
<div class="card-header py-3">
<div class="d-sm-flex align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">Editar código qr</h6>
<a href="{{route('areacode.index')}}" class="d-sm-inline-block btn btn-sm btn-primary shadow-sm"><i class="fas fa-download fa-sm text-white-50"></i> Regresar</a>
</div>
</div>
<div class="card-body">
@if (session('info'))
<div class="alert alert-success">
<strong>{{session('info')}}</strong>
</div>
@endif
<form action="{{route('areacode.update',$areacode->id)}}" method="POST">
@method('PUT')
@csrf
<div class="mb-3">
<label class="small mb-1">Nombre</label>
<input class="form-control" name="name" value="{{$areacode->name}}">
</div>
<div class="mb-3">
<label class="small mb-1">Descripción</label>
<input class="form-control" name="description" value="{{$areacode->description}}">
</div>
<input class="btn btn-primary" type="submit" value="Update">
</form>
</div>
</div>
</div>
@endsection
+72
View File
@@ -0,0 +1,72 @@
@extends('layouts.landing')
@section('head')
@include('layouts._partials.tablaStyle')
@endsection
@section('title',"Inicio")
@section('content')
<div class="container-fluid">
<div class="card shadow mb-4">
<div class="card-header py-3">
<div class="d-sm-flex align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">Códigos qr</h6>
@can('areacode.create')
<a href="{{route('areacode.create')}}" class="d-sm-inline-block btn btn-sm btn-primary shadow-sm"><i class="fas fa-download fa-sm text-white-50"></i> Crear código qr</a>
@endcan
</div>
</div>
<div class="card-body">
<div class="container-fluid">
<table id="tcont" class="table table-striped table-bordered nowrap table-hover" style="width:100%;">
<thead>
<tr>
<th>Id</th>
<th>Nombre</th>
<th>Descripción</th>
<th>Opciones</th>
</tr>
</thead>
<tbody>
@forelse ($areacodes as $areacode)
<tr style="width:100%">
<td>{{$areacode->id}}</td>
<td><a href="{{route('areacode.show',$areacode->id)}}">{{$areacode->name}}</a></td>
<td>{{$areacode->description}}</td>
<td class="row mx-auto">
@can('areacode.edit')
<div class="col-sm-6 col-md-6"><a class="btn btn-primary" href="{{route('areacode.edit',$areacode->id)}}">Edit</a></div>
@endcan
@can('areacode.destroy')
<div class="col-sm-6 col-md-6">
<form class="delete-form" action="{{route('areacode.destroy',$areacode->id)}}" method="POST">
@csrf
@method('DELETE')
<input type="submit" value="DELETE" class="btn btn-danger">
</form>
</div>
@endcan
</td>
</tr>
@empty
<p>Sin códigos qr.</p>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
@include('layouts._partials.tablaScript')
@include('layouts._partials.delete')
@endsection
+23
View File
@@ -0,0 +1,23 @@
@extends('layouts.landing')
@section('title',"show")
@section('content')
<div class="container-fluid">
<div class="card shadow mb-4">
<div class="card-header py-3">
<div class="d-sm-flex align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">Datos del código qr</h6>
<a href="{{route('areacode.index')}}" class="d-sm-inline-block btn btn-sm btn-primary shadow-sm"><i class="fas fa-download fa-sm text-white-50"></i> Regresar</a>
</div>
</div>
<div class="card-body">
<h1>{{$areacode->name}}</h1>
<p>Descripción: {{ $areacode->description}}</p>
</div>
</div>
</div>
@endsection
+19 -5
View File
@@ -11,13 +11,27 @@
</div>
<div class="card-body">
@livewire('code-scanner')
@if ($registros <= 3)
<div style="min-height:300px">
@livewire('code-scanner')
@push('scripts')
<script src="https://unpkg.com/html5-qrcode" defer></script>
@endpush
</div>
@endif
<div class=" text-center">
<h2 class="mb-3">Registros del dia {{ ucfirst(now()->locale('es')->translatedFormat('l d \d\e F \d\e Y')) }}</h2>
@foreach ($codes as $code)
<p>{{$code->registro->format('h:i A')}}</p>
@endforeach
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<script src="https://unpkg.com/html5-qrcode"></script>
@endsection
@@ -4,7 +4,7 @@
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">
<!-- Sidebar Toggle (Topbar) -->
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3 ">
<i class="fa fa-bars"></i>
</button>
@@ -1,8 +1,6 @@
<div class="sidebar bg-primary" id="sidebar">
<!-- Sidebar -->
<ul class="navbar-nav sidebar sidebar-dark accordion" id="accordionSidebar">
<ul class="navbar-nav bg-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="">
<div class="sidebar-brand-icon">
@@ -95,6 +93,14 @@
@can('mail.index')
<a class="collapse-item" href="{{ route('mail.index') }}" style="color:#85888e">Mail</a>
@endcan
@can('areacode.index')
<a class="collapse-item" href="{{ route('areacode.index') }}" style="color:#85888e">Códigos QR</a>
@endcan
@can('horario.index')
<a class="collapse-item" href="{{ route('horario.index') }}" style="color:#85888e">Horarios</a>
@endcan
</div>
</div>
</li>
@@ -177,4 +183,3 @@
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
</ul>
</div>
+19 -1
View File
@@ -7,9 +7,10 @@
{{-- Livewire styles --}}
@livewireStyles
</head>
<body id="page-top">
<body id="page-top" class="sidebar-toggled">
<div id="wrapper">
@include('layouts._partials.menu')
@@ -83,6 +84,23 @@ window.addEventListener('close-modal', () => {
);
modal?.hide();
});
document.addEventListener("DOMContentLoaded", function () {
function toggleSidebarByScreen() {
if (window.innerWidth < 768) {
document.body.classList.add("sidebar-toggled");
document.querySelector(".sidebar").classList.add("toggled");
} else {
document.body.classList.remove("sidebar-toggled");
document.querySelector(".sidebar").classList.remove("toggled");
}
}
toggleSidebarByScreen();
window.addEventListener("resize", toggleSidebarByScreen);
});
</script>
@@ -2,8 +2,11 @@
<div wire:ignore>
<div id="reader"></div>
<p>Latitud: <span id="latitud">Esperando GPS...</span></p>
<div class="d-none">
<p>Latitud: <span id="latitud">Esperando GPS...</span></p>
<p>Longitud: <span id="longitud">Esperando GPS...</span></p>
</div>
</div>
</div>