public async Task <Resultado> Atualizar(Pedido pedido) { var resultado = new Resultado(); if (pedido.Produtos.Count == 0) { AddNotification("", "Pedido precisa ter pelo menos um produto"); resultado.AddErrors(Notifications); return(resultado); } ; decimal valorPedidoSemDesconto = await CalcularValorDoPedidoSemDesconto(pedido); if (!IsValid) { resultado.AddErrors(Notifications); return(resultado); } decimal valorTotalDoPedido = CalcularValorDoPedido(valorPedidoSemDesconto, pedido.Desconto); if (!IsValid) { resultado.AddErrors(Notifications); return(resultado); } pedido.Valor = valorPedidoSemDesconto; pedido.ValorTotal = valorTotalDoPedido; pedido.Validar(); if (!pedido.IsValid) { AddNotifications(pedido.Notifications); } if (IsValid) { var pedidoPersistido = await _pedidoRepositorio.ObterItensPedidos(pedido.Id); foreach (var produtoPedido in pedidoPersistido) { _pedidoRepositorio.ExcluirItem(produtoPedido); } _pedidoRepositorio.Atualizar(pedido); await _unitOfWork.Commit(); } else { resultado.AddErrors(Notifications); } return(resultado); }
public async Task <Resultado> Adicionar(Pedido pedido) { var resultado = new Resultado(); if (pedido.Produtos.Count == 0) { AddNotification("", "Pedido precisa ter pelo menos um produto"); resultado.AddErrors(Notifications); return(resultado); } ; decimal valorPedidoSemDesconto = await CalcularValorDoPedidoSemDesconto(pedido); if (!IsValid) { resultado.AddErrors(Notifications); return(resultado); } decimal valorTotalDoPedido = CalcularValorDoPedido(valorPedidoSemDesconto, pedido.Desconto); if (!IsValid) { resultado.AddErrors(Notifications); return(resultado); } pedido.Valor = valorPedidoSemDesconto; pedido.ValorTotal = valorTotalDoPedido; pedido.Validar(); if (!pedido.IsValid) { AddNotifications(pedido.Notifications); } pedido.Numero = await ObterNumeroPedido(); if (IsValid) { _pedidoRepositorio.Incluir(pedido); await _unitOfWork.Commit(); } else { resultado.AddErrors(Notifications); } return(resultado); }
public async Task <Resultado> Adicionar(Cliente cliente) { var resultado = new Resultado(); cliente.Validar(); if (!cliente.IsValid) { AddNotifications(cliente.Notifications); } if (!await EmailDisponivel(cliente.Email)) { AddNotification("Email", "E-mail informado indisponível"); } if (IsValid) { _clienteRepositorio.Incluir(cliente); await _unitOfWork.Commit(); } else { resultado.AddErrors(Notifications); } return(resultado); }
public async Task <Resultado> Atualizar(Cliente cliente) { var resultado = new Resultado(); cliente.Validar(); if (!cliente.IsValid) { AddNotifications(cliente.Notifications); } var clientePersistido = await _clienteRepositorio .ObterClientePorId(cliente.Id); if (clientePersistido != null) { if (clientePersistido.Email != cliente.Email) { if (!await EmailDisponivel(cliente.Email)) { AddNotification("Email", "E-mail informado indisponível"); } } } else { AddNotification("Id", "Cliente não encontrado"); } if (IsValid) { _clienteRepositorio.Atualizar(cliente); await _unitOfWork.Commit(); } else { resultado.AddErrors(Notifications); } return(resultado); }
public async Task <Resultado> Atualizar(Produto produto) { var resultado = new Resultado(); produto.Validar(); if (!produto.IsValid) { AddNotifications(produto.Notifications); } if (IsValid) { _produtoRepositorio.Atualizar(produto); await _unitOfWork.Commit(); } else { resultado.AddErrors(Notifications); } return(resultado); }
public async Task <Resultado> Excluir(int id) { var resultado = new Resultado(); var cliente = await _clienteRepositorio.ObterClientePorId(id); if (cliente == null) { AddNotification("Id", "Cliente não encontrado"); } if (IsValid) { _clienteRepositorio.Excluir(cliente); await _unitOfWork.Commit(); } else { resultado.AddErrors(Notifications); } return(resultado); }
public async Task <Resultado> Excluir(int id) { var resultado = new Resultado(); var pedido = await _pedidoRepositorio.ObterPedidoPorId(id); if (pedido == null) { AddNotification("Id", "Pedido não encontrado"); } if (IsValid) { _pedidoRepositorio.Excluir(pedido); await _unitOfWork.Commit(); } else { resultado.AddErrors(Notifications); } return(resultado); }