public async Task <IActionResult> submitPollAnswer(PollViewModel poll) { if (ModelState.IsValid) { var selectedRadio = poll.RadioId; var pollId = poll.Id; var user = await userManager.GetUserAsync(HttpContext.User); var matchEntry = db.AnswerOptionsPoll.Where(aop => aop.PollId == pollId) .Where(aop => aop.AnswerOptionsId == selectedRadio); var selectedAnswerOptionsPollId = -1; selectedAnswerOptionsPollId = matchEntry.First().Id; //Neues aktuelles Abstimmungsobjekt var userAnswerOptionsPoll = new UserAnswerOptionsPoll(); userAnswerOptionsPoll.AnswerOptionsPollId = selectedAnswerOptionsPollId; userAnswerOptionsPoll.UserId = user.Id; //den User in der AnsweroptionsPoll suchen var anyAnswers = db.AnswerOptionsPoll.FromSql( "select * from User_AnswerOptions_Poll as uaop LEFT JOIN AnswerOptions_Poll AS aop on uaop.answerOptions_poll_ID = aop.ID where aop.poll_ID = {0} and uaop.User_ID={1};", pollId, user.Id).ToList(); //Gibt es schon eine Abstimmung des Users (ja count != 0) if (anyAnswers.Count != 0) { //db entry wird gelöscht und ein neuer angelegt, mit der neuen ID var userAnswerOptionsPolltmp = new UserAnswerOptionsPoll(); userAnswerOptionsPolltmp.AnswerOptionsPollId = anyAnswers.First().Id; userAnswerOptionsPolltmp.UserId = user.Id; db.UserAnswerOptionsPoll.Remove(userAnswerOptionsPolltmp); db.SaveChanges(); } db.UserAnswerOptionsPoll.Add(userAnswerOptionsPoll); db.SaveChanges(); } return(ShowPolls()); }
public async Task <IActionResult> submitPollAnswer(PollViewModel poll) //submit Poll answer on the index page, and poll page { if (ModelState.IsValid) { int selectedRadio = poll.RadioId; int pollId = poll.Id; User user = await userManager.GetUserAsync(HttpContext.User); IQueryable <AnswerOptionsPoll> matchEntry = db.AnswerOptionsPoll.Where(aop => aop.Id == selectedRadio); int selectedAnswerOptionsPollId = -1; selectedAnswerOptionsPollId = matchEntry.First().Id; UserAnswerOptionsPoll userAnswerOptionsPoll = new UserAnswerOptionsPoll(); userAnswerOptionsPoll.AnswerOptionsPollId = selectedAnswerOptionsPollId; userAnswerOptionsPoll.UserId = user.Id; List <AnswerOptionsPoll> anyAnswers = db.AnswerOptionsPoll.FromSql( "select * from User_AnswerOptions_Poll as uaop LEFT JOIN AnswerOptions_Poll AS aop on uaop.answerOptions_poll_ID = aop.ID where aop.poll_ID = {0} and uaop.User_ID={1};", pollId, user.Id).ToList(); if (anyAnswers.Count != 0) { UserAnswerOptionsPoll userAnswerOptionsPolltmp = new UserAnswerOptionsPoll(); userAnswerOptionsPolltmp.AnswerOptionsPollId = anyAnswers.First().Id; userAnswerOptionsPolltmp.UserId = user.Id; db.UserAnswerOptionsPoll.Remove(userAnswerOptionsPolltmp); db.SaveChanges(); } db.UserAnswerOptionsPoll.Add(userAnswerOptionsPoll); db.SaveChanges(); } return(await ShowPolls()); }
//Umfragen auf der Startseite anzeigen public async Task <ICollection <PollViewModel> > ShowPollsIndex() { DateTime time = DateTime.UtcNow; List <Poll> polls = db.Poll.Where(p => p.StatusId == 2).Where(p => p.End > time).Include("Category") .OrderBy(p => p.End).Take(4).ToList(); //.OrderBy(p => p.End) var user = await userManager.GetUserAsync(HttpContext.User); foreach (Poll poll in polls) { List <AnswerOptionsPoll> answers = db.AnswerOptionsPoll.Where(aop => aop.PollId == poll.Id) .Include("AnswerOptions") .Where(aop => aop.AnswerOptionsId == aop.AnswerOptions.Id).Select(aop => new AnswerOptionsPoll { Id = aop.Id, AnswerOptionsId = aop.AnswerOptionsId, PollId = aop.PollId, AnswerOptions = aop.AnswerOptions } ).ToList(); List <Image> images = db.Image.Where(i => i.PollId == poll.Id).Select(ii => new Image { Id = ii.Id }).ToList(); List <File> files = db.File.Where(f => f.PollId == poll.Id).Select(ff => new File { Id = ff.Id, Name = ff.Name, Ending = ff.Ending }).ToList(); poll.AnswerOptionsPoll = answers; poll.Image = images; poll.File = files; } ICollection <PollViewModel> pollViewModels = new List <PollViewModel>(); foreach (Poll poll in polls) { PollViewModel pollViewModel = new PollViewModel(); pollViewModel.Id = poll.Id; pollViewModel.Text = poll.Text; if (pollViewModel.End == null) { pollViewModel.End = DateTime.UtcNow; } else { pollViewModel.End = (DateTime)poll.End; } pollViewModel.UserId = poll.UserId; pollViewModel.NeedsLocalCouncil = poll.NeedsLocalCouncil; pollViewModel.Approved = poll.Approved; pollViewModel.CategoryId = poll.CategoryId; pollViewModel.Title = poll.Title; pollViewModel.Category = poll.Category; pollViewModel.User = poll.User; pollViewModel.AnswerOptionsPoll = poll.AnswerOptionsPoll; pollViewModel.RadioId = 0; pollViewModel.Image = poll.Image; pollViewModel.userAnswerOptionsPollId = 0; if (user != null) { UserAnswerOptionsPoll userAnswerOptionsPoll = null; foreach (AnswerOptionsPoll aop in poll.AnswerOptionsPoll) { userAnswerOptionsPoll = db.UserAnswerOptionsPoll .Where(uaop => uaop.UserId == user.Id && uaop.AnswerOptionsPollId == aop.Id) .SingleOrDefault(); if (userAnswerOptionsPoll != null) { break; } } if (userAnswerOptionsPoll != null) { pollViewModel.userAnswerOptionsPollId = userAnswerOptionsPoll.AnswerOptionsPollId; } } pollViewModels.Add(pollViewModel); } return(pollViewModels); }
//Alle Einwohner Umfragen ausgeben public async Task <IActionResult> ShowPolls() //show all Polls { DateTime time = DateTime.UtcNow; List <Poll> polls = db.Poll.Where(p => p.End > time).Where(p => p.NeedsLocalCouncil == false) .Where(p => p.Approved).Include("Category").OrderBy(p => p.End).ToList(); List <SelectListItem> categoriesList = new List <SelectListItem>(); List <Category> categories = db.Category.ToList(); var user = await userManager.GetUserAsync(HttpContext.User); ViewData["Categories"] = categories; foreach (Category category in categories) { categoriesList.Add(new SelectListItem { Value = category.Id.ToString(), Text = category.Description }); } ViewData["CategoriesList"] = categoriesList; foreach (Poll poll in polls) { List <AnswerOptionsPoll> answers = db.AnswerOptionsPoll.Where(aop => aop.PollId == poll.Id) .Include("AnswerOptions") .Where(aop => aop.AnswerOptionsId == aop.AnswerOptions.Id).Select(aop => new AnswerOptionsPoll { Id = aop.Id, AnswerOptionsId = aop.AnswerOptionsId, PollId = aop.PollId, AnswerOptions = aop.AnswerOptions } ).ToList(); List <Image> images = db.Image.Where(i => i.PollId == poll.Id).Select(ii => new Image { Id = ii.Id }).ToList(); List <File> files = db.File.Where(f => f.PollId == poll.Id).Select(ff => new File { Id = ff.Id, Name = ff.Name, Ending = ff.Ending }).ToList(); poll.AnswerOptionsPoll = answers; poll.Image = images; poll.File = files; } ICollection <PollViewModel> pollViewModels = new List <PollViewModel>(); foreach (Poll poll in polls) { PollViewModel pollViewModel = new PollViewModel(); pollViewModel.Id = poll.Id; pollViewModel.Text = poll.Text; if (pollViewModel.End == null) { pollViewModel.End = DateTime.UtcNow; } else { pollViewModel.End = (DateTime)poll.End; } pollViewModel.UserId = poll.UserId; pollViewModel.NeedsLocalCouncil = poll.NeedsLocalCouncil; pollViewModel.Approved = poll.Approved; pollViewModel.CategoryId = poll.CategoryId; pollViewModel.Title = poll.Title; pollViewModel.Category = poll.Category; pollViewModel.User = poll.User; pollViewModel.AnswerOptionsPoll = poll.AnswerOptionsPoll; pollViewModel.RadioId = 0; pollViewModel.Image = poll.Image; pollViewModel.userAnswerOptionsPollId = 0; if (user != null) { UserAnswerOptionsPoll userAnswerOptionsPoll = null; foreach (AnswerOptionsPoll aop in poll.AnswerOptionsPoll) { userAnswerOptionsPoll = db.UserAnswerOptionsPoll .Where(uaop => uaop.UserId == user.Id && uaop.AnswerOptionsPollId == aop.Id) .SingleOrDefault(); if (userAnswerOptionsPoll != null) { break; } } if (userAnswerOptionsPoll != null) { pollViewModel.userAnswerOptionsPollId = userAnswerOptionsPoll.AnswerOptionsPollId; } } pollViewModels.Add(pollViewModel); } return(View("PollsView", pollViewModels)); }