public async Task <IActionResult> Create(BallotIssueCreate model) { if (ModelState.IsValid) { BallotIssue issue = new BallotIssue { BallotIssueTitle = model.BallotIssueTitle, Description = model.Description, ElectionId = _context.StateSingleton.Find(State.STATE_ID).currentElection }; _context.Add(issue); foreach (string title in model.OptionsTitles) { if (title != null && title.Length > 0) { IssueOption opt = new IssueOption { BallotIssueId = issue.BallotIssueId, IssueOptionTitle = title, IssueOptionInfo = title, }; _context.Add(opt); } } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(model)); }
public async Task <IActionResult> Edit(int id, [Bind("BallotIssueTitle,Description,OptionsTitles")] BallotIssueCreate model) { if (ModelState.IsValid) { try { var bi = _context.BallotIssues.Find(id); bi.BallotIssueTitle = model.BallotIssueTitle; bi.Description = model.Description; _context.Update(bi); foreach (string title in model.OptionsTitles) { if (title != null && title.Length > 0) { var existing = _context.IssueOptions.Where(op => op.BallotIssueId == id).ToList(); _context.RemoveRange(existing); IssueOption opt = new IssueOption { BallotIssueId = id, IssueOptionTitle = title, IssueOptionInfo = title, }; _context.Add(opt); } } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!BallotIssueExists(id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(model)); }
// GET: BallotIssues/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var ballotIssue = await _context.BallotIssues.FindAsync(id); if (ballotIssue == null) { return(NotFound()); } var options = _context.IssueOptions.Where(op => op.BallotIssueId == id).ToList(); BallotIssueCreate model = new BallotIssueCreate { BallotIssueTitle = ballotIssue.BallotIssueTitle, Description = ballotIssue.Description, OptionsTitles = new List <string> { "", "", "", "" } }; if (options != null) { int cnt = 0; foreach (var op in options) { model.OptionsTitles.Add(options[cnt++].IssueOptionTitle); } } return(View(model)); }