public async Task <int> Create(ChallengeCreate challengeCreate, User connectedUser)
        {
            Challenge newChallenge = new Challenge
            {
                Statement = challengeCreate.Statement,
                Name      = challengeCreate.Name,
                Status    = connectedUser.Role == Role.Admin ? Status.Accepted : Status.Waiting,
                CreatedAt = DateTime.Now,
                AuthorId  = connectedUser.Id
            };

            await this.challengeRepository.Insert(newChallenge);

            Challenge challenge = await this.challengeRepository.GetByName(newChallenge.Name);

            return(challenge.Id);
        }
        public async Task <IActionResult> Create(ChallengeCreate newChallenge)
        {
            ChallengeCreateValidator validator = new ChallengeCreateValidator(this._challengeService);
            ValidationResult         results   = await validator.ValidateAsync(newChallenge);

            results.AddToModelState(ModelState, "ChallengeCreate");

            if (!ModelState.IsValid)
            {
                return(BadRequest(this.ModelState));
            }

            int  connectedUserId = int.Parse(User.Identity.Name);
            User connectedUser   = await this._userService.Get(int.Parse(User.Identity.Name));

            int ChallengeId = await this._challengeService.Create(newChallenge, connectedUser);

            return(Ok(ChallengeId));
        }