예제 #1
0
        public async Task <IActionResult> EditLmsEvent(int lmsEventId)
        {
            var lmsEvent = await _lmsEventsRepository.GetLmsEventAsync(lmsEventId);

            ViewBag.LmsEventTypes = _selectListRepository.GetSelectListLmsEventTypes((int)LmsEventTypeGroupsEnum.Priem, lmsEvent.LmsEventTypeId);
            return(View(lmsEvent));
        }
예제 #2
0
        /// <summary>
        /// Возвращает вопрос из списка заданий мероприятия, на который пользователь ещё не отвечал
        /// </summary>
        public async Task <LmsEventLmsTasksetAppUserAnswer> GetLmsTaskNotAnsweredAsync(string userName, int lmsEventId)
        {
            // Получаем мероприятие
            var lmsEvent = await _lmsEventRepository.GetLmsEventAsync(lmsEventId);

            if (lmsEvent == null)
            {
                return(null);
            }

            // Удостоверяемся, что пользователь является участником события
            var appUser = lmsEvent.AppUserLmsEvents
                          .FirstOrDefault(ae => ae.AppUser.UserName == userName &&
                                          ae.AppUserLmsEventUserRoleId == (int)AppUserLmsEventUserRolesEnum.Participant)
                          .AppUser;

            if (appUser == null)
            {
                return(null);
            }

            //if (! lmsEvent.AppUserLmsEvents
            //    .Any(ae => ae.AppUser.UserName == userName &&
            //               ae.AppUserLmsEventUserRoleId == (int)AppUserLmsEventUserRolesEnum.Participant))
            //    return null;

            // Удостоверяемся, что мероприятие проходит в данный момент
            if (!lmsEvent.IsLmsEventStarted)
            {
                return(null);
            }

            foreach (var lmsEventLmsTaskSet in lmsEvent.LmsEventLmsTaskSets)
            {
                if (lmsEventLmsTaskSet.LmsTaskSetId != 0 && lmsEventLmsTaskSet.LmsTaskSet.LmsTaskSetLmsTasks == null)
                {
                    // Загружаем набор заданий
                    var lmsTaskSet = await _lmsTaskSetRepository.GetLmsTaskSetAsync(lmsEventLmsTaskSet.LmsTaskSetId);

                    lmsEventLmsTaskSet.LmsTaskSet = lmsTaskSet;
                }

                // Загружаем уже полученные ответы пользователя на вопросы данного мероприятия
                var appUserAnswers = await GetLmsEventLmsTaskSetAppUserAnswers(userName, lmsEventLmsTaskSet.LmsEventLmsTaskSetId).ToListAsync();

                foreach (var lmsTaskSetLmsTask in lmsEventLmsTaskSet.LmsTaskSet.LmsTaskSetLmsTasks)
                {
                    // Проверяем, отвечал ли уже пользователь на данный вопрос
                    bool isAppUserAnswered = false;
                    foreach (var appUserAnswer in appUserAnswers)
                    {
                        if (appUserAnswer.LmsTaskId == lmsTaskSetLmsTask.LmsTaskId)
                        {
                            isAppUserAnswered = true;
                            break;
                        }
                    }

                    if (!isAppUserAnswered)
                    {
                        // Если мы до сюда дошли, значит пользователь не отвечал на текущий вопрос
                        // Формируем объект будущего ответа для передачи в представление задания
                        var newAppUserAnswer = new LmsEventLmsTasksetAppUserAnswer
                        {
                            AppUserId            = appUser.Id,
                            LmsEventLmsTaskSetId = lmsEventLmsTaskSet.LmsEventLmsTaskSetId,
                            LmsTaskId            = lmsTaskSetLmsTask.LmsTaskId,
                            LmsTask = lmsTaskSetLmsTask.LmsTask
                        };

                        return(newAppUserAnswer);
                    }
                }
            }

            return(null);
        }