Proyectos de Subversion LeadersLinked - Services

Rev

Rev 622 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 622 Rev 623
Línea 782... Línea 782...
782
            // Validar el formulario
782
            // Validar el formulario
783
            if ($form->isValid()) {
783
            if ($form->isValid()) {
784
                // Mappers para idiomas y la relación usuario-idioma
784
                // Mappers para idiomas y la relación usuario-idioma
785
                $languageMapper = LanguageMapper::getInstance($this->adapter);
785
                $languageMapper = LanguageMapper::getInstance($this->adapter);
786
                $userLanguageMapper = UserLanguageMapper::getInstance($this->adapter);
786
                $userLanguageMapper = UserLanguageMapper::getInstance($this->adapter);
787
                // Ya no se eliminan todos los idiomas existentes, se añaden solo los nuevos.
787
                // Eliminar todos los idiomas previamente asociados al perfil
788
 
-
 
789
                // 1. Obtener los IDs de los idiomas actualmente asociados al perfil en la base de datos.
-
 
790
                $existingUserLanguages = $userLanguageMapper->fetchAllByUserProfileId($userProfile->id);
788
                $userLanguageMapper->deleteByUserProfileId($userProfile->id);
791
                $existingLanguageIdsInDB = [];
-
 
792
                foreach ($existingUserLanguages as $exUserLang) {
-
 
793
                    $existingLanguageIdsInDB[] = $exUserLang->language_id;
-
 
794
                }
-
 
Línea 795... Línea 789...
795
 
789
 
796
                // Obtener los datos validados del formulario
790
                // Obtener los datos validados del formulario
797
                $dataPost = (array) $form->getData();
791
                $dataPost = (array) $form->getData();
798
                // Asegurarse de que $submittedLanguageIds es un array, incluso si está vacío.
-
 
799
                $submittedLanguageIds = isset($dataPost['languages']) && is_array($dataPost['languages']) ? $dataPost['languages'] : [];
-
 
800
 
792
                $languages = $dataPost['languages'];
801
                // Iterar sobre los IDs de idiomas enviados desde el formulario
793
                // Iterar sobre los IDs de idiomas enviados
802
                foreach ($submittedLanguageIds as $submitted_language_id) {
-
 
803
                    // Verificar si este idioma ya está asociado al perfil del usuario
-
 
804
                    if (!in_array($submitted_language_id, $existingLanguageIdsInDB)) {
-
 
805
                        // El idioma no está asociado, proceder a añadirlo.
794
                foreach ($languages as $language_id) {
806
                        $language = $languageMapper->fetchOne($submitted_language_id); // Obtener el objeto idioma completo
795
                    $language = $languageMapper->fetchOne($language_id); // Obtener el objeto idioma completo
807
 
-
 
808
                        if ($language) { // Asegurarse de que el idioma existe en la tabla principal de idiomas
796
 
809
                            // Crear y configurar la nueva entidad de relación usuario-idioma
797
                    // Crear y configurar la nueva entidad de relación usuario-idioma
810
                            $userLanguage = new UserLanguage();
798
                    $userLanguage = new UserLanguage();
811
                            $userLanguage->user_id = $userProfile->user_id;
799
                    $userLanguage->user_id = $userProfile->user_id;
812
                            $userLanguage->user_profile_id = $userProfile->id;
800
                    $userLanguage->user_profile_id = $userProfile->id;
Línea 813... Línea 801...
813
                            $userLanguage->language_id = $language->id;
801
                    $userLanguage->language_id = $language->id;
814
 
802
 
815
                            // Insertar el nuevo registro de idioma para el perfil
-
 
816
                            $userLanguageMapper->insert($userLanguage);
-
 
817
                        }
803
                    // Insertar el nuevo registro de idioma para el perfil
Línea 818... Línea 804...
818
                    }
804
                    $userLanguageMapper->insert($userLanguage);
819
                }
-
 
820
 
805
                }
821
                // Preparar la respuesta con la lista actualizada de idiomas (ID y nombre)
806
 
822
                // Esta parte ahora reflejará los idiomas existentes más los nuevos añadidos.
807
                // Preparar la respuesta con la lista actualizada de idiomas (ID y nombre)
823
                $items = [];
808
                $items = [];
824
                $records = $userLanguageMapper->fetchAllByUserProfileId($userProfile->id);
809
                $records = $userLanguageMapper->fetchAllByUserProfileId($userProfile->id);