Ejemplo n.º 1
0
        public async Task UpdateTermAsync(Guid glossaryId, TranslationSubstring updatedTerm, Guid?partOfSpeechId)
        {
            try
            {
                using (var dbConnection = new NpgsqlConnection(connectionString))
                {
                    var updateTermSql =
                        "UPDATE translation_substrings SET " +
                        "substring_to_translate=@substring_to_translate, " +
                        "description=@description, " +
                        "context=@context, " +
                        "translation_max_length=@translation_max_length, " +
                        "id_file_owner=@id_file_owner, " +
                        "value=@value, " +
                        "position_in_text=@position_in_text " +
                        "WHERE id=@id";
                    var updateTermParam = updatedTerm;
                    this.LogQuery(updateTermSql, updatedTerm.GetType(), updateTermParam);
                    await dbConnection.ExecuteAsync(
                        sql : updateTermSql,
                        param : updateTermParam);

                    var updateTermPartOfSpeechIdSql =
                        "UPDATE glossaries_strings SET " +
                        "id_part_of_speech=@PartOfSpeechId " +
                        "WHERE id_string=@StringId "; // +
                                                      //"AND id_glossary=@GlossaryId";
                    var updateTermPartOfSpeechIdParam = new { GlossaryId = glossaryId, StringId = updatedTerm.id, PartOfSpeechId = partOfSpeechId };
                    this.LogQuery(updateTermPartOfSpeechIdSql, updateTermPartOfSpeechIdParam);
                    await dbConnection.ExecuteAsync(
                        sql : updateTermPartOfSpeechIdSql,
                        param : updateTermPartOfSpeechIdParam);
                }
            }
            catch (NpgsqlException exception)
            {
                this._loggerError.WriteLn(
                    $"Ошибка в {nameof(GlossaryRepository)}.{nameof(GlossaryRepository.UpdateTermAsync)} {nameof(NpgsqlException)} ",
                    exception);
                //   return null;
            }
            catch (Exception exception)
            {
                this._loggerError.WriteLn(
                    $"Ошибка в {nameof(GlossaryRepository)}.{nameof(GlossaryRepository.UpdateTermAsync)} {nameof(Exception)} ",
                    exception);
                //    return 0;
            }
        }
Ejemplo n.º 2
0
        public async Task <Guid?> AddNewTermAsync(Guid glossaryId, TranslationSubstring newTerm, Guid?partOfSpeechId)
        {
            var glossary = await this.GetByIDAsync(id : glossaryId);

            newTerm.id_file_owner = glossary.ID_File;
            newTerm.word_count    = TranslationSubstringRepository.GetWordsCount(newTerm.substring_to_translate);
            try
            {
                using (var dbConnection = new NpgsqlConnection(connectionString))
                {
                    var insertNewStingSql =
                        "INSERT INTO translation_substrings " +
                        "(" +
                        "substring_to_translate, " +
                        "description, " +
                        "context_file, " +
                        "translation_max_length, " +
                        "id_file_owner, " +
                        "value, " +
                        "position_in_text, " +
                        "word_count" +
                        ") VALUES " +
                        "(" +
                        "@substring_to_translate, " +
                        "@description, " +
                        "@context_file, " +
                        "@translation_max_length, " +
                        "@id_file_owner, " +
                        "@value, " +
                        "@position_in_text, " +
                        "@word_count" +
                        ") " +
                        "RETURNING id";
                    var insertNewStingParam = newTerm;
                    this.LogQuery(insertNewStingSql, newTerm.GetType(), insertNewStingParam);
                    var idOfNewTerm = await dbConnection
                                      .ExecuteScalarAsync <Guid>(
                        sql : insertNewStingSql,
                        param : insertNewStingParam);

                    var instertGlossaryStringAssotiationSql =
                        "INSERT INTO glossaries_strings (id_glossary, id_string,id_part_of_speech) VALUES (@glossary_id, @string_id, @parts_of_speechId)";
                    var instertGlossaryStringAssotiationParam = new { glossary_id = glossaryId, string_id = idOfNewTerm, parts_of_speechId = partOfSpeechId };
                    this.LogQuery(instertGlossaryStringAssotiationSql, instertGlossaryStringAssotiationParam);
                    await dbConnection
                    .ExecuteAsync(
                        sql : instertGlossaryStringAssotiationSql,
                        param : instertGlossaryStringAssotiationParam);

                    return(idOfNewTerm);
                }
            }

            catch (NpgsqlException exception)
            {
                this._loggerError.WriteLn(
                    $"Ошибка в {nameof(GlossaryRepository)}.{nameof(GlossaryRepository.AddNewTermAsync)} {nameof(NpgsqlException)} ",
                    exception);
                return(null);
            }
            catch (Exception exception)
            {
                this._loggerError.WriteLn(
                    $"Ошибка в {nameof(GlossaryRepository)}.{nameof(GlossaryRepository.AddNewTermAsync)} {nameof(Exception)} ",
                    exception);
                return(null);
            }
        }