Loading app/Exports/ContactosExport.php +12 −6 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ use Maatwebsite\Excel\Concerns\WithHeadings; use App\Models\Contacto; use App\Models\Grupos; use Exception; class ContactosExport implements FromCollection, WithHeadings { Loading Loading @@ -50,10 +51,15 @@ public function collection() } // Mapear los datos a un formato exportable if (!$contactos->isEmpty()) { return $contactos->map(function ($contacto) { return $this->formatContactoData($contacto); }); }else{ return throw new Exception('No se encontraron contactos con los filtros seleccionados.'); } } public function headings(): array Loading @@ -77,7 +83,7 @@ private function applyFilters($query) }); } elseif (!empty($this->filters['grupos'])) { $grupoId = $this->filters['grupos']; $subgruposIds = Grupos::find($grupoId)->subgrupos->pluck('id')->toArray(); $subgruposIds = Grupos::find(153)->subgrupos->pluck('id')->toArray(); $query->where(function ($query) use ($grupoId, $subgruposIds) { // Contactos directamente en el grupo Loading resources/views/adminGen/contactos/export.blade.php +1 −36 Original line number Diff line number Diff line Loading @@ -16,34 +16,6 @@ <p><b>Nota: </b>Este módulo aun se encuentra en desarrollo, por lo que podría haber errores.</p> <div class="p-6 bg-gray-100 rounded-lg shadow-md"> <form method="GET" action="" class="space-y-4" onsubmit="event.preventDefault(); logData();"> <!-- Listas --> <!-- <div class="flex flex-col space-y-2"> <label for="listas" class="text-gray-700 font-semibold">Listas:</label> <div class="flex space-x-2"> <select id="listas" class="w-full px-3 py-2 bg-white border border-gray-300 rounded-md"> <option value="" disabled selected>Selecciona una lista</option> @foreach($listas as $lista) <option value="{{ $lista->id }}">{{ $lista->nombre }}</option> @endforeach </select> <button type="button" onclick="agregarEtiqueta('listas', 'listasAgregadas')" class="bg-blue-500 text-white px-3 py-2 rounded-md">Agregar</button> </div> <div id="listasAgregadas" class="flex flex-wrap space-x-2 mt-2"></div> </div> --> <!-- Características --> <!-- <div class="flex flex-col space-y-2"> <label for="caracteristicas" class="text-gray-700 font-semibold">Características:</label> <div class="flex space-x-2"> <select id="caracteristicas" class="w-full px-3 py-2 bg-white border border-gray-300 rounded-md"> <option value="" disabled selected>Selecciona una característica</option> @foreach($caracteristicas as $caracteristica) <option value="{{ $caracteristica->id }}">{{ $caracteristica->nombre }}</option> @endforeach </select> <button type="button" onclick="agregarEtiqueta('caracteristicas', 'caracteristicasAgregadas')" class="bg-blue-500 text-white px-3 py-2 rounded-md">Agregar</button> </div> <div id="caracteristicasAgregadas" class="flex flex-wrap space-x-2 mt-2"></div> </div> --> <!-- Contacto --> <div class="flex items-center space-x-2"> Loading Loading @@ -144,13 +116,6 @@ class="w-full px-3 py-2 bg-white border border-gray-300 rounded-md" </form> </div> <div class="flex items-center flex-wrap mb-5"> </div> <table id="myTable" class="whitespace-nowrap table-hover"> <thead></thead> <tbody></tbody> </table> </div> <div id="loader-container" class="fixed inset-0 flex items-center justify-center bg-gray-500 bg-opacity-75 hidden"> <span id="loader" class="animate-spin border-8 border-gray-300 border-l-[#780005] border-r-[#780005] rounded-full w-14 h-14"></span> Loading Loading @@ -302,7 +267,7 @@ function logData() { }) .catch(err => { console.error("Error al descargar el archivo:", err); showToast(err.message || 'Error al descargar el archivo', 'Error', 'error'); showToast(err.message || 'Error al descargar el archivo.', 'Error', 'error'); }) .finally(() => { document.getElementById('loader-container').classList.add('hidden'); Loading resources/views/components/common/sidebaradmin.blade.php +2 −1 Original line number Diff line number Diff line Loading @@ -138,7 +138,8 @@ class="before:bg-gray-300 before:w-[5px] before:h-[5px] before:rounded ltr:befor <a href="/catalogos/grupos">Grupos</a> </li> <li> <a href="/catalogos/grupos/subgrupos">Subgrupos</a> <a href="/catalogos/subgrupos">Subgrupos</a> </li> </ul> </li> </ul> Loading routes/web.php +7 −6 Original line number Diff line number Diff line Loading @@ -67,12 +67,12 @@ Route::put('/catalogos/dependencias', [DependenciaController::class, 'update'])->name('dependencias.update')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::delete('/catalogos/dependencias/{id}', [DependenciaController::class, 'destroy'])->name('dependencias.destroy')->middleware(CheckRoles::class . ':admingen,admin' ); Route::get('/catalogos/grupos/subgrupos', [SubgrupoController::class, 'index'])->name('subgrupos.get')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::get('/catalogos/grupos/subgrupos/crear', [SubgrupoController::class, 'create'])->name('subgrupos.create')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::post('/catalogos/grupos/subgrupos/crear', [SubgrupoController::class, 'store'])->name('subgrupos.store')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::get('/catalogos/grupos/subgrupos/{id}/editar', [SubgrupoController::class, 'edit'])->name('subgrupos.edit')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::put('/catalogos/grupos/subgrupos/{id}/editar', [SubgrupoController::class, 'update'])->name('subgrupos.update')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::delete('/catalogos/grupos/subgrupos/{id}', [SubgrupoController::class, 'destroy'])->name('subgrupos.destroy')->middleware(CheckRoles::class . ':admingen,admin' ); Route::get('/catalogos/subgrupos', [SubgrupoController::class, 'index'])->name('subgrupos.get')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::get('/catalogos/subgrupos/crear', [SubgrupoController::class, 'create'])->name('subgrupos.create')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::post('/catalogos/subgrupos/crear', [SubgrupoController::class, 'store'])->name('subgrupos.store')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::get('/catalogos/subgrupos/{id}/editar', [SubgrupoController::class, 'edit'])->name('subgrupos.edit')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::put('/catalogos/subgrupos/{id}/editar', [SubgrupoController::class, 'update'])->name('subgrupos.update')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::delete('/catalogos/subgrupos/{id}', [SubgrupoController::class, 'destroy'])->name('subgrupos.destroy')->middleware(CheckRoles::class . ':admingen,admin' ); }); Route::middleware('auth:sanctum', Loading Loading @@ -158,4 +158,5 @@ Route::get('/reportes/contactos/buscar', [ReporteController::class, 'find'])->name('find')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector'); Route::post('/reportes/contactos/exportar', [ReporteController::class, 'export'])->name('export')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector'); Route::get('/reportes/subgrupos/{id}', [ReporteController::class, 'getSubgrupos'])->name('subgrupos')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector'); Route::post("/reportes/listas/exportar", [ReporteController::class, 'exportListas'])->name('exportListas')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector'); }); No newline at end of file Loading
app/Exports/ContactosExport.php +12 −6 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ use Maatwebsite\Excel\Concerns\WithHeadings; use App\Models\Contacto; use App\Models\Grupos; use Exception; class ContactosExport implements FromCollection, WithHeadings { Loading Loading @@ -50,10 +51,15 @@ public function collection() } // Mapear los datos a un formato exportable if (!$contactos->isEmpty()) { return $contactos->map(function ($contacto) { return $this->formatContactoData($contacto); }); }else{ return throw new Exception('No se encontraron contactos con los filtros seleccionados.'); } } public function headings(): array Loading @@ -77,7 +83,7 @@ private function applyFilters($query) }); } elseif (!empty($this->filters['grupos'])) { $grupoId = $this->filters['grupos']; $subgruposIds = Grupos::find($grupoId)->subgrupos->pluck('id')->toArray(); $subgruposIds = Grupos::find(153)->subgrupos->pluck('id')->toArray(); $query->where(function ($query) use ($grupoId, $subgruposIds) { // Contactos directamente en el grupo Loading
resources/views/adminGen/contactos/export.blade.php +1 −36 Original line number Diff line number Diff line Loading @@ -16,34 +16,6 @@ <p><b>Nota: </b>Este módulo aun se encuentra en desarrollo, por lo que podría haber errores.</p> <div class="p-6 bg-gray-100 rounded-lg shadow-md"> <form method="GET" action="" class="space-y-4" onsubmit="event.preventDefault(); logData();"> <!-- Listas --> <!-- <div class="flex flex-col space-y-2"> <label for="listas" class="text-gray-700 font-semibold">Listas:</label> <div class="flex space-x-2"> <select id="listas" class="w-full px-3 py-2 bg-white border border-gray-300 rounded-md"> <option value="" disabled selected>Selecciona una lista</option> @foreach($listas as $lista) <option value="{{ $lista->id }}">{{ $lista->nombre }}</option> @endforeach </select> <button type="button" onclick="agregarEtiqueta('listas', 'listasAgregadas')" class="bg-blue-500 text-white px-3 py-2 rounded-md">Agregar</button> </div> <div id="listasAgregadas" class="flex flex-wrap space-x-2 mt-2"></div> </div> --> <!-- Características --> <!-- <div class="flex flex-col space-y-2"> <label for="caracteristicas" class="text-gray-700 font-semibold">Características:</label> <div class="flex space-x-2"> <select id="caracteristicas" class="w-full px-3 py-2 bg-white border border-gray-300 rounded-md"> <option value="" disabled selected>Selecciona una característica</option> @foreach($caracteristicas as $caracteristica) <option value="{{ $caracteristica->id }}">{{ $caracteristica->nombre }}</option> @endforeach </select> <button type="button" onclick="agregarEtiqueta('caracteristicas', 'caracteristicasAgregadas')" class="bg-blue-500 text-white px-3 py-2 rounded-md">Agregar</button> </div> <div id="caracteristicasAgregadas" class="flex flex-wrap space-x-2 mt-2"></div> </div> --> <!-- Contacto --> <div class="flex items-center space-x-2"> Loading Loading @@ -144,13 +116,6 @@ class="w-full px-3 py-2 bg-white border border-gray-300 rounded-md" </form> </div> <div class="flex items-center flex-wrap mb-5"> </div> <table id="myTable" class="whitespace-nowrap table-hover"> <thead></thead> <tbody></tbody> </table> </div> <div id="loader-container" class="fixed inset-0 flex items-center justify-center bg-gray-500 bg-opacity-75 hidden"> <span id="loader" class="animate-spin border-8 border-gray-300 border-l-[#780005] border-r-[#780005] rounded-full w-14 h-14"></span> Loading Loading @@ -302,7 +267,7 @@ function logData() { }) .catch(err => { console.error("Error al descargar el archivo:", err); showToast(err.message || 'Error al descargar el archivo', 'Error', 'error'); showToast(err.message || 'Error al descargar el archivo.', 'Error', 'error'); }) .finally(() => { document.getElementById('loader-container').classList.add('hidden'); Loading
resources/views/components/common/sidebaradmin.blade.php +2 −1 Original line number Diff line number Diff line Loading @@ -138,7 +138,8 @@ class="before:bg-gray-300 before:w-[5px] before:h-[5px] before:rounded ltr:befor <a href="/catalogos/grupos">Grupos</a> </li> <li> <a href="/catalogos/grupos/subgrupos">Subgrupos</a> <a href="/catalogos/subgrupos">Subgrupos</a> </li> </ul> </li> </ul> Loading
routes/web.php +7 −6 Original line number Diff line number Diff line Loading @@ -67,12 +67,12 @@ Route::put('/catalogos/dependencias', [DependenciaController::class, 'update'])->name('dependencias.update')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::delete('/catalogos/dependencias/{id}', [DependenciaController::class, 'destroy'])->name('dependencias.destroy')->middleware(CheckRoles::class . ':admingen,admin' ); Route::get('/catalogos/grupos/subgrupos', [SubgrupoController::class, 'index'])->name('subgrupos.get')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::get('/catalogos/grupos/subgrupos/crear', [SubgrupoController::class, 'create'])->name('subgrupos.create')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::post('/catalogos/grupos/subgrupos/crear', [SubgrupoController::class, 'store'])->name('subgrupos.store')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::get('/catalogos/grupos/subgrupos/{id}/editar', [SubgrupoController::class, 'edit'])->name('subgrupos.edit')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::put('/catalogos/grupos/subgrupos/{id}/editar', [SubgrupoController::class, 'update'])->name('subgrupos.update')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::delete('/catalogos/grupos/subgrupos/{id}', [SubgrupoController::class, 'destroy'])->name('subgrupos.destroy')->middleware(CheckRoles::class . ':admingen,admin' ); Route::get('/catalogos/subgrupos', [SubgrupoController::class, 'index'])->name('subgrupos.get')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::get('/catalogos/subgrupos/crear', [SubgrupoController::class, 'create'])->name('subgrupos.create')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::post('/catalogos/subgrupos/crear', [SubgrupoController::class, 'store'])->name('subgrupos.store')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::get('/catalogos/subgrupos/{id}/editar', [SubgrupoController::class, 'edit'])->name('subgrupos.edit')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::put('/catalogos/subgrupos/{id}/editar', [SubgrupoController::class, 'update'])->name('subgrupos.update')->middleware(CheckRoles::class . ':admingen,admin,capturista' ); Route::delete('/catalogos/subgrupos/{id}', [SubgrupoController::class, 'destroy'])->name('subgrupos.destroy')->middleware(CheckRoles::class . ':admingen,admin' ); }); Route::middleware('auth:sanctum', Loading Loading @@ -158,4 +158,5 @@ Route::get('/reportes/contactos/buscar', [ReporteController::class, 'find'])->name('find')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector'); Route::post('/reportes/contactos/exportar', [ReporteController::class, 'export'])->name('export')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector'); Route::get('/reportes/subgrupos/{id}', [ReporteController::class, 'getSubgrupos'])->name('subgrupos')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector'); Route::post("/reportes/listas/exportar", [ReporteController::class, 'exportListas'])->name('exportListas')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector'); }); No newline at end of file