Commit e61929b9 authored by alekeyrivas's avatar alekeyrivas
Browse files

Insittuciones falta la funcionalidad del show

parent 02f8df62
Loading
Loading
Loading
Loading
+50 −30
Original line number Diff line number Diff line
@@ -79,9 +79,9 @@ public function store(Request $request)
        }
    }

    public function show(Instituciones $instituciones)
    public function show(string $id)
    {
        //
        return view('adminGen.instituciones.show', compact('instituciones'));
    }

    public function edit(string $id)
@@ -104,23 +104,36 @@ public function update(Request $request, string $id)
            'imagen' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);
    
        $instituciones = Instituciones::findOrFail($id);
        $instituciones->update($validatedData);
        $institucion = Instituciones::findOrFail($id);

        $fieldsToCheck = [
            'subgrupo_id',
        ];
        $requestData = $request->all();
        foreach ($fieldsToCheck as $field) {
            if (isset($requestData[$field]) && $requestData[$field] === "null") {
                unset($requestData[$field]);
            }
        }

        $request->replace($requestData);
    
        // Actualizar los datos principales de la institución
        $institucion->update($validatedData);
    
        // Manejar la imagen de perfil si se sube una nueva
        if ($request->hasFile('imagen')) {
            // Eliminar la foto de perfil anterior si existe
            if ($instituciones->imagen) {
                Storage::delete('public/' . $instituciones->imagen);
            // Eliminar la imagen de perfil anterior si existe
            if ($institucion->imagen) {
                Storage::delete('public/' . $institucion->imagen);
            }
            
            // Guardar la nueva foto de perfil
            // Guardar la nueva imagen de perfil
            $path_file = $this->storeProfilePicture($request);
            $instituciones->imagen = $path_file;
            $institucion->imagen = $path_file;
            $institucion->save(); // Guardar los cambios en la institución
        }
    
        // Actualizar los datos del usuario
        $instituciones->update($validatedData);

        // Manejar los teléfonos
        if ($request->has('prefijo')) {
            $telefonos = collect($request->input('prefijo'))->map(function($prefijo, $index) use ($request) {
@@ -136,21 +149,28 @@ public function update(Request $request, string $id)
                ];
            })->toArray();
    
            $instituciones->telefonos()->delete();
            $instituciones->telefonos()->createMany($telefonos);
            // Eliminar los teléfonos existentes y crear los nuevos
            $institucion->telefonos()->delete();
            $institucion->telefonos()->createMany($telefonos);
        }
    
        // Guardar redes sociales
        // Manejar las redes sociales
        if ($request->has('link_inst')) {
            $redes = collect($request->input('link_inst'))->map(function($url, $index) use ($request) {
                $red_social_inst = $request->input('red_social_inst')[$index] ?? null;
                $tipo_RS_inst = $request->input('tipo_red_social')[$index] ?? null;
                
                return [
                'red_social_inst' => $request->input('red_social_inst')[$index], // Debe ser el username
                'link_inst' => $url, // Debe ser la URL de la red social
                'tipo_RS_inst' => $request->input('tipo_red_social')[$index], // Tipo de red social
                    'red_social_inst' => $red_social_inst,
                    'link_inst' => $url,
                    'tipo_RS_inst' => $tipo_RS_inst,
                ];
        });
            })->toArray();
    
        $instituciones->redesSocialesInst()->delete();
        $instituciones->redesSocialesInst()->createMany($redes->toArray());
            // Eliminar las redes sociales existentes y crear las nuevas
            $institucion->redesSocialesInst()->delete();
            $institucion->redesSocialesInst()->createMany($redes);
        }

        return redirect()->route('instituciones.get')->with('success', 'Institución actualizada correctamente');
    }
+1 −1
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ public function up(): void
            $table->integer('lada')->nullable();
            $table->bigInteger('numero')->nullable();
            $table->string('tipo')->nullable();
            $table->boolean('estatus')->nullable();
            $table->string('estatus')->nullable();
            $table->integer('ext')->nullable();
            $table->string('observaciones')->nullable();
            $table->string('ID_radio')->nullable();
+55 −43
Original line number Diff line number Diff line
<x-layout.default>

    <script src="/assets/js/simple-datatables.js"></script>
    <link rel="stylesheet" href="{{ Vite::asset('resources/css/swiper-bundle.min.css') }}">
    <script src="/assets/js/swiper-bundle.min.js"></script>

    <div x-data="profesion">
    <div x-data="instituciones">
        <ul class="flex space-x-2 rtl:space-x-reverse">
            <li>
                <a href="{{ route('dashboard') }}" class="text-primary hover:underline">Dashboard</a>
                <a href="javascript:;" class="text-primary hover:underline">Dashboard</a>
            </li>
            <li class="before:content-['/'] before:mr-1 rtl:before:ml-1">
                <span>Instituciones</span>
            </li>
        </ul>
        <br>
    </div>    
        <div class="container">
            <h1>Lista de Instituciones</h1>

        <div class="panel mt-6">
            <div class="flex items-center flex-wrap mb-5">
                <a href="{{ route('instituciones.create') }}" type="button" class="btn btn-success btn-sm m-1">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -37,13 +36,13 @@
                    Crear nueva institución
                </a>
            </div>
            <table class="table table-bordered">
            <table id="myTable" class="whitespace-nowrap table-hover">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Id</th>
                        <th>Nombre</th>
                        <th>Domicilio</th>
                        <th>Aniversario</th>
                        <th>Domicilio</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
