This commit is contained in:
Laucha1312
2026-06-04 15:20:26 -03:00
parent fdd0fef3f0
commit cc049c6cb6
64 changed files with 8914 additions and 0 deletions
+131
View File
@@ -0,0 +1,131 @@
@extends('admin.layout')
@section('title', 'Configuración del Sistema')
@section('content')
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card shadow-sm border-0">
<div class="card-header bg-white py-3 border-0">
<h4 class="mb-0 text-primary"><i class="bi bi-gear-fill me-2"></i>Configuración General</h4>
</div>
<div class="card-body p-4">
<form action="{{ route('admin.settings.update') }}" method="POST" class="confirm-submit" data-confirm-text="¿Deseas actualizar la configuración del sistema?">
@csrf
<div class="mb-4">
<label for="dias_expiracion_eventos" class="form-label fw-bold">Días para expiración de eventos</label>
<div class="input-group">
<input type="number" name="dias_expiracion_eventos" id="dias_expiracion_eventos"
class="form-control @error('dias_expiracion_eventos') is-invalid @enderror"
value="{{ old('dias_expiracion_eventos', $diasExpiracion) }}"
min="1" required>
<span class="input-group-text">Días</span>
</div>
<div class="form-text text-muted mt-2">
<i class="bi bi-info-circle me-1"></i>
Los eventos cuya fecha sea anterior a esta cantidad de días serán eliminados automáticamente junto con sus QRs asociados.
</div>
</div>
<div class="mb-4">
<label for="backup_frequency" class="form-label fw-bold">Frecuencia del Backup Automático</label>
<select name="backup_frequency" id="backup_frequency" class="form-select @error('backup_frequency') is-invalid @enderror">
<option value="daily" {{ old('backup_frequency', $backupFreq) == 'daily' ? 'selected' : '' }}>Diario (Cada noche)</option>
<option value="weekly" {{ old('backup_frequency', $backupFreq) == 'weekly' ? 'selected' : '' }}>Semanal (Cada lunes)</option>
<option value="monthly" {{ old('backup_frequency', $backupFreq) == 'monthly' ? 'selected' : '' }}>Mensual (Día 1 de cada mes)</option>
</select>
<div class="form-text text-muted mt-2">
<i class="bi bi-shield-check me-1"></i>
Define con qué frecuencia el sistema generará un respaldo completo de la base de datos y archivos multimedia.
</div>
</div>
<div class="mb-4">
<label for="email_reportes" class="form-label fw-bold">Email para Reportes Semanales</label>
<input type="email" name="email_reportes" id="email_reportes"
class="form-control @error('email_reportes') is-invalid @enderror"
value="{{ old('email_reportes', $emailReportes) }}"
placeholder="ejemplo@onapb.com" required>
<div class="form-text text-muted mt-2">
<i class="bi bi-envelope-at me-1"></i>
Dirección donde se enviará el resumen de actividad de la liga todos los lunes.
</div>
</div>
<hr class="my-4">
<div class="d-flex justify-content-between align-items-center">
<span class="text-muted small">
<i class="bi bi-clock-history me-1"></i>
Tarea programada: <code>app:cleanup-old-events</code> (Ejecución diaria)
</span>
<button type="submit" class="btn btn-primary px-4">
<i class="bi bi-save me-2"></i>Guardar Cambios
</button>
</div>
</form>
</div>
</div>
<div class="card shadow-sm border-0 mt-4">
<div class="card-header bg-white py-3 border-0">
<h4 class="mb-0 text-success"><i class="bi bi-heart-pulse-fill me-2"></i>Salud del Sistema (CRON)</h4>
</div>
<div class="card-body p-4">
<div class="row align-items-center mb-4">
<div class="col-md-6 border-end">
<div class="d-flex align-items-center mb-3">
<i class="bi bi-calendar-check fs-3 text-success me-3"></i>
<div>
<small class="text-muted d-block uppercase small">Última ejecución del Programador</small>
<span class="fw-bold fs-5 text-dark">{{ $lastRun }}</span>
</div>
</div>
<div class="d-flex align-items-center">
<i class="bi bi-clock fs-3 text-info me-3"></i>
<div>
<small class="text-muted d-block uppercase small">Hora actual del servidor</small>
<span class="fw-bold fs-5">{{ now()->format('d/m/Y H:i:s') }}</span>
</div>
</div>
</div>
<div class="col-md-6 ps-md-4 mt-3 mt-md-0">
<div class="alert alert-info border-0 shadow-sm py-2 px-3 mb-0">
<i class="bi bi-info-circle-fill me-2"></i>
<small>Si el "Última ejecución" no coincide con el minuto actual, es posible que el <b>Cron Job de Hostinger</b> no esté configurado correctamente.</small>
</div>
</div>
</div>
<h5 class="text-dark mb-3 small fw-bold">EJECUCIÓN MANUAL DE TAREAS</h5>
<div class="d-flex flex-wrap gap-2">
<form action="{{ route('admin.settings.manual.task') }}" method="POST" class="confirm-submit" data-confirm-text="¿Ejecutar limpieza de QRs antiguos ahora?">
@csrf
<input type="hidden" name="command" value="cleanup">
<button type="submit" class="btn btn-outline-danger btn-sm">
<i class="bi bi-trash me-1"></i>Limpiar QRs Antiguos
</button>
</form>
<form action="{{ route('admin.settings.manual.task') }}" method="POST" class="confirm-submit" data-confirm-text="¿Iniciar backup manual? Esto puede tardar unos segundos.">
@csrf
<input type="hidden" name="command" value="backup">
<button type="submit" class="btn btn-outline-primary btn-sm">
<i class="bi bi-cloud-arrow-up me-1"></i>Forzar Backup
</button>
</form>
<form action="{{ route('admin.settings.manual.task') }}" method="POST" class="confirm-submit" data-confirm-text="¿Enviar informe semanal de rendimiento ahora?">
@csrf
<input type="hidden" name="command" value="report">
<button type="submit" class="btn btn-outline-info btn-sm">
<i class="bi bi-envelope me-1"></i>Enviar Informe Semanal
</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection