public async Task <CourseScheduleViewModel> Get(CourseScheduleDtoModel input) { if (input == null) { throw new ArgumentNullException(nameof(input)); } _logger.LogInformation("Get: " + "DatetimeRequest: " + input.DateTimeRequest + " " + "GroupName: " + input.GroupName); try { // подготавливаем параметры для получения расписания var courseScheduleParameters = new CourseScheduleParameters { NumberWeek = _parityOfTheWeekService.GetCountParityOfWeek(input.DateTimeRequest), NameOfDayWeek = CultureInfo.GetCultureInfo("ru-RU").DateTimeFormat .GetDayName(input.DateTimeRequest.DayOfWeek).ToLower(), ParityWeek = _parityOfTheWeekService.GetParityOfTheWeekByDateTime(input.DateTimeRequest), GroupName = input.GroupName, DatetimeRequest = input.DateTimeRequest, FileName = _fileName }; var courseScheduleDatabaseModel = await _courseScheduleDatabaseService.GetByParameters(courseScheduleParameters); var courseScheduleModel = _mapper.Map <List <CourseScheduleModel> >(courseScheduleDatabaseModel); var result = PrepareViewModel(courseScheduleModel, courseScheduleParameters); _logger.LogInformation("Get: " + result); return(result); } catch (Exception ex) { _logger.LogError("Get Exception: " + ex); throw new NotSupportedException("Ошибка во время выполнения." + ex); } }
private CourseScheduleViewModel PrepareViewModel( List <CourseScheduleModel> input, CourseScheduleParameters parameters) { if (input == null || parameters == null) { throw new ArgumentNullException(nameof(input)); } try { _logger.LogInformation("PrepareViewModel: " + "CourseScheduleModel: " + input.Count + " " + "CourseScheduleParameters: " + parameters.DatetimeRequest + " " + "GroupName: " + parameters.GroupName ); // если отсутствуют данные о расписании, возвращаем пустую модель if (IsEmptyCourseSchedule(input)) { var emptyCourseScheduleViewModel = new CourseScheduleViewModel { NameOfDayWeek = parameters.NameOfDayWeek.ToUpper(), DatetimeRequest = parameters.DatetimeRequest.Date.ToShortDateString(), UpdateDatetime = _fileService.GetLastWriteTime(parameters.FileName).Result.ToShortDateString(), CoursesViewModel = new List <CourseViewModel> { new CourseViewModel() }, NumberWeek = _parityOfTheWeekService.GetCountParityOfWeek(parameters.DatetimeRequest.Date) }; return(emptyCourseScheduleViewModel); } // маппим список предметов из бд в модель представления var coursesViewModel = _mapper.Map <List <CourseViewModel> >(input); // удаляем пустые предметы и сортируем по позиции в раписании var sortedCoursesViewModel = coursesViewModel .Where(w => !string.IsNullOrEmpty(w.CourseName)) .OrderBy(o => o.CourseNumber) .ToList(); // создаем результирующую модель представления var resultCourseScheduleViewModel = new CourseScheduleViewModel { CoursesViewModel = sortedCoursesViewModel, NameOfDayWeek = parameters.NameOfDayWeek.ToUpper(), DatetimeRequest = parameters.DatetimeRequest.Date.ToShortDateString(), UpdateDatetime = _fileService.GetLastWriteTime(parameters.FileName).Result.Date.ToShortDateString(), NumberWeek = _parityOfTheWeekService.GetCountParityOfWeek(parameters.DatetimeRequest) }; _logger.LogInformation("PrepareViewModel: " + "CoursesViewModel: " + "DatetimeRequest: " + resultCourseScheduleViewModel.DatetimeRequest + " " + "CoursesViewModel.Count: " + resultCourseScheduleViewModel.CoursesViewModel.Count ); return(resultCourseScheduleViewModel); } catch (Exception ex) { _logger.LogInformation("PrepareViewModel Exception: " + ex); throw new NotSupportedException("Ошибка во время выполнения." + ex); } }
#pragma warning disable 1998 public async Task <List <CourseScheduleDatabaseModel> > GetByParameters(CourseScheduleParameters parameters) #pragma warning restore 1998 { try { if (parameters == null) { throw new NotSupportedException(); } var courseSchedules = _context.CourseSchedules .Include(i => i.TeacherModel) .Include(d => d.StudyGroupModel) .Where(d => (d.CourseType == CourseType.Lecture || d.CourseType == CourseType.Practicte || d.CourseType == CourseType.LaboratoryWork || d.CourseType == CourseType.Other)) .ToList(); var list = new List <CourseScheduleDatabaseModel>(); foreach (var scheduleDatabaseModel in courseSchedules) { var model = scheduleDatabaseModel; model.NumberWeek = _importDataExcelService.ParseNumberWeek(scheduleDatabaseModel.NumberWeekString); list.Add(model); } var result = list.Where(f => string.Equals(f.NameOfDayWeek, parameters.NameOfDayWeek, StringComparison.OrdinalIgnoreCase) && (f.NumberWeek.Any(a => a == parameters.NumberWeek) || f.NumberWeek.Count == 0) && f.ParityWeek == parameters.ParityWeek && f.StudyGroupModel?.Name == parameters.GroupName && f.IsDeleted == false) .ToList(); var studyGroupCombined = new List <StudyGroupModel>(); var filteredCourseSchedules = courseSchedules.Where(f => string.Equals(f.NameOfDayWeek, parameters.NameOfDayWeek, StringComparison.OrdinalIgnoreCase) && (f.NumberWeek.Any(a => a == parameters.NumberWeek) || f.NumberWeek.Count == 0) && f.ParityWeek == parameters.ParityWeek && f.IsDeleted == false) .ToList(); foreach (var model in result) { foreach (var scheduleDatabaseModel in filteredCourseSchedules .Where(scheduleDatabaseModel => model.CoursePlace == scheduleDatabaseModel.CoursePlace && model.CourseNumber == scheduleDatabaseModel.CourseNumber && model.StudyGroupModel.Name != scheduleDatabaseModel.StudyGroupModel.Name)) { studyGroupCombined.Add(scheduleDatabaseModel.StudyGroupModel); model.CombinedGroup = studyGroupCombined.Distinct().ToList(); } } return(result); } catch (Exception) { throw new NotSupportedException(); } }