示例#1
0
        public async Task <IActionResult> Edit([FromRoute] int ID, [FromForm] EditBoardViewModel editBoardViewModel, [FromRoute] int pageNumber)
        {
            TryValidateModel(editBoardViewModel);
            if (ID != editBoardViewModel.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                Board board = await mDbContext.Boards.FirstOrDefaultAsync(m => m.ID == ID);

                board.Subject   = editBoardViewModel.Subject;
                board.Content   = editBoardViewModel.Content;
                board.WriteDate = editBoardViewModel.WriteDate;
                try
                {
                    mDbContext.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!boardExists(editBoardViewModel.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index), "Boards", new { pageNumber }));
            }

            return(View(editBoardViewModel));
        }
示例#2
0
        public async Task SaveBoard(EditBoardViewModel boardToSave, bool runBoardAfterSaving)
        {
            var eventArgs = new BoardSavingEventArgs
            {
                RunBoardAfterSaving = runBoardAfterSaving
            };

            if (string.IsNullOrEmpty(boardToSave.Id))
            {
                eventArgs.SavedBoard = new QuestionBoard
                {
                    Name        = boardToSave.Name,
                    Question    = boardToSave.Question,
                    Answers     = boardToSave.Answers,
                    CreatedDate = _dateTimeService.Now
                };

                await _boardRepoService.SaveAsync(eventArgs.SavedBoard);

                _feudHostService.AddBoard(eventArgs.SavedBoard);
            }
            else
            {
                eventArgs.SavedBoard = _feudHostService.GetBoardForHost(boardToSave.Id);

                eventArgs.SavedBoard.Name     = boardToSave.Name;
                eventArgs.SavedBoard.Question = boardToSave.Question;
                eventArgs.SavedBoard.Answers  = boardToSave.Answers;

                await _boardRepoService.SaveAsync(eventArgs.SavedBoard);
            }

            BoardChangesSaving?.Invoke(this, eventArgs);
        }
示例#3
0
        public async Task <IActionResult> Edit([FromRoute] int?ID, [FromRoute] int pageNumber)
        {
            if (ID == null)
            {
                return(NotFound());
            }

            Board board = await mDbContext.Boards.FindAsync(ID);

            if (board == null)
            {
                return(NotFound());
            }

            EditBoardViewModel editBoardViewModel = new EditBoardViewModel
            {
                ID        = board.ID,
                UserName  = board.UserName,
                Subject   = board.Subject,
                Content   = board.Content,
                WriteDate = board.WriteDate,
                PageIndex = pageNumber
            };

            return(View(editBoardViewModel));
        }
示例#4
0
        protected EditBoardViewModel SanitizeBoard(EditBoardViewModel boardToSave)
        {
            boardToSave.Name     = Sanitize(boardToSave.Name, 50);
            boardToSave.Question = Sanitize(boardToSave.Question, 200);

            var emptyAnswer = boardToSave.Answers.FirstOrDefault(x => string.IsNullOrWhiteSpace(x.Text));

            while (emptyAnswer != null)
            {
                boardToSave.Answers.Remove(emptyAnswer);

                for (int i = 0; i < boardToSave.Answers.Count; i++)
                {
                    boardToSave.Answers[i].Number = i + 1;
                }

                emptyAnswer = boardToSave.Answers.FirstOrDefault(x => string.IsNullOrWhiteSpace(x.Text));
            }

            foreach (var answer in boardToSave.Answers)
            {
                answer.Text = Sanitize(answer.Text, 200);
            }

            for (var i = boardToSave.Answers.Count + 1; i <= 10; i++)
            {
                boardToSave.Answers.Add(new QuestionAnswer
                {
                    Number = i
                });
            }

            return(boardToSave);
        }
示例#5
0
        public void EditBoard(string boardId)
        {
            try
            {
                var board = FeudHostService.GetBoardForHost(boardId);

                BoardToEdit = new EditBoardViewModel
                {
                    Id       = board.Id,
                    Name     = board.Name,
                    Question = board.Question
                };

                for (var i = 0; i < board.Answers.Count; i++)
                {
                    BoardToEdit.Answers[i].Text   = board.Answers[i].Text;
                    BoardToEdit.Answers[i].Points = board.Answers[i].Points;
                }

                CurrentEditTab = Shared.EditBoard.TabKeys.Edit;

                InvokeAsync(StateHasChanged);
            }
            catch (Exception ex)
            {
                Program.Logger.Log(NLog.LogLevel.Error, ex);
                NavigationManager.NavigateTo("error");
            }
        }
        public ActionResult InsertEditBoardView(int boardId, string name, string description)
        {
            EditBoardViewModel ebvm = new EditBoardViewModel()
            {
                BoardId = boardId, Name = name, Description = description
            };

            return(PartialView("_EditBoard", ebvm));
        }
示例#7
0
 public IActionResult Edit(EditBoardViewModel model)
 {
     if (ModelState.IsValid)
     {
         Board board = new Board();
         board.Title   = model.Title;
         board.Content = model.Content;
         board.UserId  = model.UserId;
         board.No      = model.No;
         if (_boardBll.UpdateBoard(board))
         {
             return(Redirect("Index"));
         }
     }
     return(View());
 }
示例#8
0
        public void ResetBoardAfterEditing(object sender, EventArgs e)
        {
            try
            {
                Program.Logger.Log(NLog.LogLevel.Debug, $"FeudList.ResetBoardAfterEditing");

                BoardToEdit = new EditBoardViewModel();

                CurrentEditTab = Shared.EditBoard.TabKeys.Import;

                InvokeAsync(StateHasChanged);
            }
            catch (Exception ex)
            {
                Program.Logger.Log(NLog.LogLevel.Error, ex);
                NavigationManager.NavigateTo("error");
            }
        }
示例#9
0
        protected override async Task OnInitializedAsync()
        {
            try
            {
                BoardToEdit = new EditBoardViewModel();

                await FeudHostService.LoadBoardsAsync();

                Boards = FeudHostService.GetBoardsForHost();

                Program.Logger.Log(NLog.LogLevel.Debug, $"FeudList.OnInitialized - adding event handlers");

                BoardEditingService.BoardChangesSaving    += SaveBoard;
                BoardEditingService.BoardChangesCancelled += ResetBoardAfterEditing;
            }
            catch (Exception ex)
            {
                Program.Logger.Log(NLog.LogLevel.Error, ex);
                NavigationManager.NavigateTo("error");
            }
        }
示例#10
0
        public List <string> Validate(EditBoardViewModel board)
        {
            var failures = new List <string>();

            if (string.IsNullOrWhiteSpace(board.Name))
            {
                failures.Add("Name is required.");
            }

            if (string.IsNullOrWhiteSpace(board.Question))
            {
                failures.Add("Question is required.");
            }

            if (board.Answers == null ||
                !board.Answers.Any() ||
                board.Answers.All(x => string.IsNullOrWhiteSpace(x.Text)))
            {
                failures.Add("At least one Answer is required");
            }

            return(failures);
        }