This repository has been archived by the owner on Jan 20, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEncomenda.java
121 lines (98 loc) · 3.4 KB
/
Encomenda.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class Encomenda {
public enum Dimensao {grande, medio, pequeno}
public enum Estado {pendente, finalizada, expedida}
private List<String> artigos;
private Dimensao dimensao;
private Estado estado;
private LocalDate dataCriada;
public Encomenda() {
this.artigos = new ArrayList<>();
this.dimensao = Dimensao.pequeno;
this.estado = Estado.pendente;
this.dataCriada = LocalDate.now();
}
public Encomenda(List<String> artigos, Estado estado, LocalDate dataCriada) {
this.artigos = new ArrayList<>();
this.artigos.addAll(artigos);
if (artigos.size() == 1) this.dimensao = Dimensao.pequeno;
else if (artigos.size() <= 5) this.dimensao = Dimensao.medio;
else this.dimensao = Dimensao.grande;
this.estado = estado;
this.dataCriada = dataCriada;
}
public Encomenda(Encomenda e) {
this.artigos = e.getArtigos();
this.dimensao = e.getDimensao();
this.estado = e.getEstado();
this.dataCriada = e.getDataCriada();
}
public List<String> getArtigos() {
List<String> new_artigos = new ArrayList<>();
new_artigos.addAll(this.artigos);
return new_artigos;
}
public void setArtigos(List<String> artigos) {
this.artigos = new ArrayList<>();
this.artigos.addAll(artigos);
}
public Dimensao getDimensao() {
return dimensao;
}
public void setDimensao(Dimensao dimensao) {
this.dimensao = dimensao;
}
public Estado getEstado() {
return estado;
}
public void setEstado(Estado estado) {
this.estado = estado;
}
public LocalDate getDataCriada() {
return dataCriada;
}
public void setDataCriada(LocalDate dataCriada) {
this.dataCriada = dataCriada;
}
public void addArtigo(String a) {
this.artigos.add(a);
if (artigos.size() == 1) this.dimensao = Dimensao.pequeno;
else if (artigos.size() <= 5) this.dimensao = Dimensao.medio;
else this.dimensao = Dimensao.grande;
}
public void remArtigo(String cod) {
this.artigos.removeIf(a -> a.equals(cod));
}
public float calcPrecoFinal(Map<String, Artigo> marketplace) {
float total = 0;
for(String cod : this.artigos) {
float satisfacao;
if (marketplace.get(cod).getCondicao().equals(Artigo.Condicao.novo)) satisfacao = 0.5F;
else satisfacao = 0.25F;
total += marketplace.get(cod).getPrecoTotal() + satisfacao;
}
return total;
}
public Encomenda clone() {
return new Encomenda(this);
}
@Override
public String toString() {
String returnS = artigos.size() + ";";
for (String a : artigos) returnS += a + ";";
returnS += estado + ";";
returnS += dataCriada;
return returnS;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Encomenda encomenda = (Encomenda) o;
return Objects.equals(artigos, encomenda.artigos) && dimensao == encomenda.dimensao && estado == encomenda.estado && Objects.equals(dataCriada, encomenda.dataCriada);
}
}