103 lines
2.0 KiB
PHP
103 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire;
|
|
|
|
use App\Models\Alumno;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Livewire\Attributes\On;
|
|
use Livewire\Component;
|
|
use Livewire\WithFileUploads;
|
|
|
|
class Documentos extends Component
|
|
{
|
|
use WithFileUploads;
|
|
|
|
public $curp;
|
|
public $acta;
|
|
public $comprobante;
|
|
public $user;
|
|
|
|
public $alumno;
|
|
public $documentosPorTipo = [];
|
|
|
|
#[On('documentos')]
|
|
public function documentos()
|
|
{
|
|
$this->dispatch('open-documentos-modal');
|
|
}
|
|
|
|
public function cargarDocumentos()
|
|
{
|
|
$this->alumno = Auth::user()->alumnos()->first();
|
|
|
|
if ($this->alumno) {
|
|
$this->documentosPorTipo = $this->alumno
|
|
->documentos()
|
|
->get()
|
|
->keyBy('tipo');
|
|
}
|
|
}
|
|
|
|
|
|
public function store()
|
|
{
|
|
|
|
$this->validate([
|
|
'curp' => 'nullable|file|mimes:pdf,jpg,png',
|
|
'acta' => 'nullable|file|mimes:pdf,jpg,png',
|
|
'comprobante' => 'nullable|file|mimes:pdf,jpg,png',
|
|
]);
|
|
|
|
$alumno = Auth::user()->alumnos->first();
|
|
|
|
if (!$alumno) {
|
|
abort(404, 'Alumno no encontrado');
|
|
}
|
|
|
|
$tipos = ['curp', 'acta', 'comprobante'];
|
|
|
|
foreach ($tipos as $tipo) {
|
|
|
|
if ($this->$tipo) {
|
|
|
|
$ruta = $this->$tipo->store('documentos', 'public');
|
|
|
|
$alumno->documentos()->updateOrCreate(
|
|
['tipo' => $tipo],
|
|
[
|
|
'archivo' => $ruta,
|
|
'status' => 0
|
|
]
|
|
);
|
|
}
|
|
}
|
|
|
|
// 🔥 recargar correctamente
|
|
$this->cargarDocumentos();
|
|
|
|
$this->reset(['curp', 'acta', 'comprobante']);
|
|
|
|
$this->dispatch('close-documentos-modal');
|
|
|
|
$this->dispatch('swal',
|
|
icon: 'success',
|
|
title: 'Éxito!',
|
|
text: 'Documentos cargados',
|
|
timer: 2000,
|
|
confirm: false,
|
|
closeModal: true,
|
|
reload: 2000
|
|
);
|
|
}
|
|
|
|
public function mount()
|
|
{
|
|
$this->cargarDocumentos();
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.documentos');
|
|
}
|
|
}
|