public async Task <ICollection <Achievement> > GetCurrentUserAchievements(string Token, CancellationToken Cancel) { var Claims = HelperService.GetClaimsFromToken(Token, Key); var UserId = HelperService.GetIdFromToken(Claims); if (UserId == null) { throw new ArgumentNullException(); } var User = await UnitOfWork.UserRepository.DbSet .Include(User => User.UserRoles) .ThenInclude(UserRole => UserRole.Role) .Include(User => User.UserAchievements) .ThenInclude(UserAchievement => UserAchievement.Achievement) .FirstOrDefaultAsync(User => User.Id == new Guid(UserId), Cancel); var Achievements = new List <Achievement>(); foreach (var UserAchievement in User?.UserAchievements) { UserAchievement.Achievement.UserAchievements = null; Achievements.Add(UserAchievement.Achievement); } return(Achievements); }
public async Task AddRequest(string Token, string Message, Guid AchievementId, CancellationToken Cancel) { var Claims = HelperService.GetClaimsFromToken(Token, Key); var UserId = new Guid(HelperService.GetIdFromToken(Claims)); if (UserId == null) { throw new ArgumentNullException(); } var Achievement = await UnitOfWork.AchievementRepository.GetById(AchievementId, Cancel); if (Achievement == null) { throw new ArgumentException(); } var User = await UnitOfWork.UserRepository.GetById(UserId, Cancel); var Request = new RequestAchievement { Id = new Guid(), UserId = UserId, User = User, AchievementId = AchievementId, Achievement = Achievement, Message = Message }; await UnitOfWork.RequestAchievementRepository.Create(Request, Cancel); await UnitOfWork.SaveChangesAsync(Cancel); }
public async Task <UserWithAchievementsDTO> GetCurrentUser(string Token, CancellationToken Cancel) { var Claims = HelperService.GetClaimsFromToken(Token, Key); var UserId = HelperService.GetIdFromToken(Claims); if (UserId == null) { throw new ArgumentNullException(); } return(await UserService.GetUserById(new Guid(UserId), Cancel)); }
public async Task <ThankReadDTO> GetThank(string Token, CancellationToken Cancel) { var Claims = HelperService.GetClaimsFromToken(Token, Key); var UserId = HelperService.GetIdFromToken(Claims); if (UserId == null) { new ArgumentNullException(); } return(Mapper.Map <ThankReadDTO>(await UnitOfWork.ThankRepository.DbSet .Include(Thank => Thank.FromUser) .Where(Item => Item.ToUserId == new Guid(UserId)) .OrderByDescending(Item => Item.AddedTime) .FirstOrDefaultAsync(Cancel))); }
public async Task ChangePassword(string Token, string OldPassword, string NewPassword, CancellationToken Cancel) { if (!ModelsValidator.RegExpPassword.IsMatch(NewPassword)) { throw new ArgumentException(); } var Claims = HelperService.GetClaimsFromToken(Token, Key); var UserId = HelperService.GetIdFromToken(Claims); if (UserId == null) { throw new ArgumentNullException(); } var User = await UserService.GetUserById(new Guid(UserId), Cancel); string HashedOldPassword; string HashedNewPassword; using (SHA256 Sha256Hash = SHA256.Create()) { var ByteArray = Sha256Hash.ComputeHash(Encoding.ASCII.GetBytes(OldPassword)); HashedOldPassword = Encoding.UTF8.GetString(ByteArray, 0, ByteArray.Length); if (User.Password != HashedOldPassword) { throw new ArgumentException(); } if (OldPassword == NewPassword) { throw new ArgumentException(); } ByteArray = Sha256Hash.ComputeHash(Encoding.ASCII.GetBytes(NewPassword)); HashedNewPassword = Encoding.UTF8.GetString(ByteArray, 0, ByteArray.Length); var _User = await UnitOfWork.UserRepository.GetById(new Guid(UserId), Cancel); _User.Password = HashedNewPassword; UnitOfWork.UserRepository.Update(_User); await UnitOfWork.SaveChangesAsync(Cancel); } }
public async Task UpdateCurrentUser(string Token, UserUpdateDTO NewUser, CancellationToken Cancel) { if (!ModelsValidator.UserUpdateIsValid(NewUser)) { throw new ArgumentException(); } var Claims = HelperService.GetClaimsFromToken(Token, Key); var UserId = HelperService.GetIdFromToken(Claims); if (UserId == null) { throw new ArgumentNullException(); } await UserService.UpdateUser(new Guid(UserId), NewUser, Cancel); await UnitOfWork.SaveChangesAsync(Cancel); }
public async Task SayThank(string Token, string Text, Guid ToUserId, CancellationToken Cancel) { var Claims = HelperService.GetClaimsFromToken(Token, Key); var UserId = HelperService.GetIdFromToken(Claims); if (UserId == null) { throw new ArgumentNullException(); } var ThankBody = new Thank { FromUser = await UnitOfWork.UserRepository.GetById(new Guid(UserId), Cancel), Text = Text, ToUserId = ToUserId, Id = new Guid(), AddedTime = DateTime.Now.ToUniversalTime() }; await UnitOfWork.ThankRepository.Create(ThankBody, Cancel); await UnitOfWork.SaveChangesAsync(Cancel); }