public async Task <IActionResult> GetControlWeek(
            [FromBody] ControlWeekRequestModel requestModel,
            CancellationToken cancellationToken)
        {
            try
            {
                _logger.LogInformation("Request: " + requestModel);

                var result = await _controlWeekService.Get(requestModel, cancellationToken);

                _logger.LogInformation("Response: " + requestModel);

                return(Ok(result));
            }
            catch (Exception ex)
            {
                _logger.LogError("Exception: " + ex);
                return(BadRequest(ex));
            }
        }
        public async Task <ControlWeekViewModel> Get(ControlWeekRequestModel requestModel,
                                                     CancellationToken cancellationToken)
        {
            try
            {
                cancellationToken.ThrowIfCancellationRequested();

                _logger.LogInformation("Get: " + $"{requestModel?.GroupName}");

                var controlWeekList = await _controlWeekDatabaseService.Get(cancellationToken);

                var controlWeekControlModel = PrepareViewModel(controlWeekList, requestModel);

                return(controlWeekControlModel);
            }
            catch (Exception ex)
            {
                _logger.LogError("GetControlWeek Exception: " + ex);
                throw new NotSupportedException("Ошибка во время выполнения." + ex);
            }
        }
        private ControlWeekViewModel PrepareViewModel(
            List <CourseScheduleDatabaseModel> controlWeekList,
            ControlWeekRequestModel requestModel)
        {
            // маппим список предметов из бд в модель представления
            var controlCourseViewModel = _mapper.Map <List <ControlCourseViewModel> >(controlWeekList);

            // удаляем пустые предметы и сортируем по позиции в раписании
            var sortedControlCourseViewModel = controlCourseViewModel
                                               .Where(w => !string.IsNullOrEmpty(w.CourseName) &&
                                                      w.CourseName != "Военная кафедра" &&
                                                      string.Equals(w.StudyGroupModel?.Name, requestModel.GroupName)
                                                      )
                                               .Select(s =>
            {
                s.NameOfDayWeek = StringConverterHelper.UppercaseFirst(s.NameOfDayWeek);
                return(s);
            })
                                               .OrderBy(o => StringConverterHelper.ToDayOfWeek(o.NameOfDayWeek))
                                               .ToList();

            // создаем результирующую модель представления
            var resultControlWeekViewModel = new ControlWeekViewModel
            {
                ControlCourseViewModel = sortedControlCourseViewModel,
                DatetimeRequest        = DateTimeOffset.UtcNow.Date.ToShortDateString(),
                UpdateDatetime         = _fileService.GetLastWriteTime(_fileName).Result.Date.ToShortDateString()
            };

            _logger.LogInformation("PrepareViewModel: "
                                   + "CoursesViewModel: " + "DatetimeRequest: " +
                                   resultControlWeekViewModel.DatetimeRequest + " " +
                                   "CoursesViewModel.Count: " + resultControlWeekViewModel.ControlCourseViewModel.Count
                                   );

            return(resultControlWeekViewModel);
        }