Commit 6aac179f authored by Alfonso Rafael Solis Rangel's avatar Alfonso Rafael Solis Rangel
Browse files

Merge branch 'refactor2-instituciones' into 'main'

Solucion de errores en el modulo Instituciones

See merge request !23
parents 13d86446 f1275208
Loading
Loading
Loading
Loading
+44 −32
Original line number Diff line number Diff line
@@ -40,16 +40,29 @@ public function store(Request $request)
            'codigo_postal' => 'nullable|integer',
            'localidad' => 'nullable|string',
            'imagen' => 'nullable|file|image|max:2048',
            'red_social_inst' => 'nullable|array',
            'link_inst' => 'nullable|array',
        ]);
    
        $telefonosData = $request->only(['prefijo', 'lada', 'numero', 'tipo', 'estatus', 'ext', 'id_radio', 'observaciones']);
        $telefonosData = array_map(function ($item) {
            return array_map(function ($value) {
            return array_map(function ($value, $key) {
                if ($key === 'numero' && !is_null($value)) {
                    // Elimina espacios y caracteres no numéricos
                    $value = preg_replace('/[^0-9]/', '', $value);
                }
                return ($value === "null") ? null : $value;
            }, $item);
            }, $item, array_keys($item));
        }, $telefonosData);
        
        
        $redesSocialesData = $request->only(['red_social_inst', 'link_inst', 'tipo_RS_inst']);

        $redesSocialesData = array_filter($redesSocialesData, function ($item) {
            // Solo incluir si no es nulo o vacío
            return !is_null($item) && !empty($item);
        });
        
        $redesSocialesData = array_map(function ($item) {
            return array_map(function ($value) {
                return ($value === "null") ? null : $value;
@@ -195,10 +208,10 @@ public function update(Request $request, string $id)
    
        // Guardar auditoría de redes sociales
        $redesAnteriores = $institucion->redes->toArray();
        $redes = collect($request->input('red_social_inst'))->map(function($url, $index) use ($request) {
        $redes = collect($request->input('red_social_inst'))->map(function($redSocial, $index) use ($request) {
            return [
                'link_inst' => $url,
                'red_social_inst' => $request->input('red_social_inst')[$index],
                'link_inst' => $request->input('link_inst')[$index], // Asignar correctamente el link
                'red_social_inst' => $redSocial,
                'tipo_RS_inst' => $request->input('tipo_RS_inst')[$index],
            ];
        })->toArray();             
@@ -343,25 +356,21 @@ private function storeRedesSociales($institucionesId, $redesSocialesData)
    {
        $redesSociales = [];
    
        if (isset($redesSocialesData['red_social_inst'])) {
            foreach ($redesSocialesData['red_social_inst'] as $index => $redSocial) {
            // Verificar si todos los campos de la red social están vacíos (null o "null")
            $isEmpty = true;
            foreach ($redesSocialesData as $key => $values) {
                if (!is_null($values[$index]) && $values[$index] !== "null") {
                    $isEmpty = false;
                    break;
                }
            }
                // Verificar si el campo de la red social está vacío (null o "null")
                $isEmpty = empty($redSocial) && empty($redesSocialesData['link_inst'][$index]) && empty($redesSocialesData['tipo_RS_inst'][$index]);
    
                if (!$isEmpty) {
                    $redesSociales[] = [
                        'instituciones_id' => $institucionesId,
                    'red_social_inst' =>$redesSocialesData['red_social_inst'][$index],
                    'link_inst' => $redesSocialesData['link_inst'][$index],
                    'tipo_RS_inst' => $redesSocialesData['tipo_RS_inst'][$index],
                        'red_social_inst' => $redSocial,
                        'link_inst' => $redesSocialesData['link_inst'][$index] ?? null,
                        'tipo_RS_inst' => $redesSocialesData['tipo_RS_inst'][$index] ?? null,
                    ];
                }
            }
        }
    
        if (!empty($redesSociales)) {
            RedesSocialesInst::insert($redesSociales);
@@ -371,15 +380,18 @@ private function storeRedesSociales($institucionesId, $redesSocialesData)
        return false;
    }
    

    private function redSocialDataPresent($redesSocialesData)
    {
        foreach ($redesSocialesData['red_social'] as $index => $redSocial) {
        if (isset($redesSocialesData['red_social_inst'])) {
            foreach ($redesSocialesData['red_social_inst'] as $index => $redSocial) {
                foreach ($redesSocialesData as $key => $values) {
                if (!is_null($values[$index]) && $values[$index] !== "null") {
                    if (isset($values[$index]) && !is_null($values[$index]) && $values[$index] !== "null") {
                        return true;
                    }
                }
            }
        }
    
        return false;
    }    
+32 −32
Original line number Diff line number Diff line
@@ -369,18 +369,18 @@
            
                        agregarBtnRed.addEventListener('click', function() {
                        const newFormGroup = document.createElement('div');
                        newFormGroup.classList.add('grid', 'grid-cols-1', 'md:grid-cols-4', 'gap-5', 'form-group', 'relative');
                        newFormGroup.classList.add('grid', 'grid-cols-1', 'md:grid-cols-4', 'gap-5', 'form-group', 'relative', 'mb-5');
                        newFormGroup.innerHTML = `
                                    <div>
                                        <label for="red_social_inst">Nombre como se encuentra en la red social:</label>
                                        <input id="red_social_inst" name="red_social_inst[]" type="text" class="form-input" />
                            <div class="col-span-4 md:col-span-1">
                                <label for="red_social_inst">Nombre en la red social:</label>
                                <input id="red_social_inst" name="red_social_inst[]" type="text" class="form-input w-full" />
                            </div>
                                    <div>
                                        <label for="link_inst">URL del la red social o página web</label>
                                        <input id="link_inst" name="link_inst[]" type="text" class="form-input" />
                            <div class="col-span-4 md:col-span-1">
                                <label for="link_inst">URL o página web:</label>
                                <input id="link_inst" name="link_inst[]" type="text" class="form-input w-full" />
                            </div>
                                    <div>
                                        <label for="tipo_RS_inst">Tipo</label>
                            <div class="col-span-4 md:col-span-1">
                                <label for="tipo_RS_inst">Tipo:</label>
                                <select id="tipo_RS_inst" name="tipo_RS_inst[]" class="block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
                                    <option value="null">Selecciona una opción</option>
                                    <option value="Facebook">Facebook</option>
@@ -399,7 +399,6 @@
                                    </svg>
                                </button>
                            </div>
                                    <br>
                        `;
                        dynamicFormContainerRed.appendChild(newFormGroup);

@@ -409,6 +408,7 @@
                        });
                    });

            
                    // Añadir evento de clic para eliminar a los grupos iniciales
                    document.querySelectorAll('.removeBtn').forEach(function(btn) {
                        btn.addEventListener('click', function() {
+45 −47
Original line number Diff line number Diff line
@@ -226,17 +226,17 @@
                            <div id="dynamicFormContainerRed">
                                @foreach ($redes as $red)
                                    <div class="grid grid-cols-1 md:grid-cols-3 gap-5 form-group relative">
                                        <div>
                                        <div class="col-span-4 md:col-span-1">
                                            <label for="red_social_inst">Nombre de como se encuentra en la red social:</label>
                                            <input id="red_social_inst" name="red_social_inst[]" type="text" class="form-input" value="{{ old('red_social_inst[]', isset($red['red_social_inst']) ? $red['red_social_inst'] : '') }}" />
                                            <input id="red_social_inst" name="red_social_inst[]" type="text" class="form-input same-width-input" value="{{ old('red_social_inst[]', isset($red['red_social_inst']) ? $red['red_social_inst'] : '') }}" />
                                        </div>
                                        <div class="mb-5">
                                        <div class="col-span-4 md:col-span-1 mb-5">
                                            <label for="link_inst">URL del la red social o página web</label>
                                            <input id="link_inst" name="link_inst[]" type="text" class="form-input" value="{{ old('link_inst[]', isset($red['link_inst']) ? $red['link_inst'] : '') }}" />
                                            <input id="link_inst" name="link_inst[]" type="text" class="form-input same-width-input" value="{{ old('link_inst[]', isset($red['link_inst']) ? $red['link_inst'] : '') }}" />
                                        </div>
                                        <div class="mb-5">
                                        <div class="col-span-4 md:col-span-1 mb-5">
                                            <label for="tipo_RS_inst">Tipo</label>
                                            <select id="tipo_RS_inst" name="tipo_RS_inst[]" class="block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
                                            <select id="tipo_RS_inst" name="tipo_RS_inst[]" class="block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm same-width-input">
                                                <option value="null" {{ old('tipo_RS_inst[]', $red->tipo_RS_inst) == null ? 'selected' : '' }}>Selecciona una opción</option>
                                                <option value="Facebook" {{ old('tipo_RS_inst[]', $red->tipo_RS_inst) == 'Facebook' ? 'selected' : '' }}>Facebook</option>
                                                <option value="Instagram" {{ old('tipo_RS_inst[]', $red->tipo_RS_inst) == 'Instagram' ? 'selected' : '' }}>Instagram</option>
@@ -389,17 +389,17 @@
                    const newFormGroup = document.createElement('div');
                    newFormGroup.classList.add('grid', 'grid-cols-1', 'md:grid-cols-3', 'gap-5', 'form-group', 'relative');
                    newFormGroup.innerHTML = `
                                    <fieldset>
                        <div class="col-span-4 md:col-span-1">
                            <label for="red_social_inst">Nombre como se encuentra en la red social:</label>
                                        <input id="red_social_inst" name="red_social_inst[]" type="text" class="form-input" />
                                    </fieldset>
                                    <fieldset>
                            <input id="red_social_inst" name="red_social_inst[]" type="text" class="form-input same-width-input" />
                        </div>
                        <div class="col-span-4 md:col-span-1">
                            <label for="link_inst">URL del la red social o página web</label>
                                        <input id="link_inst" name="link_inst[]" type="text" class="form-input" />
                                    </fieldset>
                                    <div>
                            <input id="link_inst" name="link_inst[]" type="text" class="form-input same-width-input" />
                        </div>
                        <div class="col-span-4 md:col-span-1">
                            <label for="tipo_RS_inst">Tipo</label>
                                        <select id="tipo_RS_inst" name="tipo_RS_inst[]" class="block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
                            <select id="tipo_RS_inst" name="tipo_RS_inst[]" class="block w-full same-width-input py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
                                <option value="null">Selecciona una opción</option>
                                <option value="Facebook">Facebook</option>
                                <option value="Instagram">Instagram</option>
@@ -458,6 +458,4 @@ function showToast(message, heading, icon) {
                    });
                </script>
            
                

</x-layout.default>