public IActionResult EditEvent(int id) { var topicRecord = DbContext.Topics.Find(id); var eventRecord = DbContext.Events.FirstOrDefault(item => item.TopicId == id); if (topicRecord is null) { throw new HttpNotFoundError(); } if (eventRecord is null) { return(RedirectToAction(nameof(CreateEvent), new { id })); } var isOwner = topicRecord.FirstMessagePostedById == UserContext.Id; var isAdmin = UserContext.IsAdmin; if (!isOwner && !isAdmin) { throw new HttpForbiddenError(); } var editEventViewModel = new ViewModels.Topics.EditEventForm { FormAction = nameof(Topics.EditEvent), FormController = nameof(Topics), Start = eventRecord.Start, End = eventRecord.End, AllDay = eventRecord.AllDay, TopicId = id }; return(View(editEventViewModel)); }
public async Task <IActionResult> Create(ControllerModels.Topics.CreateTopicInput input) { if (Request.Method != "GET") { 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); } } } } if (input.Action == Options.ECreateTopicSaveAction.AddEvent) { var editEventViewModel = new ViewModels.Topics.EditEventForm { FormAction = nameof(CreateEvent), FormController = nameof(Topics), Body = input.Body, SelectedBoards = JsonConvert.SerializeObject(input.SelectedBoards) }; ModelState.ClearValidationState(input.Body); return(View("EditEvent", editEventViewModel)); } if (ModelState.IsValid) { var result = await TopicRepository.CreateTopic(input); ModelState.AddModelErrors(result.Errors); if (ModelState.IsValid) { var redirectPath = Url.DisplayMessage(result.TopicId, result.MessageId); return(Redirect(redirectPath)); } } var viewModel = new ViewModels.Topics.CreateTopicForm { Body = input.Body, SelectedBoards = input.SelectedBoards, AllDay = input.AllDay, Start = input.Start, End = input.End }; return(View(viewModel)); }
public IActionResult CreateEvent(int id = -1) { var topicRecord = DbContext.Topics.FirstOrDefault(item => item.Id == id); if (topicRecord is null) { throw new HttpNotFoundError(); } var isOwner = topicRecord.FirstMessagePostedById == UserContext.Id; var isAdmin = UserContext.IsAdmin; if (!isOwner && !isAdmin) { throw new HttpForbiddenError(); } var viewModel = new ViewModels.Topics.EditEventForm { TopicId = id }; return(View("EditEvent", viewModel)); }
public async Task <IActionResult> CreateEvent(ControllerModels.Topics.EditEventInput input) { if (ModelState.IsValid) { if (input.TopicId >= 0) { var topicRecord = DbContext.Topics.FirstOrDefault(item => item.Id == input.TopicId); if (topicRecord is null) { throw new HttpNotFoundError(); } if (input.Start is null) { return(RedirectToAction(nameof(Topics.Display), new { id = topicRecord.Id })); } var isOwner = topicRecord.FirstMessagePostedById == UserContext.Id; var isAdmin = UserContext.IsAdmin; if (!isOwner && !isAdmin) { throw new HttpForbiddenError(); } var result = await TopicRepository.AddEvent(input); ModelState.AddModelErrors(result.Errors); if (ModelState.IsValid) { var redirectPath = Url.DisplayMessage(result.TopicId, result.MessageId); return(Redirect(redirectPath)); } } else { var createTopicViewModel = new ViewModels.Topics.CreateTopicForm { Start = input.Start, End = input.End, AllDay = input.AllDay, SelectedBoards = JsonConvert.DeserializeObject <List <int> >(input.SelectedBoards) }; return(View(nameof(Create), createTopicViewModel)); } } var editEventViewModel = new ViewModels.Topics.EditEventForm { FormAction = nameof(Topics.CreateEvent), FormController = nameof(Topics), Start = input.Start, End = input.End, AllDay = input.AllDay, TopicId = input.TopicId, Body = input.Body, SelectedBoards = JsonConvert.SerializeObject(input.SelectedBoards) }; return(View("EditEvent", editEventViewModel)); }