@@ -52,10 +51,11 @@
                    <tr>
                        <td>{{ $institucion->id }}</td>
                        <td>{{ $institucion->nombre }}</td>
                            <td>{{ $institucion->domicilio }}</td>
                        <td>{{ $institucion->aniversario }}</td>
                        <td>{{ $institucion->domicilio }}</td>
                        <td>
                            <div class="flex space-x-2">
                                <a href="{{ route('instituciones.show', $institucion->id) }}" class="btn btn-primary btn-sm">Ver institución</a>
                                <a href="{{ route('instituciones.edit', $institucion->id) }}" class="btn btn-primary btn-sm">Editar</a>
                                <form action="{{ route('instituciones.destroy', $institucion->id) }}" method="POST" class="inline-block">
                                    @csrf
@@ -68,22 +68,22 @@
                    @endforeach
                </tbody>
            </table>

        </div>
    </div>

        <script src="/assets/js/simple-datatables.js"></script>
        <link rel="stylesheet" href="{{ Vite::asset('resources/css/swiper-bundle.min.css') }}">
        <script src="/assets/js/swiper-bundle.min.js"></script>
    <link rel="stylesheet" href="{{ Vite::asset('resources/css/highlight.min.css') }}">
    <script src="/assets/js/highlight.min.js"></script>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <link rel="stylesheet" href="/assets/css/jquery.toast.css">
    <script src="/assets/js/jquery.toast.js"></script>

    <script>
        document.addEventListener('DOMContentLoaded', () => {
                const datatable = new simpleDatatables.DataTable(, {
            const datatable = new simpleDatatables.DataTable('#myTable', {
                perPage: 10,
                perPageSelect: [10, 20, 30, 50, 100],
                columns: [{
                        select: 0,
                        sort: 'asc'
                    },
                ],
                firstLast: true,
                firstText: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="w-4.5 h-4.5 rtl:rotate-180"><path d="M13 19L7 12L13 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path opacity="0.5" d="M16.9998 19L10.9998 12L16.9998 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',
                lastText: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="w-4.5 h-4.5 rtl:rotate-180"><path d="M11 19L17 12L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path opacity="0.5" d="M6.99976 19L12.9998 12L6.99976 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',
@@ -98,10 +98,23 @@
            });
        });

        function showToast(message, heading, icon) {
            $.toast({
                heading: heading,
                text: message,
                showHideTransition: 'slide',
                icon: icon,
                position: 'top-right',
                loader: false,
                hideAfter: 10000,
                allowToastClose: true,
                textColor: '#676767',
            });
        }

        document.addEventListener('DOMContentLoaded', function() {
            @if(session('success'))
            // Muestra el mensaje de éxito utilizando showMessage
                showToast("{{ session('success') }}", 'Exito.', 'success')
                showToast("{{ session('success') }}", 'Exito.', 'success');
            @endif

            @if($errors->any())
@@ -112,5 +125,4 @@
        });
    </script>


</x-layout.default>
+586 −0

File added.

Preview size limit exceeded, changes collapsed.

+26 −8
Original line number Diff line number Diff line
@@ -78,11 +78,29 @@
    Route::delete('/administracion/usuarios/{id}', [UserController::class, 'destroy'])->name('destroy');
});

Route::middleware('auth:sanctum', config('jetstream.auth_session'), 'verified', CheckBanned::class)->name('instituciones.')->group(function() {
    Route::get('/instituciones', [InstitucionesController::class, 'index'])->name('get')->middleware(CheckRoles::class . ':admingen,admin,capturista');
    Route::get('/instituciones/crear', [InstitucionesController::class, 'create'])->name('create')->middleware(CheckRoles::class . ':admingen,admin,capturista');
    Route::post('/instituciones/crear', [InstitucionesController::class, 'store'])->name('store')->middleware(CheckRoles::class . ':admingen,admin,capturista');
    Route::get('/instituciones/{id}/editar', [InstitucionesController::class, 'edit'])->name('edit')->middleware(CheckRoles::class . ':admingen,admin,capturista');
    Route::put('/instituciones/{id}/editar', [InstitucionesController::class, 'update'])->name('update')->middleware(CheckRoles::class . ':admingen,admin,capturista');
    Route::delete('/instituciones/{id}', [InstitucionesController::class, 'destroy'])->name('destroy')->middleware(CheckRoles::class . ':admingen,admin');
Route::middleware('auth:sanctum', config('jetstream.auth_session'), 'verified', CheckBanned::class)
    ->name('instituciones.')
    ->group(function() {
        Route::get('/instituciones', [InstitucionesController::class, 'index'])
            ->name('get')
            ->middleware(CheckRoles::class . ':admingen,admin,capturista');
        Route::get('/instituciones/crear', [InstitucionesController::class, 'create'])
            ->name('create')
            ->middleware(CheckRoles::class . ':admingen,admin,capturista');
        Route::post('/instituciones/crear', [InstitucionesController::class, 'store'])
            ->name('store')
            ->middleware(CheckRoles::class . ':admingen,admin,capturista');
        Route::get('/instituciones/{id}/editar', [InstitucionesController::class, 'edit'])
            ->name('edit')
            ->middleware(CheckRoles::class . ':admingen,admin,capturista');
        Route::put('/instituciones/{id}/editar', [InstitucionesController::class, 'update'])
            ->name('update')
            ->middleware(CheckRoles::class . ':admingen,admin,capturista');
        Route::delete('/instituciones/{id}', [InstitucionesController::class, 'destroy'])
            ->name('destroy')
            ->middleware(CheckRoles::class . ':admingen,admin');
        Route::get('/instituciones/{id}', [InstitucionesController::class, 'show'])
            ->name('show')
            ->middleware(CheckRoles::class . ':admingen,admin,capturista');
    });