Пример #1
0
        public void Manipular(RegistrarPedido comando)
        {
            // Registra o cliente (Ou obtem do banco)
            var cliente = _repositorioCliente.Obter(comando.Cliente);

            // Gera um novo pedido
            var pedido = new Pedido(comando.TipoPagamento, cliente);

            // Adiciona um item ao pedido
            foreach (var item in comando.Itens)
            {
                var produto = _repositorioProduto.Obter(item.Produto);
                pedido.AdicionarItem(produto, item.Quantidade);
            }

            // Aplica o desconto
            pedido.AplicarDesconto(comando.Desconto);

            // Adiciona as notificações
            AddNotifications(pedido.Notifications);

            // Salva no banco
            if (IsValid())
            {
                _repositorioPedido.Salvar(pedido);
            }
        }