public IActionResult Post(ClientePostRequest request, [FromServices] ClienteDomainService clienteDomainService) { try { var cliente = new Cliente { IdCliente = Guid.NewGuid(), Nome = request.Nome, Email = request.Email, Cpf = request.Cpf, Senha = request.Senha }; var enderecos = new List <Endereco>(); foreach (var item in request.Enderecos) { enderecos.Add(new Endereco { IdEndereco = Guid.NewGuid(), Logradouro = item.Logradouro, Numero = item.Numero, Complemento = item.Complemento, Bairro = item.Bairro, Cidade = item.Cidade, Estado = item.Estado, Cep = item.Cep }); } clienteDomainService.CadastrarCliente(cliente, enderecos); var response = new PostOkResponse { Mensagem = "Cliente cadastrado com sucesso." }; return(Ok(response)); } catch (EmailDeveSerUnicoException e) { return(StatusCode(403, e.Message)); } catch (Exception) { return(StatusCode(500, "Não foi possível realizar o cadastro do cliente.")); } }
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.")); } }