use of br.com.caelum.agiletickets.models.Sessao in project agiletickets by caelum.
the class EspetaculosController method sessao.
@Get
@Path("/sessao/{id}")
public void sessao(Long id) {
Sessao sessao = agenda.sessao(id);
if (sessao == null) {
result.notFound();
}
result.include("sessao", sessao);
}
use of br.com.caelum.agiletickets.models.Sessao in project agiletickets by caelum.
the class EspetaculosController method reserva.
@Post
@Path("/sessao/{sessaoId}/reserva")
public void reserva(Long sessaoId, final Integer quantidade) {
Sessao sessao = agenda.sessao(sessaoId);
if (sessao == null) {
result.notFound();
return;
}
if (quantidade < 1) {
validator.add(new ValidationMessage("Você deve escolher um lugar ou mais", ""));
}
if (!sessao.podeReservar(quantidade)) {
validator.add(new ValidationMessage("Não existem ingressos disponíveis", ""));
}
// em caso de erro, redireciona para a lista de sessao
validator.onErrorRedirectTo(this).sessao(sessao.getId());
BigDecimal precoTotal = CalculadoraDePrecos.calcula(sessao, quantidade);
sessao.reserva(quantidade);
result.include("message", "Sessão reservada com sucesso por " + CURRENCY.format(precoTotal));
result.redirectTo(IndexController.class).index();
}
use of br.com.caelum.agiletickets.models.Sessao in project agiletickets by caelum.
the class CalculadoraDePrecosTest method deveAplicar10AMaisSeDurarMaisDeUmaHoraQuandoForBallet.
@Test
public void deveAplicar10AMaisSeDurarMaisDeUmaHoraQuandoForBallet() {
Sessao sessao = SessaoTestDataBuilder.umaSessao().deUmEspetaculoDoTipo(TipoDeEspetaculo.BALLET).comTotalIngressos(50).comIngressoReservados(5).comOPreco(500.0).comDuracaoEmMinutos(100).build();
BigDecimal precoTotal = CalculadoraDePrecos.calcula(sessao, 1);
assertEquals(0, BigDecimal.valueOf(550.0).compareTo(precoTotal));
}
use of br.com.caelum.agiletickets.models.Sessao in project agiletickets by caelum.
the class CalculadoraDePrecosTest method deveAplicar10AMaisSeDurarMaisDeUmaHoraQuandoForOrquestra.
@Test
public void deveAplicar10AMaisSeDurarMaisDeUmaHoraQuandoForOrquestra() {
Sessao sessao = SessaoTestDataBuilder.umaSessao().deUmEspetaculoDoTipo(TipoDeEspetaculo.ORQUESTRA).comTotalIngressos(70).comIngressoReservados(65).comOPreco(1000.0).comDuracaoEmMinutos(120).build();
BigDecimal precoTotal = CalculadoraDePrecos.calcula(sessao, 1);
assertEquals(0, BigDecimal.valueOf(1300.0).compareTo(precoTotal));
}
use of br.com.caelum.agiletickets.models.Sessao in project agiletickets by caelum.
the class CalculadoraDePrecosTest method deveAplicar20PorCentoAMaisNosUltimosIngressosQuandoForBallet.
@Test
public void deveAplicar20PorCentoAMaisNosUltimosIngressosQuandoForBallet() {
Sessao sessao = SessaoTestDataBuilder.umaSessao().deUmEspetaculoDoTipo(TipoDeEspetaculo.BALLET).comTotalIngressos(50).comIngressoReservados(25).comOPreco(500.0).comDuracaoEmMinutos(50).build();
BigDecimal precoTotal = CalculadoraDePrecos.calcula(sessao, 1);
assertEquals(0, BigDecimal.valueOf(600.0).compareTo(precoTotal));
}
Aggregations