public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { var observer = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUser()); if (observer == null) { throw new RestException(HttpStatusCode.NotFound, new { user = "******" }); } var target = await _context.Users.SingleOrDefaultAsync(x => x.UserName == request.Username); if (target == null) { throw new RestException(HttpStatusCode.NotFound, new { user = "******" }); } // check if user was already following var following = await _context.Followings.SingleOrDefaultAsync(x => x.ObserverId == observer.Id && x.TargetId == target.Id); if (following != null) { throw new RestException(HttpStatusCode.BadRequest, new { following = "You are already following this user" }); } following = new UserFollowings { Observer = observer, Target = target }; _context.Followings.Add(following); var success = await _context.SaveChangesAsync() > 0; if (success) { return(Unit.Value); } throw new Exception("Problem saving changes"); }
public async Task <FollowDto> Handle(Command request, CancellationToken cancellationToken) { var observer = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUsername()); var target = await _context.Users.SingleOrDefaultAsync(x => x.UserName == request.Username); if (target == null) { throw new RestException(HttpStatusCode.NotFound, new { User = "******" }); } var following = await _context.Followings .FirstOrDefaultAsync(x => x.ObserverId == observer.Id && x.TargetId == target.Id); if (following == null) { following = new UserFollowings { Observer = observer, Target = target }; _context.Followings.Add(following); await _context.SaveChangesAsync(); } return(new FollowDto { DisplayName = observer.DisplayName, Username = observer.UserName, Image = observer.Photos.FirstOrDefault(x => x.IsMain)?.Url, FollowersCount = observer.Followers.Count() }); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { var observer = await _context.Users.FirstOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUsername()); var target = await _context.Users.FirstOrDefaultAsync(x => x.UserName == request.Username); if (target == null) { throw new RestException(HttpStatusCode.NotFound); } var following = await _context.Followings.FirstOrDefaultAsync(x => x.ObserverId == observer.Id && x.TargetId == target.Id); if (following == null) { following = new UserFollowings { Observer = observer, Target = target }; _context.Followings.Add(following); var success = await _context.SaveChangesAsync() > 0; if (success) { return(Unit.Value); } } throw new Exception("Problem adding following"); }
public HomeController() { _context = new ApplicationDbContext(); _userFollowings = new UserFollowings(_context); }