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