Skip to content

Commit 10e3eaa

Browse files
Web DeveloperWeb Developer
authored andcommitted
Create Method State
1 parent 7bcf42b commit 10e3eaa

12 files changed

Lines changed: 300 additions & 22 deletions

File tree

.idea/.idea.DesignPatternsCSharp/.idea/contentModel.xml

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ConsoleApplication1/Aprovado.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
3+
namespace ConsoleApplication1
4+
{
5+
public class Aprovado : EstadoDeUmOrcamento
6+
{
7+
public void AplicaDescontoExtra(Orcamento orcamento)
8+
{
9+
orcamento.Valor = orcamento.Valor - (orcamento.Valor * 0.02);
10+
}
11+
12+
public void Aprova(Orcamento orcamento)
13+
{
14+
throw new Exception("Orçamento já está em estado de aprovação!");
15+
}
16+
17+
public void Reprova(Orcamento orcamento)
18+
{
19+
throw new Exception("Orçamento já está em aprovação, não pode ser reprovado agora!");
20+
}
21+
22+
public void Finaliza(Orcamento orcamento)
23+
{
24+
orcamento.EstadoAtual = new Finalizado();
25+
}
26+
}
27+
}

ConsoleApplication1/ConsoleApplication1.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,28 @@
3838
<Reference Include="System.Xml" />
3939
</ItemGroup>
4040
<ItemGroup>
41+
<Compile Include="Aprovado.cs" />
4142
<Compile Include="CalculadorDeImpostos.cs" />
4243
<Compile Include="CalcularDeDescontos.cs" />
44+
<Compile Include="CriadorDeNotaFiscal.cs" />
4345
<Compile Include="Desconto.cs" />
4446
<Compile Include="DescontoPorMaisDeQuinhetosReais.cs" />
4547
<Compile Include="DescontosPorCincoItens.cs" />
4648
<Compile Include="EmAprovacao.cs" />
4749
<Compile Include="EstadoDeUmOrcamento.cs" />
50+
<Compile Include="Finalizado.cs" />
4851
<Compile Include="ICMS.cs" />
4952
<Compile Include="ICPP.cs" />
5053
<Compile Include="IKCV.cs" />
5154
<Compile Include="Imposto.cs" />
5255
<Compile Include="ISS.cs" />
5356
<Compile Include="Item.cs" />
57+
<Compile Include="ItemDaNota.cs" />
58+
<Compile Include="NotaFiscal.cs" />
5459
<Compile Include="Orcamento.cs" />
5560
<Compile Include="Program.cs" />
5661
<Compile Include="Properties\AssemblyInfo.cs" />
62+
<Compile Include="Reprovado.cs" />
5763
<Compile Include="SemDesconto.cs" />
5864
<Compile Include="TemplateDeImpostoCondicional.cs" />
5965
</ItemGroup>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace ConsoleApplication1
5+
{
6+
public class CriadorDeNotaFiscal
7+
{
8+
9+
10+
public string RazaoSocial { get; set; }
11+
public string Cnpj { get; set; }
12+
public double ValorTotal { get; set; }
13+
public double Impostos { get; set; }
14+
public string Observacoes { get; set; }
15+
public DateTime DataAtual { get; set; }
16+
private IList<ItemDaNota> todosItens = new List<ItemDaNota>();
17+
18+
public NotaFiscal Constroi()
19+
{
20+
return new NotaFiscal(RazaoSocial, Cnpj,DataAtual, ValorTotal, Impostos, todosItens, Observacoes);
21+
}
22+
23+
public void ParaEmpresa(string razaSocial)
24+
{
25+
RazaoSocial = razaSocial;
26+
}
27+
28+
public void ComObservacoes(string observacoes)
29+
{
30+
Observacoes = observacoes ;
31+
}
32+
33+
public void NaDataAtual()
34+
{
35+
DataAtual = DateTime.Now;
36+
}
37+
38+
39+
40+
public void ComCNPJ(string cnpj)
41+
{
42+
cnpj = cnpj ;
43+
}
44+
45+
public void ComItem(ItemDaNota item)
46+
{
47+
todosItens.Add(item);
48+
ValorTotal += item.Valor;
49+
50+
Impostos += item.Valor * 0.05;
51+
}
52+
}
53+
}

