static void Main(string[] args) { const string razaoSocial = "razaoSocial"; const string cnpj = "cnpj"; const string observacoes = "Observacoes"; //var dataDeEmissao = DateTime.Now; //const int valorBruto = 0; //const int impostos = 0; //var itens = new List<ItemDaNota> {new ItemDaNota("nome", 10)}; var criador = new NotaFiscalBuilder() .ParaEmpresa(razaoSocial) .ComCnpj(cnpj) .NaDataAtual() .ComObservacoes(observacoes) .ComItem(new ItemDaNota("nome 01", 10)) .ComItem(new ItemDaNota("nome 02", 15)) .AdicionaAcao(new EnviadorDeEmail()) .AdicionaAcao(new EnviadorDeSms()) .AdicionaAcao(new NotaFicalEntity()); var nf = criador.Constroi(); }
private static ICollection <NotaFiscal> GetNotas(ISituacaoDaNotaRepository situacaoDaNotaRerpository) { var notaFiscal1 = new NotaFiscalBuilder() .WithCnpjDaLoja("12605982000124") .WithModelo(55) .WithNumero(10) .WithSerie(1) .WithSituacao(situacaoDaNotaRerpository.GetByType <NaoAutorizada>()) .WithValorTotal(100.00m) .Build(); var notaFiscal2 = new NotaFiscalBuilder() .WithCnpjDaLoja("12605982000124") .WithModelo(65) .WithNumero(900) .WithSerie(3) .WithSituacao(situacaoDaNotaRerpository.GetByType <NaoAutorizada>()) .WithValorTotal(150.00m) .Build(); var notaFiscal3 = new NotaFiscalBuilder() .WithCnpjDaLoja("12605982000124") .WithModelo(55) .WithNumero(11) .WithSerie(1) .WithSituacao(situacaoDaNotaRerpository.GetByType <NaoAutorizada>()) .WithValorTotal(10.00m) .Build(); return(new List <NotaFiscal> { notaFiscal1, notaFiscal2, notaFiscal3 }); }
private static void BuilderTest() { var notafiscal = new NotaFiscalBuilder() .FromCnpj("12341234") .FromRazaoSocial("Test") .FromObservacao("Test") .Add(new ItemNota("test 1", 10)).Add(new ItemNota("test 2", 10)) .Build(); Console.WriteLine($"nota fiscal cnpj... {notafiscal.Cnpj}"); }
/// <summary> /// O padrão Builder: Utiliza-se este pattner quando é necessário montar objetos muito grandes e complexos /// no caso de uma nota fiscal, que possui diversos itens, vindos de diversos lugares, podemos facilitar a montagem /// desta nota criando uma classe responsavel por montar a nota ( builder ) , assim, o utilizador da nota economiza um enorme /// tempo na montagem e nao precisa conhecer internamente como funciona a criação do objeto. /// </summary> /// <param name="args"></param> static void Main(string[] args) { NotaFiscal.NotaFiscal nf = new NotaFiscalBuilder().builderRazaoSocial("Microsoft") .builderCNPJ("000.000.000./0001-03") .builderItemNota(new ItemNotaFiscal(350)) .builderItemNota(new ItemNotaFiscal(450)) .builderItemNota(new ItemNotaFiscal(120)) .builderItemNota(new ItemNotaFiscal(890)) .Constroi().Print(); Console.Read(); }
static void Main(string[] args) { #region Exemplo Pattern Builder List <IAcaoAposGererNota> listaAcoes = new List <IAcaoAposGererNota>(); listaAcoes.Add(new EnviadorDeEmail()); listaAcoes.Add(new NotaFiscalDao()); listaAcoes.Add(new EnviadorDeSms()); NotaFiscalBuilder criador = new NotaFiscalBuilder(listaAcoes); //Mudado os métodos para formar um "Fluent Interface"/"Method Chaining". criador .ParaEmpresa("Caelum Ensino e Inovacao") .ComCnpj("23.456.789/0001-12") .ComItem(new ItemDaNota("Item 1", 100)) .ComItem(new ItemDaNota("Item 2", 200)) .NaDataAtual() .ComObservacoes("Obs!"); //criador.AdicionarAcao(new EnviadorDeEmail()); //criador.AdicionarAcao(new NotaFiscalDao()); //criador.AdicionarAcao(new EnviadorDeSms()); criador.AdicionarAcao(new Impressora()); criador.AdicionarAcao(new Multiplicador(2.5)); NotaFiscal notaFiscal = criador.Constroi(); Console.WriteLine(notaFiscal.ValorBruto); Console.WriteLine(notaFiscal.Impostos); Console.ReadKey(); Console.Clear(); #endregion #region Exemplo Tutorials Point Subject subject = new Subject(); new HexaObserver(subject); new OctalObserver(subject); new BinaryObserver(subject); Console.WriteLine("First state change: 15"); subject.setState(15); Console.WriteLine(); Console.WriteLine("Second state change: 10"); subject.setState(10); #endregion Console.ReadKey(); }
public void DadosNotafiscal() { NotaFiscalBuilder criador = new NotaFiscalBuilder(); Notafiscal nf; nf = criador.ComRazaoSocial("TiaoEmbalagens") .ComCnpj("0315080/0001-001") .ComDataEmissao(new DateTime(2016, 2, 2)) .ComObservacoes("Observação qualquer") .IncluirItem(new ItemNotaFiscalBulder().ComDescricao("Item qualquer").ComValor(200).Criar()) .IncluirItem(new ItemNotaFiscalBulder().ComDescricao("Outro item qualquer").ComValor(100d).Criar()) .Criar(); Console.WriteLine(nf.ValorBruto + "\n " + nf.Impostos); Console.ReadKey(); }
/// <summary> /// Padrao Observer - Utiliza-se em cenarios onde precisa-se executar N ações após determinado evento /// de maneira desacoplada do codigo principal. Nesse caso, após a geração da nota fiscal, deve-se gerar /// varios eventos pertinentes ao negocio, neste caso, o observer se aplica. /// </summary> /// <param name="args"></param> static void Main(string[] args) { NotaFiscalBuilder builder = new NotaFiscalBuilder(); builder.AdicionarAcao(new Acoes.EnvioEmail()); builder.AdicionarAcao(new Acoes.Impressoes()); builder.AdicionarAcao(new Acoes.Persistencia()); NotaFiscal.NotaFiscal nf = builder.builderRazaoSocial("Microsoft") .builderCNPJ("000.000.000./0001-03") .builderItemNota(new ItemNotaFiscal(350)) .builderItemNota(new ItemNotaFiscal(450)) .builderItemNota(new ItemNotaFiscal(120)) .builderItemNota(new ItemNotaFiscal(890)) .Constroi().Print(); Console.Read(); }
public static void Main(string[] args) { NotaFiscalBuilder builder = new NotaFiscalBuilder(); builder.AdicionaAcao(new Multiplicador(5)); builder.AdicionaAcao(new Multiplicador(7)); builder.AdicionaAcao(new Multiplicador(1.5)); NotaFiscal notaFiscal = builder.ParaEmpresa("Stark") .ComCnpj("54698798756498") .ComItem(new ItemDaNota("item 1", 1000.0)) .ComItem(new ItemDaNota("item 2", 2020.0)) .ComItem(new ItemDaNota("item 3", 3440.0)) .ComObservacoes("entregar notaFiscal pessoalmente") .NaDataAtual() .Constroi(); Console.ReadKey(); }
public void DadosNotafiscalRealizaAcoesNoConstrutor() { NotaFiscalBuilder criador = new NotaFiscalBuilder(new List <IAcoesComNF>() { new EnviadorDeEmail() , new NotaFiscalDao() , new EnviadorDeSms() , new Impressora() , new Multiplicador(2.5d) } ); Notafiscal nf; nf = criador.ComRazaoSocial("TiaoEmbalagens") .ComCnpj("0315080/0001-001") .ComDataEmissao(new DateTime(2016, 2, 2)) .ComObservacoes("Observação qualquer") .IncluirItem(new ItemNotaFiscalBulder().ComDescricao("Item qualquer").ComValor(200).Criar()) .IncluirItem(new ItemNotaFiscalBulder().ComDescricao("Outro item qualquer").ComValor(100d).Criar()) .Criar(); Console.WriteLine(nf.ValorBruto + "\n " + nf.Impostos); Console.ReadKey(); }
static void Main(string[] args) { //ex 1 - strategy //Imposto iss = new ISS(); //Imposto icms = new ICMS(); //Imposto iccc = new ICCC(); //Investimento conversador = new Conservador(); //Investimento moderado = new Moderado(); //Investimento arrojado = new Arrojado(); //Orcamento orcamento = new Orcamento(500.0); //// Calculando o ISS //CalculadorImposto.RealizaCalculo(orcamento, iss); //// Calculando o ICMS //CalculadorImposto.RealizaCalculo(orcamento, icms); //// Calculando o ISSS //CalculadorImposto.RealizaCalculo(orcamento, iccc); //// Calculando o ISS //CalculadorInvestimento.RealizaCalculo(orcamento, conversador); //// Calculando o ICMS //CalculadorInvestimento.RealizaCalculo(orcamento, moderado); //// Calculando o ISSS //CalculadorInvestimento.RealizaCalculo(orcamento, arrojado); //ex 2 - Chain of Responsability //CalculadorDeDescontos calculador = new CalculadorDeDescontos(); //Orcamento orcamento = new Orcamento(500); //orcamento.AdicionaItem(new Item("CANETA", 250)); //orcamento.AdicionaItem(new Item("LAPIS", 250)); //double desconto = calculador.Calcula(orcamento); //Console.WriteLine(desconto); // ex 5 STATE //Orcamento reforma = new Orcamento(500); //Console.WriteLine(reforma.Valor); //reforma.AplicaDescontoExtra(); //Console.WriteLine(reforma.Valor); //reforma.Aprova(); //reforma.AplicaDescontoExtra(); //Console.WriteLine(reforma.Valor); //reforma.Finaliza(); // ex 6 - Builder & Fluent Interface NotaFiscalBuilder builder = new NotaFiscalBuilder(); builder .ParaEmpresa("Caelum Ensino") .ComCnpj("223.456/789/0001-12") .ComItem(new ItemDaNota("item 1", 100.0)) .ComItem(new ItemDaNota("item 2", 200.0)) .NaDataAtual() .ComObservacoes("uma obs qualquer"); // ex 7 - Observer builder.AdicionaAcao(new EnviadorDeEmail()); builder.AdicionaAcao(new NotaFiscalDao()); builder.AdicionaAcao(new EnviadorDeSms()); NotaFiscal nf = builder.Constroi(); Console.ReadKey(); }