public IActionResult Post(LoginPostRequest request,
                                  [FromServices] ClienteDomainService clienteDomainService,
                                  [FromServices] TokenService tokenService)
        {
            try
            {
                //buscar o cliente atraves do email e da senha
                var cliente = clienteDomainService.ObterCliente(request.Email, request.Senha);

                //verificar se o cliente foi encontrado
                if (cliente != null)
                {
                    //gerar o TOKEN de acesso!
                    var response = new LoginOkResponse
                    {
                        Mensagem      = "Cliente autenticado com sucesso",
                        AccessToken   = tokenService.GenerateToken(cliente.Email),
                        DataExpiracao = DateTime.Now.AddDays(1)
                    };

                    return(Ok(response));
                }
                else
                {
                    //HTTP 401 - Unauthorized
                    return(StatusCode(401, "Acesso não autorizado."));
                }
            }
            catch (Exception)
            {
                return(StatusCode(500, "Erro. Não foi possível realizar a autenticação."));
            }
        }
Example #2
0
        public IActionResult Post(PedidoPostRequest request,
                                  [FromServices] ClienteDomainService clienteDomainService,
                                  [FromServices] PedidoDomainService pedidoDomainService)
        {
            try
            {
                //obter os dados do cliente autenticado..
                //utilizando o email do cliente gravado no TOKEN de autenticação
                //User.Identity.Name -> retorna o email do cliente gravado no TOKEN
                var email   = User.Identity.Name; //retorna o email do cliente autenticado
                var cliente = clienteDomainService.ObterCliente(email);

                //criando uma lista de itens do pedido
                var itensPedido = new List <ItemPedido>();
                foreach (var item in request.ItensPedido)
                {
                    itensPedido.Add(new ItemPedido
                    {
                        IdItemPedido = Guid.NewGuid(),
                        IdProduto    = Guid.Parse(item.IdProduto),
                        Quantidade   = item.Quantidade
                    });
                }

                //criando o objeto pedido..
                var pedido = new Pedido
                {
                    IdPedido   = Guid.NewGuid(),
                    DataPedido = DateTime.Parse(request.DataPedido),
                    ValorTotal = decimal.Parse(request.ValorPedido)
                };

                //gravar o pedido
                pedidoDomainService.CadastrarPedido(pedido, itensPedido, cliente);

                //objeto para retorno da requisição
                var response = new PostOkResponse
                {
                    Mensagem = "Pedido cadastrado com sucesso."
                };

                return(Ok(response));
            }
            catch (Exception)
            {
                //retornar status de erro HTTP 500
                return(StatusCode(500, "Erro ao processar o pedido."));
            }
        }