Example #1
0
            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));
            }
Example #2
0
            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));
            }