public async Task <IActionResult> PostInGroup(GroupPostViewModel vm) { if (ModelState.IsValid) { var user = await UserHelper.GetUserByEmailAsync(User.Identity.Name); if (user == null) { return(NotFound()); } var group = await _groupRepository.GetByIdAsync(vm.GroupId); if (group == null) { return(NotFound()); } var post = new GroupPost { Name = vm.Name, Body = vm.Body, Group = group }; post.Owner = user; post.CreationDate = DateTime.UtcNow; await _groupRepository.AddPostAsync(post); return(RedirectToAction(nameof(Details), new { id = group.Id })); } return(View(vm)); }
public async Task <IActionResult> EditPost(long?id, long groupId) { if (id == null) { return(NotFound()); } var post = await _groupRepository.GetPostByIdAsync(id.Value); if (post == null) { return(NotFound()); } if (post.Owner.Email != User.Identity.Name) { return(Unauthorized()); } var vm = new GroupPostViewModel { GroupId = groupId, Id = post.Id, Body = post.Body, Name = post.Name, CreationDate = post.CreationDate, Owner = post.Owner, OwnerId = post.Owner.Id }; return(View(vm)); }
public async Task <IActionResult> PostInGroup(long id) { var group = await _groupRepository.GetByIdAsync(id); if (group == null) { return(NotFound()); } var postComment = new GroupPostViewModel { Group = group, GroupId = group.Id }; return(View(postComment)); }
public async Task <IActionResult> EditPost(long id, GroupPostViewModel vm) { if (id != vm.Id) { return(NotFound()); } if (ModelState.IsValid) { var user = await CurrentUser(); if (user == null || user.Id != vm.OwnerId) { return(NotFound()); } var post = await _groupRepository.GetPostByIdAsync(vm.Id); if (post == null) { return(NotFound()); } post.Name = vm.Name; post.Body = vm.Body; post.UpdatedDate = DateTime.UtcNow; try { await _groupRepository.UpdatePostAsync(post); } catch (DbUpdateConcurrencyException) { if (!await PostCommentExists(post.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(SwitchToTabs), new { tabname = "GroupPosts", id = vm.GroupId })); } return(View(vm)); }
public static Expression <Func <Group, GroupViewModel> > Create(ApplicationUser currentUser) { return(group => new GroupViewModel { Id = group.Id, Name = group.Name, CoverImageData = group.CoverImageData, CreatedOn = group.CreatedOn, Description = group.Description, Admins = group.Admins .AsQueryable() .Select(UserViewModelMinified.Create(currentUser)), Members = group.Members .AsQueryable() .Select(UserViewModelMinified.Create(currentUser)), Posts = group.Posts .AsQueryable() .Select(GroupPostViewModel.Create(currentUser)) }); }
public static GroupViewModel ConvertTo(Group group, ApplicationUser currentUser) { GroupViewModel viewModel = new GroupViewModel { Id = group.Id, Name = group.Name, CoverImageData = group.CoverImageData, CreatedOn = group.CreatedOn, Description = group.Description, Admins = group.Admins .AsQueryable() .Select(UserViewModelMinified.Create(currentUser)), Members = group.Members .AsQueryable() .Select(UserViewModelMinified.Create(currentUser)), Posts = group.Posts .AsQueryable() .Select(GroupPostViewModel.Create(currentUser)) }; return(viewModel); }