public async Task <IActionResult> SignUp([FromBody] SignUp infoSignUp)
        {
            try
            {
                _logger.LogInformation(String.Format("Action: {0} | Status: {1}", "SignUp", "Begin   - " + infoSignUp.Email ?? ""));

                if (!ModelState.IsValid)
                {
                    _logger.LogWarning(String.Format("Action: {0} | Status: {1}", "SignUp", "Failure - Invalid payload"));
                    return(BadRequest(ModelState));
                }

                bool userAlreadyExist = await _userService.AnyByEmailAsync(infoSignUp.Email);

                if (userAlreadyExist)
                {
                    _logger.LogWarning(String.Format("Action: {0} | Status: {1}", "SignUp", "Failure - Email already exists"));
                    return(BadRequest(new ErrorMessage()
                    {
                        Message = ErrorMessage.Duplicated
                    }));
                }

                byte[] passwordAsHash256 = _hashHelper.ComputeSha256FromString(infoSignUp.Password);

                User newUser = new User(infoSignUp.Name, infoSignUp.Email, passwordAsHash256, infoSignUp.Telephones);

                List <Claim> exampleClaims = new List <Claim>()
                {
                    new Claim(_claimIdKey, newUser.Id.ToString()),
                    new Claim(_claimLastLoginOnKey, newUser.LastLoginOn.ToString())
                };

                String jwtToken = JwtTokenHelper.WriteJwtToken(exampleClaims, _jwtSigningKey);

                newUser.Token       = jwtToken;
                newUser.TokenHashed = _hashHelper.ComputeSha256FromString(_bearer + jwtToken);
                await _userService.AddAsync(newUser);

                _logger.LogInformation(String.Format("Action: {0} | Status: {1}", "SignUp", "Success"));

                return(Created(
                           new UriBuilder(HttpContext.Request.Scheme, HttpContext.Request.Host.Host, HttpContext.Request.Host.Port ?? 80, HttpContext.Request.Path.Value).ToString(),
                           newUser));
            }
            catch (Exception ex)
            {
                _logger.LogError(String.Format("Action: {0} | Status: {1}", "SignUp", "Exception"));
                return(StatusCode((int)HttpStatusCode.InternalServerError, new ErrorMessage()
                {
                    Message = ex.Message
                }));
            }
        }