Ejemplo n.º 1
0
        public async Task AddAsync(GlossariesForEditingDTO glossary)
        {
            var  identityName = User.Identity.Name;
            Guid?userId       = (Guid)ur.GetID(identityName);
            await _userActionRepository.AddCreateGlossaryActionAsync((Guid)userId, identityName, glossary.id, glossary.Name_text);

            await _glossariesService.AddAsync((Guid)userId, glossary);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Сохранение изменений в глоссарии.
 /// </summary>
 /// <param name="glossary">Отредактированный глоссарий.</param>
 /// <returns></returns>
 public async Task UpdateAsync(Guid userId, GlossariesForEditingDTO glossary)
 {
     try
     {
         await _glossariesRepository.UpdateAsync(userId, glossary);
     }
     catch (Exception exception)
     {
         throw new Exception(WriteLn($"Error", exception), exception);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Возвращает глоссарий для редактирования (со связанными объектами).
        /// </summary>
        /// <param name="glossaryId">Идентификатор глоссария.</param>
        /// <returns></returns>
        public async Task <GlossariesForEditingDTO> GetGlossaryForEditAsync(Guid glossaryId)
        {
            try
            {
                var temp = await _glossariesRepository.GetGlossaryForEditAsync(glossaryId);

                //Создание глоссария с вложенными списками идентификаторов связанных данных.
                var resultDTO = new GlossariesForEditingDTO
                {
                    id          = temp.FirstOrDefault().id,
                    Name_text   = temp.FirstOrDefault().Name_text,
                    Description = temp.FirstOrDefault().Description,
                    ID_File     = temp.FirstOrDefault().ID_File,
                    Locales_Ids = temp.Select(t => t.Locale_ID).Distinct(),
                    Localization_Projects_Ids = temp.Select(t => t.Localization_Project_ID).Distinct()
                };
                return(resultDTO);
            }
            catch (Exception exception)
            {
                throw new Exception(WriteLn($"Error", exception), exception);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Сохранение изменений в глоссарии.
        /// </summary>
        /// <param name="userId">Идентификатор пользователя.</param>
        /// <param name="glossary">Отредактированный глоссарий.</param>
        /// <returns></returns>
        public async Task UpdateAsync(Guid userId, GlossariesForEditingDTO glossary)
        {
            try
            {
                using (var dbConnection = new NpgsqlConnection(connectionString))
                {
                    //Обновление глоссария
                    var editedGlossaries = new
                    {
                        name_text   = glossary.Name_text,
                        description = glossary.Description,
                        id_file     = glossary.ID_File
                    };
                    var query         = new Query("glossaries").Where("id", glossary.id).AsUpdate(editedGlossaries);
                    var compiledQuery = _compiler.Compile(query);
                    LogQuery(compiledQuery);
                    await dbConnection.ExecuteAsync(
                        sql : compiledQuery.Sql,
                        param : compiledQuery.NamedBindings);

                    var loc = ConvertData.ConverLocale(glossary.Locales_Ids);
                    //Пересоздание связей глоссария с языками перевода (Glossaries с Locales)
                    await EditGlossariesLocalesAsync(glossary.id, loc, glossary.ID_File, dbConnection, null);

                    //Пересоздание связей глоссария с проектами локализации (Glossaries с localization_projects)
                    await EditGlossariesLocalizationProjectsAsync(userId, glossary.id, glossary.Localization_Projects_Ids, dbConnection, null);
                }
            }
            catch (NpgsqlException exception)
            {
                _loggerError.WriteLn($"Ошибка в {nameof(GlossariesRepository)}.{nameof(GlossariesRepository.UpdateAsync)} {nameof(NpgsqlException)} ", exception);
            }
            catch (Exception exception)
            {
                _loggerError.WriteLn($"Ошибка в {nameof(GlossariesRepository)}.{nameof(GlossariesRepository.UpdateAsync)} {nameof(Exception)} ", exception);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Добавление нового глоссария.
        /// </summary>
        /// <param name="userId">Идентификатор пользователя.</param>
        /// <param name="glossary">Новый глоссарий.</param>
        /// <returns></returns>
        public async Task AddAsync(Guid userId, GlossariesForEditingDTO glossary)
        {
            try
            {
                using (var dbConnection = new NpgsqlConnection(connectionString))
                {
                    dbConnection.Open();
                    using (IDbTransaction transaction = dbConnection.BeginTransaction(IsolationLevel.ReadCommitted))
                    {
                        var newGlossaryFileId = await this.fr.AddAsync(new File()
                        {
                            id_localization_project = null, // glossary.Localization_Projects_Ids.First(x => x.HasValue).Value,
                            name_text       = glossary.Name_text,
                            date_of_change  = DateTime.Now,
                            is_folder       = false,
                            is_last_version = true,
                            visibility      = true
                        }, dbConnection, transaction);

                        glossary.ID_File = newGlossaryFileId;
                        //----------------
                        //Добавление нового глоссария
                        var newGlossaries = new
                        {
                            name_text   = glossary.Name_text,
                            description = glossary.Description,
                            id_file     = glossary.ID_File
                        };

                        /*var query = new Query("glossaries").AsInsert(newGlossaries,
                         *  true); //true - вернуть сгенерированный id нового объекта
                         * var compiledQuery = _compiler.Compile(query);
                         * LogQuery(compiledQuery);
                         *
                         *
                         * //После выполнение запроса получаем сгенерированный id нового объекта
                         * var idOfNewGlossary = await dbConnection
                         *  .ExecuteScalarAsync<Guid>(
                         *      sql: compiledQuery.Sql,
                         *      param: compiledQuery.NamedBindings, transaction: transaction);
                         */


                        var sql = " INSERT INTO glossaries(name_text, description, id_file) VALUES('" + newGlossaries.name_text + "', '" + newGlossaries.description + "', '" + newGlossaries.id_file + "') RETURNING  glossaries.id";
                        LogQuery(sql);
                        var idOfNewGlossary = await dbConnection
                                              .ExecuteScalarAsync <Guid>(
                            sql, transaction : transaction);

                        //Добавление в таблицу "GlossariesLocales" записей связи глоссария с языками перевода (Glossaries с Locales)
                        var loc = ConvertData.ConverLocale(glossary.Locales_Ids);

                        await EditGlossariesLocalesAsync(idOfNewGlossary, loc, glossary.ID_File, dbConnection, transaction, false);

                        //Добавление в таблицу "localization_projectsGlossaries" записей связи глоссария с проектами локализации (Glossaries с localization_projects)
                        await EditGlossariesLocalizationProjectsAsync(userId, idOfNewGlossary,
                                                                      glossary.Localization_Projects_Ids, dbConnection, transaction, false);

                        transaction.Commit();
                    }
                }
            }
            catch (NpgsqlException exception)
            {
                _loggerError.WriteLn($"Ошибка в {nameof(GlossariesRepository)}.{nameof(GlossariesRepository.AddAsync)} {nameof(NpgsqlException)} ", exception);
            }
            catch (Exception exception)
            {
                _loggerError.WriteLn($"Ошибка в {nameof(GlossariesRepository)}.{nameof(GlossariesRepository.AddAsync)} {nameof(Exception)} ", exception);
            }
        }