public async Task <ProfileEnvelope> Handle(Command message, CancellationToken cancellationToken) { var target = await _context.Persons.FirstOrDefaultAsync(x => x.Username == message.Username, cancellationToken); if (target == null) { throw new RestException(System.Net.HttpStatusCode.NotFound); } var observer = await _context.Persons.FirstOrDefaultAsync( x => x.Username == _currentUserAccessor.GetCurrentUsername(), cancellationToken); var followedPeople = await _context.FollowedPeople.FirstOrDefaultAsync( x => x.ObserverId == observer.PersonId && x.TargetId == target.PersonId, cancellationToken); if (followedPeople == null) { followedPeople = new Domain.FollowedPeople { Observer = observer, ObserverId = observer.PersonId, Target = target, TargetId = target.PersonId }; await _context.FollowedPeople.AddAsync(followedPeople, cancellationToken); await _context.SaveChangesAsync(cancellationToken); } return(await _profileReader.ReadProfile(message.Username)); }
public async Task <Profile> Handle(Command request, CancellationToken cancellationToken) { var target = await _context.Users.FirstOrDefaultAsync(x => x.UserName == request.UserName, cancellationToken); if (target == null) { throw new RestException(HttpStatusCode.NotFound, new { User = Constants.NOT_FOUND }); } var observer = await _context.Users.FirstOrDefaultAsync(x => x.UserName == _currentUserAccessor.GetCurrentUsername()); var followedPeople = await _context.FollowedPeople .FirstOrDefaultAsync(x => x.ObserverId == observer.Id && x.TargetId == target.Id, cancellationToken); if (followedPeople == null) { followedPeople = new Domain.FollowedPeople() { Observer = observer, ObserverId = observer.Id, Target = target, TargetId = target.Id }; await _context.FollowedPeople.AddAsync(followedPeople, cancellationToken); await _context.SaveChangesAsync(cancellationToken); } return(await _profileReader.ReadProfile(request.UserName)); }