Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }