public async Task <string> AddAsync(AddLikeModel model) { var user = await this.userRepository.All() .FirstOrDefaultAsync(u => u.Id == model.UserId); var post = await this.postRepository.All() .FirstOrDefaultAsync(p => p.Id == model.PostId); var like = new Like { User = user, Post = post, }; var likeExists = this.likeRepository.All() .Where(l => l.PostId == model.PostId) .Any(l => l.UserId == model.UserId); await this.likeRepository.AddAsync(like); var result = await this.likeRepository.SaveChangesAsync() > 0; var postCreatorId = await this.likeRepository.All() .Where(l => l.PostId == model.PostId) .Select(l => l.Post.CreatorId) .FirstOrDefaultAsync(); return(postCreatorId); }
public async Task <bool> RemoveAsync(AddLikeModel model) { var like = this.likeRepository.All() .FirstOrDefault(l => l.PostId == model.PostId && l.UserId == model.UserId); this.likeRepository.Delete(like); var result = await this.likeRepository.SaveChangesAsync() > 0; return(result); }
public async Task <ActionResult <bool> > Create(AddLikeModel input) { var like = new Like { PostId = input.PostId, UserId = this.currentUser.UserId }; await this.likes.Save(like); //TODO Send MEssage for notification return(true); }
public IActionResult UnlikeReview([FromBody] AddLikeModel model) { var currentUserId = int.Parse(User.Identity.Name); var like = _mapper.Map <Like>(model); like.UserId = currentUserId; try { _forumService.UnlikeReview(like); return(Ok()); } catch (AppException ex) { return(BadRequest(new { message = ex.Message })); } }
public async Task <IActionResult> Remove([FromBody] AddLikeModel model) { if (!ModelState.IsValid) { return(BadRequest("Model state is not valid")); } bool likeExists = await this.service.IsPostLikedByUserAsync(model.UserId, model.PostId); if (!likeExists) { return(BadRequest(new BadRequestViewModel { Message = "You haven't liked this post." })); } var result = await this.service.RemoveAsync(model); return(Ok(result)); }
public async Task AddAsync_WithValidData_ShouldReturnPostCreatorId() { // Arrange var context = InMemoryDbContext.Initiliaze(); var likesRepository = new EfRepository <Like>(context); var usersRepository = new EfRepository <ApplicationUser>(context); var postsRepository = new EfRepository <Post>(context); var service = new LikesService(likesRepository, usersRepository, postsRepository); await this.SeedUserAndPost(context); var model = new AddLikeModel { UserId = "userId", PostId = 52 }; // Act string expectedPostCreatorId = context.Posts.FirstOrDefault().CreatorId; string actualPostCreatorId = await service.AddAsync(model); // Assert Assert.Equal(expectedPostCreatorId, actualPostCreatorId); }
public async Task RemoveAsync_WithValidData_ShouldReturnTrue() { // Arrange var context = InMemoryDbContext.Initiliaze(); var likesRepository = new EfRepository <Like>(context); var usersRepository = new EfRepository <ApplicationUser>(context); var postsRepository = new EfRepository <Post>(context); var service = new LikesService(likesRepository, usersRepository, postsRepository); await this.SeedUserAndPost(context); await this.SeedLikes(context); var model = new AddLikeModel { UserId = "userId", PostId = 52 }; // Act bool isLikeDeleted = await service.RemoveAsync(model); // Assert Assert.True(isLikeDeleted); }
public async Task AddAsync_WithValidData_ShouldAddLikeToDatabase() { // Arrange var context = InMemoryDbContext.Initiliaze(); var likesRepository = new EfRepository <Like>(context); var usersRepository = new EfRepository <ApplicationUser>(context); var postsRepository = new EfRepository <Post>(context); var service = new LikesService(likesRepository, usersRepository, postsRepository); await this.SeedUserAndPost(context); var model = new AddLikeModel { UserId = "userId", PostId = 52 }; // Act int expectedCount = context.Likes.Count() + 1; await service.AddAsync(model); int actualCount = context.Likes.Count(); // Assert Assert.Equal(expectedCount, actualCount); }