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