public async Task <Unit> 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.SingleOrDefaultAsync(x =>
                                                                               x.ObserverId == observer.Id && x.TargetId == target.Id);

                if (following == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { User =
                                                                                 "******" });
                }
                else
                {
                    _context.Followings.Remove(following);
                }

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem savingchanges");
            }
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var user = await _context.Users.SingleOrDefaultAsync(x =>
                                                                     x.UserName == _userAccesor.GetCurrentUsername());

                var photo = user.Photos.FirstOrDefault(ph =>
                                                       ph.Id == request.Id);

                if (photo == null)
                {
                    throw new RestException(HttpStatusCode.NotFound,
                                            new { Photo = "Not found" });
                }

                var currentMain = user.Photos.FirstOrDefault(x => x.IsMain);

                currentMain.IsMain = false;
                photo.IsMain       = true;

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("Problem savingchanges");
            }
            public async Task <Photo> Handle(Command request, CancellationToken cancellationToken)
            {
                var photoUploadResult = _photoAccessor.AddPhoto(request.File);

                var user = await _context.Users.SingleOrDefaultAsync(x =>
                                                                     x.UserName == _userAccessor.GetCurrentUsername());

                var photo = new Photo
                {
                    Url = photoUploadResult.Url,
                    Id  = photoUploadResult.PublicId
                };

                if (!user.Photos.Any(x => x.IsMain))
                {
                    photo.IsMain = true;
                }

                user.Photos.Add(photo);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(photo);
                }
                throw new Exception("Problem saving changes");
            }
Exemple #4
0
            public async Task <User> Handle(Command request, CancellationToken cancellationToken)
            {
                var user = await _userManager
                           .FindByNameAsync(_userAccessor.GetCurrentUsername());

                var oldToken = user.RefreshTokens
                               .SingleOrDefault(x => x.Token == request.RefreshToken);

                if (oldToken != null && !oldToken.IsActive)
                {
                    throw new RestException(HttpStatusCode.Unauthorized);
                }

                if (oldToken != null)
                {
                    oldToken.Revoked = DateTime.UtcNow;
                }

                var newRefreshToken = _jwtGenerator.GenerateRefreshToken();

                user.RefreshTokens.Add(newRefreshToken);

                await _userManager.UpdateAsync(user);

                return(new User(user, _jwtGenerator, newRefreshToken.Token));
            }
Exemple #5
0
        public bool Resolve(UserActivity source, AttendeeDto destination,
                            bool destMember, ResolutionContext context)
        {
            var currentUser = _context.Users.SingleOrDefaultAsync(x =>
                                                                  x.UserName == _userAccessor.GetCurrentUsername()).Result;

            if (currentUser.Followings.Any(x => x.TargetId == source.AppUserId))
            {
                return(true);
            }
            return(false);
        }
            public async Task <User> Handle(Query request,
                                            CancellationToken cancellationToken)
            {
                var user = await _userManager.
                           FindByNameAsync(_userAccessor.GetCurrentUsername());

                var refreshToken = _jwtGenerator.GenerateRefreshToken();

                user.RefreshTokens.Add(refreshToken);
                await _userManager.UpdateAsync(user);

                return(new User(user, _jwtGenerator, refreshToken.Token));
            }
            public async Task <Unit> Handle(Command request,
                                            CancellationToken cancellationToken)
            {
                var activity = new Activity
                {
                    Id          = request.Id,
                    Title       = request.Title,
                    Description = request.Description,
                    Category    = request.Category,
                    Date        = request.Date,
                    City        = request.City,
                    Venue       = request.Venue,
                    // Notes = request.Notes,
                    // Name = request.Name,
                    // CreatedOn = request.Date,
                    // ModifiedOn = request.Date,
                    // DeletedOn = request.Date
                };

                _context.Activities.Add(activity);

                var user = await _context.Users.SingleOrDefaultAsync(u => u.UserName ==
                                                                     _userAccessor.GetCurrentUsername());

                var attendee = new UserActivity
                {
                    AppUser    = user,
                    Activity   = activity,
                    IsHost     = true,
                    DateJoined = DateTime.Now
                };

                _context.UserActivities.Add(attendee);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("Problem savingchanges");
            }
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var activity = await _context.Activities.FindAsync(request.Id);

                if (activity == null)
                {
                    throw new RestException(HttpStatusCode.NotFound,
                                            new { Activity = "Could not find activity" });
                }

                var user = await _context.Users.SingleOrDefaultAsync(u =>
                                                                     u.UserName == _userAccessor.GetCurrentUsername());

                var attendance = await _context.UserActivities.SingleOrDefaultAsync(x =>
                                                                                    x.ActivityId == activity.Id && x.AppUserId == user.Id);

                if (attendance != null)
                {
                    throw new RestException(HttpStatusCode.BadRequest,
                                            new { Attendance = "Already attending this activity" });
                }

                attendance = new UserActivity
                {
                    Activity   = activity,
                    AppUser    = user,
                    IsHost     = false,
                    DateJoined = DateTime.Now
                };

                _context.UserActivities.Add(attendance);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("Problem savingchanges");
            }
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var user = await _context.Users.SingleOrDefaultAsync(u =>
                                                                     u.UserName == _userAccessor.GetCurrentUsername());

                var photo = user.Photos.FirstOrDefault(ph =>
                                                       ph.Id == request.Id);

                if (photo == null)
                {
                    throw new RestException(HttpStatusCode.NotFound,
                                            new { Photo = "Not found" });
                }

                if (photo.IsMain)
                {
                    throw new RestException(HttpStatusCode.BadRequest,
                                            new { Photo = "You cannot delete your main photo" });
                }

                var results = _photoAccessor.DeletePhoto(photo.Id);

                if (results == null)
                {
                    throw new Exception("Problem deleting the photo");
                }

                user.Photos.Remove(photo);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("Problem savingchanges");
            }
