public async Task <IEnumerable <GroupDisciplineLoad> > Get(GroupDisciplineLoadGetOptions options) { var groupDisciplineLoad = await _groupDisciplineLoadDao.Get(options); var studyLoad = await _studyLoadService.Get(new StudyLoadGetOptions { GroupDisciplineLoadsIds = groupDisciplineLoad.Select(o => o.Id).ToList() }); var disciplineTitles = await _disciplineTitleService.Get(new DisciplineTitleGetOptions { DepartmentLoadsIds = options.DepartmentLoadsIds }); var studentGroups = await _studentGroupService.Get(new StudentGroupGetOptions { DepartmentLoadsIds = options.DepartmentLoadsIds }); foreach (var load in groupDisciplineLoad) { load.DisciplineTitle = disciplineTitles.FirstOrDefault(o => o.Id == load.DisciplineTitleId); load.StudentGroup = studentGroups.FirstOrDefault(o => o.Id == load.StudentGroupId); load.StudyLoad = studyLoad.Where(o => o.GroupDisciplineLoadId == load.Id).ToList(); } return(groupDisciplineLoad); }
public async Task <IEnumerable <GroupDisciplineLoad> > Get(GroupDisciplineLoadGetOptions options) { try { StringBuilder sql = new StringBuilder(); _logger.LogInformation("Try to create get group discipline load sql query"); sql.AppendLine(@" select gl.Id, gl.DepartmentLoadId, gl.DisciplineTitleId, gl.StudentGroupId, gl.FacultyName, gl.SemesterNumber, gl.StudyWeeksCount, gl.Amount from GroupDisciplineLoad gl left join DepartmentLoad dl on gl.DepartmentLoadId = dl.Id "); int conditionIndex = 0; if (options.DepartmentLoadId.HasValue) { sql.AppendLine($"{(conditionIndex++ == 0 ? "where" : "and")} (dl.Id = @DepartmentLoadId)"); } if (options.DepartmentLoadsIds != null && options.DepartmentLoadsIds.Count > 0) { sql.AppendLine($"{(conditionIndex++ == 0 ? "where" : "and")} (dl.Id in @DepartmentLoadsIds)"); } _logger.LogInformation($"Sql query successfully created:\n{sql.ToString()}"); _logger.LogInformation("Try to execute sql get group discipline load query"); var result = await QueryAsync <GroupDisciplineLoad>(sql.ToString(), options); _logger.LogInformation("Sql get group discipline load query successfully executed"); return(result); } catch (Exception exception) { _logger.LogError(exception.Message); throw exception; } }