예제 #1
0
        public async Task <IActionResult> Create(InputModels.MessageInput input)
        {
            if (ModelState.IsValid)
            {
                if (Request.Method == "GET" && input.BoardId != null)
                {
                    input.SelectedBoards.Add((int)input.BoardId);
                }
                else
                {
                    foreach (var board in await BoardRepository.Records())
                    {
                        if (Request.Form.TryGetValue("Selected_" + board.Id, out var boardSelected))
                        {
                            if (boardSelected == "True")
                            {
                                input.SelectedBoards.Add(board.Id);
                            }
                        }
                    }
                }

                var serviceResponse = await MessageRepository.CreateTopic(input);

                return(await ForumViewResult.RedirectFromService(this, serviceResponse, FailureCallback));
            }

            return(await FailureCallback());

            async Task <IActionResult> FailureCallback()
            {
                ViewData["Smileys"] = await SmileyRepository.GetSelectorList();

                var viewModel = new ViewModels.Messages.CreateTopicForm {
                    Id      = "0",
                    BoardId = input.BoardId.ToString(),
                    Body    = input.Body
                };

                return(await ForumViewResult.ViewResult(this, viewModel));
            }
        }
예제 #2
0
        public async Task <IActionResult> Create(int id = 0)
        {
            ViewData["Smileys"] = await SmileyRepository.GetSelectorList();

            var board = (await BoardRepository.Records()).First(item => item.Id == id);

            if (Request.Query.TryGetValue("source", out var source))
            {
                return(await Create(new InputModels.MessageInput {
                    BoardId = id, Body = source
                }));
            }

            var viewModel = new ViewModels.Messages.CreateTopicForm {
                Id      = "0",
                BoardId = id.ToString()
            };

            return(await ForumViewResult.ViewResult(this, viewModel));
        }
예제 #3
0
        public async Task <IActionResult> Edit(InputModels.MessageInput input)
        {
            if (ModelState.IsValid)
            {
                var serviceResponse = await MessageRepository.EditMessage(input);

                if (input.SideLoad)
                {
                    foreach (var kvp in serviceResponse.Errors)
                    {
                        ModelState.AddModelError(kvp.Key, kvp.Value);
                    }
                }
                else
                {
                    return(await ForumViewResult.RedirectFromService(this, serviceResponse, FailureCallback));
                }
            }

            if (input.SideLoad)
            {
                var errors = ModelState.Keys.Where(k => ModelState[k].Errors.Count > 0).Select(k => new { propertyName = k, errorMessage = ModelState[k].Errors[0].ErrorMessage });
                return(new JsonResult(errors));
            }
            else
            {
                return(await FailureCallback());
            }

            async Task <IActionResult> FailureCallback()
            {
                var viewModel = new ViewModels.Messages.CreateTopicForm {
                    Id        = "0",
                    Body      = input.Body,
                    ElementId = "create-topic"
                };

                return(await ForumViewResult.ViewResult(this, viewModel));
            }
        }