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