public IHttpActionResult PostAgentes(PostAgenteViewModel model)
        {
            if (!ModelState.IsValid)
            {
                // O BadRequest permite usar o ModelState
                // para informar o cliente dos erros de validação
                // tal como no MVC.
                return(BadRequest(ModelState));
            }

            // Copiar os campos do 'model' para um novo objeto de 'Agentes'.
            // Definir o ID do agente (F12 sobre "GetAgente()")
            // Isto é garantido que funcione, seja para uma operação, seja para múltiplas
            // em simultâneo (ex: muitas pessoas a aceder ao site/API), ao contrário
            // do método db.Agentes.Max(agente => agente.ID) + 1, que NÃO É ATÓMICO,
            // e abre a possibilidade de crashes ou erros de consistência
            // (tema de Sistemas Distribuidos)
            // Ver a migração Migrations/201804251626256_SequenciaIdAgentes.cs
            var agentes = new Agentes
            {
                ID       = db.GetIdAgente(),
                Nome     = model.Nome,
                Esquadra = model.Esquadra
            };

            db.Agentes.Add(agentes);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                // Seria muito provável que o método
                // db.Agentes.Max(agente => agente.ID) + 1
                // fizesse com que este if resultasse no Conflict (HTTP 409).
                if (AgentesExists(agentes.ID))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            // Num create, é boa prática devolver uma representação
            // do resultado da criação do objeto na base de dados.
            return(CreatedAtRoute("DefaultApi", new { id = agentes.ID }, agentes));
        }
        public IHttpActionResult PostAgentes(PostAgenteViewModel model)
        {
            if (!ModelState.IsValid)
            {
                // O BadRequest permite usar o ModelState
                // para informar o cliente dos erros de validação
                // tal como no MVC.
                return(BadRequest(ModelState));
            }

            var agentes = new Agentes
            {
                ID       = db.GetIdAgente(),
                Nome     = model.Nome,
                Esquadra = model.Esquadra
            };

            db.Agentes.Add(agentes);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                // Seria muito provável que o método
                // db.Agentes.Max(agente => agente.ID) + 1
                // fizesse com que este if resultasse no Conflict (HTTP 409).
                if (AgentesExists(agentes.ID))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            // Num create, é boa prática devolver uma representação
            // do resultado da criação do objeto na base de dados.
            return(CreatedAtRoute("DefaultApi", new { id = agentes.ID }, agentes));
        }