/// <summary>
        /// Cria um novo jogador com o Nickname e a senha passadas no corpo da chamada
        /// </summary>
        /// <param name="player">Dados para criação do novo jogador, incluindo identificação do caller</param>
        /// <returns>HttpResponseMessage indicando se houve algum problema ou se o jogador foi criado</returns>
        // POST: api/NewPlayer
        public HttpResponseMessage Post([FromBody] NewPlayer player)
        {
            string DBResponse;

            if (player == null)
            {
                DBResponse = "Formato de dados inválido, faça um Get para receber um exemplo.";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            if ((player.CallerID == null) || (player.CallerPW == null) || (player.Nickname == null) || (player.Password == null))
            {
                DBResponse = "Estão faltando dados, faça um Get para receber um exemplo e envie todas as informações.";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            if ((player.Nickname.Length == 0) || (player.Password.Length == 0))
            {
                DBResponse = "Dados inválidos, Nick e senha não podem estar vazios";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            if ((player.Nickname.Length > 20) || (player.Password.Length > 20))
            {
                DBResponse = "Sinto muito, para testes, o Nick e a senha estão limitados a 20 caracteres";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            //Só pra evitar que qualquer um crie novas usuários, fiz um ID/Senha
            //Inicialmente as variáveis de ambiente estão setadas para JMF e JMF
            string CallerPW = Environment.GetEnvironmentVariable("CPW");
            string CallerID = Environment.GetEnvironmentVariable("CID");

            if ((!player.CallerID.Equals(CallerID)) || (!player.CallerPW.Equals(CallerPW)))
            {   //Podia pegar do ambiente também... na próxima vou fazer isso, usar variáveis do ambiente
                DBResponse = $"Credenciais inválidas, você não pode criar novos usuários";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            DBResponse = Database.UpdateDB.CreateNewPlayer(player.Nickname, player.Password);
            if (DBResponse.Equals("OK"))
            {
                player.CallerID = "";
                player.CallerPW = "";
                player.Password = "";
                HttpResponseMessage response = Request.CreateResponse <NewPlayer>(HttpStatusCode.Created, player);
                string uri = Url.Link("DefaultApi", new { id = player.Nickname });
                response.Headers.Location = new Uri(uri);
                return(response);
            }
            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
        }
        /// <summary>
        /// Atualiza dados do Jogador
        /// </summary>
        /// <param name="id">Código para atualização</param>
        /// <param name="player">Dados de atualização</param>
        /// <returns> Mensagem com OK ou descrição do erro </returns>
        // PUT: api/UpdScores/5
        public HttpResponseMessage Put(int id, [FromBody] PlayerStatus player)
        {
            string DBResponse;

            if (id != 42) //Just an easy check, if you don't know why 42, I do not want to work with you :-)
            {
                DBResponse = "PUT inválido.";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            if (player == null)
            {
                DBResponse = "Formato de dados inválido, faça um Get para receber um exemplo.";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            if ((player.CallerID == null) || (player.CallerPW == null) || (player.Nickname == null) || (player.Password == null) || (player.NewStats == null))
            {
                DBResponse = "Estão faltando dados, faça um Get para receber um exemplo e envie todas as informações.";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            if (player.NewStats.Count == 0)
            {
                DBResponse = "Você deve enviar pelo menos um valor no NewStat";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            if ((player.Nickname.Length == 0) || (player.Password.Length == 0))
            {
                DBResponse = "Dados inválidos, Nick e senha não podem estar vazios";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            int NScores = Math.Min(6, player.NewStats.Count);

            int[] NewScores = new int[NScores];
            int   total     = player.NewStats[0];
            int   parcial   = 0;

            for (int i = 0; i < NewScores.Length; i++)
            {
                if (player.NewStats[i] < 0)
                {
                    DBResponse = "Não são permitidos dados negativos.";
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
                }
                NewScores[i] = player.NewStats[i];
                if (i % 3 != 0)
                {
                    parcial += player.NewStats[i];
                }
                if (i == 3)
                {
                    if (parcial > total)
                    {
                        DBResponse = "Dados parciais maiores que o total.";
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
                    }
                    if (player.NewStats.Count > 3)
                    {
                        total   = player.NewStats[3];
                        parcial = 0;
                    }
                }
                if ((i > 2) && (player.NewStats[i] > player.NewStats[i - 3]))
                {
                    DBResponse = "Dados semanais maiores que os totais.";
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
                }
            }
            if (parcial > total)
            {
                DBResponse = "Dados parciais maiores que o total.";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            //Só pra evitar que qualquer um atualize os dados, fiz um ID/Senha
            //Inicialmente as variáveis de ambiente estão setadas para JMF e JMF
            //Podia ter usado credenciais deferentes para create e update...
            string CallerPW = Environment.GetEnvironmentVariable("CPW");
            string CallerID = Environment.GetEnvironmentVariable("CID");

            if ((!player.CallerID.Equals(CallerID)) || (!player.CallerPW.Equals(CallerPW)))
            {
                DBResponse = "Credenciais inválidas, você não pode atualizar o status";
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
            }
            DBResponse = Database.UpdateDB.UpdatePlayerStats(player.Nickname, player.Password, NewScores);
            if (DBResponse.Equals("OK"))
            {
                player.CallerID = "";
                player.CallerPW = "";
                player.Password = "";
                player.NewStats.Clear();
                for (int i = 0; i < NewScores.Length; i++)
                {
                    player.NewStats.Add(NewScores[i]);
                }
                HttpResponseMessage response = Request.CreateResponse <PlayerStatus>(HttpStatusCode.Created, player);
                string uri = Url.Link("DefaultApi", new { id = player.Nickname });
                response.Headers.Location = new Uri(uri);
                return(response);
            }
            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, DBResponse));
        }