Пример #1
0
        public async Task <IEnumerable <PinnedDiscipline> > Get(PinnedDisciplineGetOptions options)
        {
            try
            {
                StringBuilder sql = new StringBuilder();

                _logger.LogInformation("Try to create get pinned disciplines sql query");

                sql.AppendLine(@"
                    select 
                        pd.Id,
                        pd.UserId,
                        pd.DisciplineTitleId,
                        pd.ProjectType,
                        dt.Name as DisciplineTitle
                    from PinnedDiscipline pd
                    left join DisciplineTitle dt on DisciplineTitleId = dt.Id");

                int conditionIndex = 0;
                if (options.Id.HasValue)
                {
                    sql.AppendLine($"{(conditionIndex++ == 0 ? "where" : "and")} pd.Id = @id");
                }
                if (options.UserId.HasValue)
                {
                    sql.AppendLine($"{(conditionIndex++ == 0 ? "where" : "and")} pd.UserId = @UserId");
                }
                if (options.DisciplineTitleId.HasValue)
                {
                    sql.AppendLine($"{(conditionIndex++ == 0 ? "where" : "and")} pd.DisciplineTitleId = @DisciplineTitleId");
                }
                if (options.Ids != null && options.Ids.Count > 0)
                {
                    sql.AppendLine($"{(conditionIndex++ == 0 ? "where" : "and")} pd.Id in @Ids");
                }
                if (options.DisciplineTitlesIds != null && options.DisciplineTitlesIds.Count > 0)
                {
                    sql.AppendLine($"{(conditionIndex++ == 0 ? "where" : "and")} pd.DisciplineTitleId in @DisciplineTitlesIds");
                }
                if (options.UsersIds != null && options.UsersIds.Count > 0)
                {
                    sql.AppendLine($"{(conditionIndex++ == 0 ? "where" : "and")} pd.UserId in @UsersIds");
                }
                _logger.LogInformation($"Sql query successfully created:\n{sql.ToString()}");

                _logger.LogInformation("Try to execute sql get pinned disciplines query");
                var result = await QueryAsync <PinnedDiscipline>(sql.ToString(), options);

                _logger.LogInformation("Sql get pinned disciplines query successfully executed");
                return(result);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception.Message);
                throw exception;
            }
        }
 public async Task <IEnumerable <PinnedDiscipline> > Get(PinnedDisciplineGetOptions options)
 {
     return(await _dao.Get(options));
 }