public async Task <ActionResult <Game> > PostGame(
            [FromBody] CreateGameRequest request)
        {
            if (await appsService.IsRequestValidOnThisLicense(
                    request.AppId,
                    request.License,
                    request.RequestorId))
            {
                var result = await gamesService.CreateGame(request);

                if (result.Success)
                {
                    result.Message = ControllerMessages.StatusCode201(result.Message);

                    return(StatusCode((int)HttpStatusCode.Created, result));
                }
                else
                {
                    result.Message = ControllerMessages.StatusCode404(result.Message);

                    return(NotFound(result));
                }
            }
            else
            {
                return(BadRequest(ControllerMessages.InvalidLicenseRequestMessage));
            }
        }
        public async Task <ActionResult <App> > PostApp(
            [FromBody] LicenseRequest request)
        {
            var result = await appsService.CreateApp(request);

            if (result.Success)
            {
                result.Message = ControllerMessages.StatusCode201(result.Message);

                return(StatusCode((int)HttpStatusCode.Created, result));
            }
            else
            {
                result.Message = ControllerMessages.StatusCode404(result.Message);

                return(NotFound(result));
            }
        }
        public async Task <ActionResult <User> > SignUp(
            [FromBody] RegisterRequest request)
        {
            string baseUrl;

            if (Request != null)
            {
                baseUrl = Request.Host.ToString();
            }
            else
            {
                baseUrl = "https://SudokuCollective.com";
            }

            string emailtTemplatePath;

            if (!string.IsNullOrEmpty(hostEnvironment.WebRootPath))
            {
                emailtTemplatePath = Path.Combine(hostEnvironment.WebRootPath, "/Content/EmailTemplates/create-email-inlined.html");

                emailtTemplatePath = string.Format("../SudokuCollective.Api{0}", emailtTemplatePath);
            }
            else
            {
                emailtTemplatePath = "../../Content/EmailTemplates/create-email-inlined.html";
            }

            var result = await usersService.CreateUser(
                request,
                baseUrl,
                emailtTemplatePath);

            if (result.Success)
            {
                var tokenRequest = new TokenRequest
                {
                    UserName = request.UserName,
                    Password = request.Password,
                    License  = request.License
                };

                var authenticateResult = await authService.IsAuthenticated(tokenRequest);

                if (authenticateResult.Success)
                {
                    result.Message = ControllerMessages.StatusCode201(result.Message);
                    result.Token   = authenticateResult.Token;

                    return(StatusCode((int)HttpStatusCode.Created, result));
                }
                else
                {
                    result.Message = ControllerMessages.StatusCode404(authenticateResult.Message);
                    result.User    = new User();

                    return(NotFound(result));
                }
            }
            else
            {
                result.Message = ControllerMessages.StatusCode404(result.Message);

                return(NotFound(result));
            }
        }