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));
        }