public async Task <IActionResult> Index() { var count = await _repository.CountAsync(null); var items = await _repository.GetListAsync(null, 0, count); var tz = TZConvert.GetTimeZoneInfo("Russian Standard Time"); var surveysModel = new List <SurveyModel>(); items.ForEach(p => surveysModel.Add(new SurveyModel { Id = p.Id, Title = p.Title, CreatedAt = TimeZoneInfo.ConvertTimeFromUtc(p.CreatedAt.UtcDateTime, tz), IsActive = p.IsActive })); return(View(surveysModel)); }
public async Task <IActionResult> Create() { var count = await _surveyRepository.CountAsync(p => p.IsActive, p => p.Push); var items = await _surveyRepository.GetListAsync(null, 0, count, p => p.IsActive, p => p.Push); var surveys = new List <SelectListItem>(); items.ForEach(p => surveys.Add( new SelectListItem { Text = p.Title, Value = p.Id.ToString() } )); var pushModel = new PushModel { Surveys = surveys }; return(View(pushModel)); }
public async Task <ActionResult <SurveyResponse> > GetQuestionary([FromQuery] int userId, [FromQuery] string type, [FromQuery] string order, [FromQuery] int?skip, [FromQuery] int?take) { int count = 0; var user = await _userRepository.GetAsync(userId); List <Survey> items = null; if (type == "all" || string.IsNullOrEmpty(type)) { count = await _surveyRepository.CountAsync(s => s.IsActive); items = await _surveyRepository.GetListAsync(order, skip ?? 0, take ?? count, s => s.IsActive, p => p.Likes); } else { switch (type) { case "mine": { //var userId = GetUserId(); //if (userId == null) // return Unauthorized(); var email = user?.Email; count = await _surveyRepository.CountAsync(s => s.SurveyUser.Any(u => u.User.Email == email), s => s.SurveyUser); items = await _surveyRepository.GetListAsync(order, skip ?? 0, take ?? count, s => s.SurveyUser.Any(u => u.User.Email == email), s => s.SurveyUser, p => p.Likes); //items = items.Where(s => s.SurveyUser.Any(u => u.User.Email == userId))?.ToList(); break; } case "uncompleted": if (GetUserId() == null) { count = await _surveyRepository.CountAsync(s => s.IsActive && (s.NeedToBeFinishedForStart == s.NeedToBeFinishedFor || s.NeedToBeFinishedFor.LocalDateTime > DateTime.Now) && s.Limit > s.NumberOfUser, s => s.SurveyUser); items = await _surveyRepository.GetListAsync(order, skip ?? 0, take ?? count, p => p.IsActive && (p.NeedToBeFinishedForStart == p.NeedToBeFinishedFor || p.NeedToBeFinishedFor.LocalDateTime > DateTime.Now) && p.Limit > p.NumberOfUser, s => s.SurveyUser, p => p.Likes); } else { count = await _surveyRepository.CountAsync(s => !s.SurveyUser.Any(u => u.User.Email == GetUserId() && u.IsFinished ) && s.IsActive && (s.NeedToBeFinishedForStart == s.NeedToBeFinishedFor || s.NeedToBeFinishedFor.LocalDateTime > DateTime.Now) && s.Limit > s.NumberOfUser, s => s.SurveyUser); items = await _surveyRepository.GetListAsync(order, skip ?? 0, take ?? count, p => p.IsActive && !p.SurveyUser.Any(u => u.User.Email == GetUserId() && u.IsFinished) && (p.NeedToBeFinishedForStart == p.NeedToBeFinishedFor || p.NeedToBeFinishedFor.LocalDateTime > DateTime.Now) && p.Limit > p.NumberOfUser, s => s.SurveyUser, p => p.Likes); } //items = items.Where(s => !s.SurveyUser.Any(u => u.IsFinished)).ToList(); break; case "best": count = await _surveyRepository.CountAsync(s => s.Likes.Count > 0 && s.IsActive, s => s.Likes); items = await _surveyRepository.GetListAsync("like", skip ?? 0, take ?? count, p => p.IsActive && p.Likes.Count > 0, p => p.Likes); //items = items.Where(s => s.Likes.Count > 0).ToList(); break; } } var response = new SurveyResponse { Count = count, Items = new List <SurveyItem>() }; items?.ForEach(p => response.Items.Add(new SurveyItem { Id = p.Id, Title = p.Title, Description = p.Text, Score = p.Score, LimitCnt = p.Limit, CurrentCnt = p.NumberOfUser, CreatedAt = p.CreatedAt, TimeForCompleting = p.NeedToBeFinishedFor, TimeForCompletingStart = p.NeedToBeFinishedForStart, LikeCnt = p.Likes?.Count ?? 0, IsLiked = p.Likes?.FirstOrDefault(m => m.UserId == user?.Id) != null })); return(response); }