public async Task <ActionResult> Details([Bind("Title,Content,ModuleId")] ModulePostViewModel viewModel) { Module module = await _context.Module .FirstOrDefaultAsync(m => m.Id == viewModel.ModuleId); if (module == null) { return(NotFound()); } if (ModelState.IsValid) { Post post = GetPostToAddToModule(viewModel, module); _context.Post.Add(post); _context.SaveChanges(); viewModel = await GetModulePostViewModelFromModule(module); return(View(viewModel)); } ModulePostViewModel notValidReturn = await GetModulePostViewModelFromModule(module); return(View(notValidReturn)); //return View(viewModel); }
// Returns the View Model which is a list of posts for given module private async Task <ModulePostViewModel> GetModulePostViewModelFromModule(Module module) { ModulePostViewModel viewModel = new ModulePostViewModel(); viewModel.Module = module; List <Post> posts = await _context.Post .Where(m => m.Module.Id == module.Id).ToListAsync(); viewModel.Posts = posts; return(viewModel); }
// Sets the Values to the post from the viewmodel private Post GetPostToAddToModule(ModulePostViewModel viewModel, Module module) { Post post = new Post(); post.CreatedDateTime = DateTime.Now; post.Title = viewModel.Title; post.Content = viewModel.Content; post.Module = module; post.ModuleId = module.Id; string LoggedInUser = User.Identity.Name; IdentityUser currentUser = _context.Users.FirstOrDefault (x => x.Email == LoggedInUser); post.User = currentUser.UserName; return(post); }
// GET: Modules/Details/5 // Details of a Module public async Task <IActionResult> Details(int?id) { if (id == null) { return(NotFound()); } var @module = await _context.Module .FirstOrDefaultAsync(m => m.Id == id); if (@module == null) { return(NotFound()); } ModulePostViewModel viewModel = await GetModulePostViewModelFromModule(@module); return(View(viewModel)); }