Search in sources :

Example 1 with Espetaculo

use of br.com.caelum.agiletickets.models.Espetaculo in project agiletickets by caelum.

the class EspetaculosController method cadastraSessoes.

@Post
@Path("/espetaculo/{espetaculoId}/sessoes")
public void cadastraSessoes(Long espetaculoId, LocalDate inicio, LocalDate fim, LocalTime horario, Periodicidade periodicidade) {
    Espetaculo espetaculo = carregaEspetaculo(espetaculoId);
    // aqui faz a magica!
    // cria sessoes baseado no periodo de inicio e fim passados pelo usuario
    List<Sessao> sessoes = espetaculo.criaSessoes(inicio, fim, horario, periodicidade);
    agenda.agende(sessoes);
    result.include("message", sessoes.size() + " sessões criadas com sucesso");
    result.redirectTo(this).lista();
}
Also used : Sessao(br.com.caelum.agiletickets.models.Sessao) Espetaculo(br.com.caelum.agiletickets.models.Espetaculo) Path(br.com.caelum.vraptor.Path) Post(br.com.caelum.vraptor.Post)

Example 2 with Espetaculo

use of br.com.caelum.agiletickets.models.Espetaculo in project agiletickets by caelum.

the class EspetaculosControllerTest method deveReservarSeASessaoTemIngressosSuficientes.

@Test
public void deveReservarSeASessaoTemIngressosSuficientes() throws Exception {
    Espetaculo espetaculo = new Espetaculo();
    espetaculo.setTipo(TipoDeEspetaculo.TEATRO);
    Sessao sessao = new Sessao();
    sessao.setPreco(new BigDecimal("10.00"));
    sessao.setTotalIngressos(5);
    sessao.setEspetaculo(espetaculo);
    when(agenda.sessao(1234l)).thenReturn(sessao);
    controller.reserva(1234l, 3);
    assertThat(sessao.getIngressosDisponiveis(), is(2));
}
Also used : Sessao(br.com.caelum.agiletickets.models.Sessao) BigDecimal(java.math.BigDecimal) Espetaculo(br.com.caelum.agiletickets.models.Espetaculo) TipoDeEspetaculo(br.com.caelum.agiletickets.models.TipoDeEspetaculo) Test(org.junit.Test)

Example 3 with Espetaculo

use of br.com.caelum.agiletickets.models.Espetaculo in project agiletickets by caelum.

the class EspetaculosControllerTest method deveCadastrarEspetaculosComNomeEDescricao.

@Test
public void deveCadastrarEspetaculosComNomeEDescricao() throws Exception {
    Espetaculo espetaculo = new Espetaculo();
    espetaculo.setNome("um nome");
    espetaculo.setDescricao("uma descricao");
    controller.adiciona(espetaculo);
    verify(agenda).cadastra(espetaculo);
}
Also used : Espetaculo(br.com.caelum.agiletickets.models.Espetaculo) TipoDeEspetaculo(br.com.caelum.agiletickets.models.TipoDeEspetaculo) Test(org.junit.Test)

Example 4 with Espetaculo

use of br.com.caelum.agiletickets.models.Espetaculo in project agiletickets by caelum.

the class PreencheBanco method main.

// ALUNO: Não apague essa classe
public static void main(String[] args) {
    EntityManagerFactoryCreator creator = new EntityManagerFactoryCreator();
    creator.create();
    EntityManagerCreator managerCreator = new EntityManagerCreator(creator.getInstance());
    managerCreator.create();
    EntityManager manager = managerCreator.getInstance();
    manager.getTransaction().begin();
    manager.createQuery("delete from Sessao").executeUpdate();
    manager.createQuery("delete from Espetaculo").executeUpdate();
    manager.createQuery("delete from Estabelecimento").executeUpdate();
    Estabelecimento estabelecimento = new Estabelecimento();
    estabelecimento.setNome("Casa de shows");
    estabelecimento.setEndereco("Rua dos Silveiras, 12345");
    Espetaculo espetaculo = new Espetaculo();
    espetaculo.setEstabelecimento(estabelecimento);
    espetaculo.setNome("Depeche Mode");
    espetaculo.setTipo(TipoDeEspetaculo.SHOW);
    manager.persist(estabelecimento);
    manager.persist(espetaculo);
    for (int i = 0; i < 10; i++) {
        Sessao sessao = new Sessao();
        sessao.setEspetaculo(espetaculo);
        sessao.setInicio(new DateTime().plusDays(7 + i));
        sessao.setDuracaoEmMinutos(60 * 3);
        sessao.setTotalIngressos(100);
        sessao.setIngressosReservados(i < 5 ? 100 - i : 0);
        sessao.setPreco(new BigDecimal("50"));
        manager.persist(sessao);
    }
    manager.getTransaction().commit();
    manager.close();
}
Also used : Estabelecimento(br.com.caelum.agiletickets.models.Estabelecimento) EntityManager(javax.persistence.EntityManager) Sessao(br.com.caelum.agiletickets.models.Sessao) EntityManagerCreator(br.com.caelum.vraptor.util.jpa.EntityManagerCreator) EntityManagerFactoryCreator(br.com.caelum.vraptor.util.jpa.EntityManagerFactoryCreator) DateTime(org.joda.time.DateTime) BigDecimal(java.math.BigDecimal) Espetaculo(br.com.caelum.agiletickets.models.Espetaculo) TipoDeEspetaculo(br.com.caelum.agiletickets.models.TipoDeEspetaculo)

Example 5 with Espetaculo

use of br.com.caelum.agiletickets.models.Espetaculo in project agiletickets by caelum.

the class EspetaculosController method sessoes.

@Get
@Path("/espetaculo/{espetaculoId}/sessoes")
public void sessoes(Long espetaculoId) {
    Espetaculo espetaculo = carregaEspetaculo(espetaculoId);
    result.include("espetaculo", espetaculo);
}
Also used : Espetaculo(br.com.caelum.agiletickets.models.Espetaculo) Path(br.com.caelum.vraptor.Path) Get(br.com.caelum.vraptor.Get)

Aggregations

Espetaculo (br.com.caelum.agiletickets.models.Espetaculo)9 TipoDeEspetaculo (br.com.caelum.agiletickets.models.TipoDeEspetaculo)6 Test (org.junit.Test)4 Sessao (br.com.caelum.agiletickets.models.Sessao)3 Path (br.com.caelum.vraptor.Path)2 BigDecimal (java.math.BigDecimal)2 Estabelecimento (br.com.caelum.agiletickets.models.Estabelecimento)1 Get (br.com.caelum.vraptor.Get)1 Post (br.com.caelum.vraptor.Post)1 EntityManagerCreator (br.com.caelum.vraptor.util.jpa.EntityManagerCreator)1 EntityManagerFactoryCreator (br.com.caelum.vraptor.util.jpa.EntityManagerFactoryCreator)1 ValidationMessage (br.com.caelum.vraptor.validator.ValidationMessage)1 EntityManager (javax.persistence.EntityManager)1 DateTime (org.joda.time.DateTime)1