public ActionResult <Retorno> Cadastrar([FromBody] ClienteDto clienteDto)
        {
            Retorno retornoCliente;

            try
            {
                Cliente cliente = _mapper.Map <Cliente>(clienteDto);

                retornoCliente = _clienteServico.ClienteValido(cliente);

                if (!retornoCliente._sucesso)
                {
                    return(BadRequest(retornoCliente));
                }

                bool cadastrouCliente = _clienteServico.CadastrarCliente(cliente);

                if (cadastrouCliente)
                {
                    retornoCliente = new Retorno(true);
                    retornoCliente.AdicionarMensagemSucesso("Cliente cadastrado com sucesso");
                    return(Ok(retornoCliente));
                }

                retornoCliente = new Retorno(false);
                retornoCliente.AdicionarMensagemFalha("Falha ao cadastrar o cliente");
                return(Ok(retornoCliente));
            }
            catch (Exception) // Gravar o Exception em log
            {
                retornoCliente = new Retorno(false);
                retornoCliente.AdicionarMensagemFalha("Falha ao gravar cliente");
                return(BadRequest(retornoCliente));
            }
        }
        public ActionResult <Pedido> Cadastrar([FromBody] PedidoDto pedidoDto)
        {
            Retorno retornoPedido;

            Pedido pedido = _mapper.Map <Pedido>(pedidoDto);

            retornoPedido = _pedidoServico.PedidoValido(pedido);

            if (!retornoPedido._sucesso)
            {
                return(BadRequest(retornoPedido));
            }

            bool produtoCadastrado = _pedidoServico.CadastraPedido(pedido);

            if (produtoCadastrado)
            {
                retornoPedido = new Retorno(true);
                retornoPedido.AdicionarMensagemSucesso("Pedido cadastrado com sucesso");
                return(Ok(retornoPedido));
            }

            retornoPedido = new Retorno(false);
            retornoPedido.AdicionarMensagemFalha("Falha ao cadastrar o pedido do cliente");

            return(BadRequest(retornoPedido));
        }
        public ActionResult <Retorno> Alterar(ClienteDto clienteDto)
        {
            Retorno retornoCliente;

            try
            {
                Cliente cliente = _mapper.Map <Cliente>(clienteDto);
                retornoCliente = _clienteServico.ClienteValido(cliente);

                if (!retornoCliente._sucesso)
                {
                    return(BadRequest(retornoCliente));
                }

                if (!_clienteServico.ExisteClientePorId(clienteDto.Id))
                {
                    retornoCliente = new Retorno(false);
                    retornoCliente.AdicionarMensagemFalha("Nao foi possivel localizar o cliente para alteração");
                    return(NotFound(retornoCliente));
                }

                retornoCliente = _clienteServico.AlterarCliente(cliente);

                if (!retornoCliente._sucesso)
                {
                    return(BadRequest(retornoCliente));
                }

                retornoCliente = new Retorno(true);
                retornoCliente.AdicionarMensagemSucesso("Cliente alterado com sucesso");
                return(Ok(retornoCliente));
            }
            catch (Exception)
            {
                retornoCliente = new Retorno(false);
                retornoCliente.AdicionarMensagemFalha("Falha ao remover cliente");
                return(BadRequest(retornoCliente));
            }
        }
        public ActionResult <Retorno> Remover(int idCliente)
        {
            Retorno retornoCliente;

            try
            {
                retornoCliente = _clienteServico.RemoverCliente(idCliente);

                if (!retornoCliente._sucesso)
                {
                    return(BadRequest(retornoCliente));
                }

                retornoCliente = new Retorno(true);
                retornoCliente.AdicionarMensagemSucesso("Cliente removido com sucesso");
                return(Ok(retornoCliente));
            }
            catch (Exception)
            {
                retornoCliente = new Retorno(false);
                retornoCliente.AdicionarMensagemFalha("Falha ao remover cliente");
                return(BadRequest(retornoCliente));
            }
        }
        public ActionResult <Retorno> Remover(int idPedido)
        {
            Retorno retornoPedido;

            try
            {
                retornoPedido = _pedidoServico.RemoverPedido(idPedido);

                if (!retornoPedido._sucesso)
                {
                    return(BadRequest(retornoPedido));
                }

                retornoPedido = new Retorno(true);
                retornoPedido.AdicionarMensagemSucesso("Pedido removido com sucesso");
                return(Ok(retornoPedido));
            }
            catch (Exception)
            {
                retornoPedido = new Retorno(false);
                retornoPedido.AdicionarMensagemFalha("Falha ao remover o pedido do cliente");
                return(BadRequest(retornoPedido));
            }
        }