Este é um repositório vazio de propósito. A ideia é que você faça um fork para que eu, Alberto, possa usar o github para ter a chance de olhar vários dos códigos produzido por você e seus(as) colegas da Jornada Dev Eficiente :).
Durante cada uma das seis semanas eu vou pegar código por amostragem e analisar. Feito isso, vou criar um vídeo anonimizando a pessoa que é dona do código, com as minhas observações e postar isso como material de suporte da funcionalidade :).
-
Necessidades Agora, no começo do processo de finalização de compra, um cupom pode ser aplicado.
-
restrições
- o código do cupom precisa ser válido - verificar se o cupom esta cadastrado no banco.
- o cupom precisa ser válido ainda - verificar se o cupom ainda e valido pela data.
- Uma vez associado o cupom, uma compra nunca pode ter essa informação alterada. - criar o atributo cupom como final.
- O cupom só pode ser associada com uma compra que ainda não foi registrada no banco de dados (esse daqui eu não implementei) - verificar se a compra esta no banco. resultado esperado Manter o mesmo resultado que já existia
sobre a utilização do material de suporte aqui Agora você tem mais um passo para fazer no momento da criação da compra, que é a aplicação do cupom. A verdade é que você já treinou tudo que precisa para implementar essa funcionalidade.
Aplicar o cupom direto na compra ou seja usar o controller do compra
Criar um atributo codigo do cupom na novacompra request
passar um atributo CupomRepository no toModel da da classe NovaCompraRequest
Criar um repository para o cupom
- Criar um metodo findBy codigo
Validar se o cupom existe
- fazer um assert no metodo toModel da classe NovaCompraRequest
Associar o cupom na compra
-
criar um metodo aplicarCupom na classe compra Validar se o cupom ainda e valido
- fazer um assert verificando se o cupom ainda e valido t
- criar um atributo do tipo CupomAplicado na classe compra
- A classe CupomAplicado recebe um atributo Cupom e guarda todas as informacoes do cupom como, validadeDoMomento, DescontoDoMomento e o proprio cupom de desconto
- Anotar o atributo cupom como ManyToOne
- Anotar a classe CupomAplicado como Embeddable Nao pode trocar o cupom de uma compra depois de aplicado
- fazer um assert verificando se o atributo cupomAplicado esta nulo
-
anotar o atributo cupom como @Embedded, pois isso vai registrar o cupom na mesma tabela da compra.
Criar o atributo CupomRepository na classe NovaCompraRequest Anotar o atributo como autowired
Criar o toString para todos os metodos