Exemple #10
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var activity = await _context.Activities.FindAsync(request.Id);

                if (activity == null)
                {
                    throw new RestException(HttpStatusCode.NotFound,
                                            new { Activity = "Could not find activity" });
                }

                var user = await _context.Users.SingleOrDefaultAsync(u =>
                                                                     u.UserName == _userAccessor.GetCurrentUsername());

                var attendance = await _context.UserActivities.SingleOrDefaultAsync(x =>
                                                                                    x.ActivityId == activity.Id && x.AppUserId == user.Id);

                if (attendance == null)
                {
                    return(Unit.Value);
                }

                if (attendance.IsHost)
                {
                    throw new RestException(HttpStatusCode.BadRequest,
                                            new { Attendance = "You cannot remove yourself as host" });
                }

                _context.UserActivities.Remove(attendance);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("Problem savingchanges");
            }
            public async Task <ActivitiesEnvelope> Handle(Query request,
                                                          CancellationToken cancellationToken)
            {
                var querable = _context.Activities
                               .Where(x => x.Date >= request.StartDate)
                               .OrderBy(x => x.Date)
                               .AsQueryable();

                if (request.IsGoing && !request.IsHost)
                {
                    querable = querable.Where(x =>
                                              x.UserActivities.Any(a =>
                                                                   a.AppUser.UserName == _userAccessor.GetCurrentUsername()));
                }

                if (!request.IsGoing && request.IsHost)
                {
                    querable = querable.Where(x =>
                                              x.UserActivities.Any(a =>
                                                                   a.AppUser.UserName == _userAccessor.GetCurrentUsername() && a.IsHost));
                }

                var activities = await querable
                                 .Skip(request.Offset ?? 0)
                                 .Take(request.Limit ?? 3)
                                 .ToListAsync();

                return(new ActivitiesEnvelope
                {
                    Activities = _mapper.Map <List <Activity>, List <ActivityDto> >(activities),
                    ActivityCount = querable.Count()
                });
            }
Exemple #12
0
        public async Task <Profile> ReadProfile(string username)
        {
            var user = await _context.Users.SingleOrDefaultAsync(x =>
                                                                 x.UserName == username);

            if (user == null)
            {
                throw new RestException(HttpStatusCode.NotFound, new { User = "******" });
            }

            var currentUser = await _context.Users.SingleOrDefaultAsync(x =>
                                                                        x.UserName == _userAccessor.GetCurrentUsername());

            var profile = new Profile
            {
                DisplayName    = user.DisplayName,
                Username       = user.UserName,
                Image          = user.Photos.FirstOrDefault(x => x.IsMain)?.Url,
                Photos         = user.Photos,
                Bio            = user.Bio,
                FollowersCount = user.Followers.Count(),
                FollowingCount = user.Followings.Count()
            };

            if (currentUser.Followings.Any(x =>
                                           x.TargetId == user.Id))
            {
                profile.IsFollowed = true;
            }

            return(profile);
        }