ConsoleApplication1/EmAprovacao.cs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,27 @@
1-
namespace ConsoleApplication1
1+
using System;
2+
3+
namespace ConsoleApplication1
24
{
3-
public class EmAprovacao
5+
public class EmAprovacao : EstadoDeUmOrcamento
46
{
5-
7+
public void AplicaDescontoExtra(Orcamento orcamento)
8+
{
9+
orcamento.Valor = orcamento.Valor - (orcamento.Valor * 0.05);
10+
}
11+
12+
public void Aprova(Orcamento orcamento)
13+
{
14+
orcamento.EstadoAtual = new Aprovado();
15+
}
16+
17+
public void Reprova(Orcamento orcamento)
18+
{
19+
orcamento.EstadoAtual = new Reprovado();;
20+
}
21+
22+
public void Finaliza(Orcamento orcamento)
23+
{
24+
throw new Exception("Orçamento em aprovação não pode ir para finalizado!");
25+
}
626
}
727
}

ConsoleApplication1/EstadoDeUmOrcamento.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,8 @@
33
public interface EstadoDeUmOrcamento
44
{
55
void AplicaDescontoExtra(Orcamento orcamento);
6+
void Aprova(Orcamento orcamento);
7+
void Reprova(Orcamento orcamento);
8+
void Finaliza(Orcamento orcamento);
69
}
710
}

ConsoleApplication1/Finalizado.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
3+
namespace ConsoleApplication1
4+
{
5+
public class Finalizado: EstadoDeUmOrcamento
6+
{
7+
public void AplicaDescontoExtra(Orcamento orcamento)
8+
{
9+
throw new Exception("Orçamentos finalizados não recebem desconto extra");
10+
}
11+
12+
public void Aprova(Orcamento orcamento)
13+
{
14+
throw new Exception("Orçamento já está finalizado!");
15+
}
16+
17+
public void Reprova(Orcamento orcamento)
18+
{
19+
throw new Exception("Orçamento já está finalizado!");
20+
}
21+
22+
public void Finaliza(Orcamento orcamento)
23+
{
24+
throw new Exception("Orçamento já está finalizado!");
25+
}
26+
}
27+
}

ConsoleApplication1/ItemDaNota.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace ConsoleApplication1
2+
{
3+
public class ItemDaNota
4+
{
5+
public string Nome { get; set; }
6+
public double Valor { get; set; }
7+
public ItemDaNota(string nome, double valor)
8+
{
9+
Nome = nome;
10+
Valor = valor;
11+
}
12+
13+
}
14+
}

ConsoleApplication1/NotaFiscal.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace ConsoleApplication1
5+
{
6+
public class NotaFiscal
7+
{
8+
public string RazaoSocial { get; set; }
9+
public string Cnpj { get; set; }
10+
public DateTime DataEmissao { get; set; }
11+
public double ValorBruto { get; set; }
12+
public double Impostos { get; set; }
13+
public IList<ItemDaNota> Itens { get; set; }
14+
public string Informacoes { get; set; }
15+
16+
public NotaFiscal(string razaoSocial, string cnpj, DateTime dataEmissao, double valorBruto, double impostos,
17+
IList<ItemDaNota> itens, string informacoes)
18+
{
19+
RazaoSocial = razaoSocial;
20+
Cnpj = cnpj;
21+
DataEmissao = dataEmissao;
22+
ValorBruto = valorBruto;
23+
Impostos = impostos;
24+
Itens = itens;
25+
Informacoes = informacoes;
26+
}
27+
}
28+
}

ConsoleApplication1/Orcamento.cs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections;
1+
using System;
2+
using System.Collections;
23
using System.Collections.Generic;
34
using System.Security.Permissions;
45

@@ -7,16 +8,16 @@ namespace ConsoleApplication1
78
public class Orcamento
89
{
910

10-
public double Valor { get; private set; }
11+
public double Valor { get; set; }
1112
public IList<Item> Itens { get; private set; }
12-
public Status Status { get; set; }
13-
public int EstadoAtual { get; set; }
13+
public EstadoDeUmOrcamento EstadoAtual { get; set; }
1414

1515

1616
public Orcamento(double valor)
1717
{
1818
Valor = valor;
1919
Itens = new List<Item>();
20+
EstadoAtual = new EmAprovacao();
2021
}
2122

2223
public void AdicionaItem(Item item)
@@ -27,18 +28,26 @@ public void AdicionaItem(Item item)
2728

2829
public void AplicaDescontoExtra()
2930
{
30-
throw new System.NotImplementedException();
31+
EstadoAtual.AplicaDescontoExtra(this);
3132
}
32-
}
3333

34-
public enum Status
35-
{
36-
EM_APROVACAO =1,
37-
APROVADO =2,
38-
REPROVADO =3,
39-
FINALIZADO =4,
34+
public void Aprova()
35+
{
36+
EstadoAtual.Aprova(this);
37+
}
38+
39+
public void Reprova()
40+
{
41+
EstadoAtual.Reprova(this);
42+
}
4043

44+
public void Finaliza()
45+
{
46+
EstadoAtual.Finaliza(this);
47+
}
4148
}
49+
50+
4251

4352

4453
}

0 commit comments

Comments
 (0)