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 static ReadRequestAchievementModel GetReadRequestAchievementModel(RequestAchievement model, Achievement achievement, User user)
 {
     return(new ReadRequestAchievementModel
     {
         Id = model.Id,
         Message = model.Message,
         AchievementName = achievement.Name,
         UserName = user.UserName,
         AchievementId = achievement.Id,
         UserId = user.Id
     });
 }
        public async Task DeleteAsync_ValidRequestAchievement(RequestAchievement achievement)
        {
            //Arrange
            var cancellationToken = new CancellationToken();

            _requestAchievementRepository.Setup(x => x.Delete(It.IsAny <RequestAchievement>()));
            _unitOfWork.Setup(x => x.SaveChangesAsync(cancellationToken)).Returns(Task.CompletedTask);

            // Act
            await _requestAchievementService.DeleteAsync(achievement, cancellationToken);

            // Assert
            _requestAchievementRepository.Verify(x => x.Delete(It.IsAny <RequestAchievement>()), Times.Once);
            _unitOfWork.Verify(x => x.SaveChangesAsync(cancellationToken), Times.Once);
        }
        public async Task DeleteAsync(RequestAchievement achievementRequest, CancellationToken cancellationToken)
        {
            _requestAchievementRepository.Delete(achievementRequest);

            await _unitOfWork.SaveChangesAsync(cancellationToken);
        }