Esempio n. 1
0
        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));
        }
Esempio n. 3
0
        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);
        }