コード例 #1
0
        public Result <SessaoModel> Get(int id)
        {
            var result = new Result <SessaoModel>();

            result.Value = _sessaoRepository.GetById(id);

            if (result.Value == null)
            {
                result.Message = "A Sessão não existe mais na base de dados!";
                result.Status  = false;
            }

            return(result);
        }
コード例 #2
0
        public void Dado_uma_sessão_cadastra_dentro_do_horario_de_outro_espetaculo_a_mesma_nao_deve_ser_criada()
        {
            //Arrange
            var sessao           = _sessaoRepository.GetById(Guid.NewGuid());
            var horararioTermino = sessao.HorarioInicio.AddMinutes(sessao.Espetaculo.DuracaoMinutos);
            var sala             = sessao.Sala;
            var espetaculo       = _espetaculoRepository.GetById(Guid.NewGuid());
            //Act
            var command       = new CreateSessaoCommand(espetaculo.Id, horararioTermino.AddMinutes(-30), sala.Id, 30);
            var commandResult = (GenericCommandResult)_handler.Handle(command);

            //Assert
            Assert.IsFalse(commandResult.Sucess);
        }
コード例 #3
0
        public Result <ReciboModel> GetRecibo(int id)
        {
            var result = new Result <ReciboModel>();
            var sessao = _sessaoRepository.GetById(id);

            if (sessao != null)
            {
                result.Value = ConfiguraRecibo(sessao);
            }
            else
            {
                result.Message = "A Sessão não existe mais na base de dados!";
                result.Status  = false;
            }

            return(result);
        }
コード例 #4
0
        public void Dado_um_CreateReservaCommand_valido_a_reserva_deve_ser_criada()
        {
            var sessao    = _sessaoRepository.GetById(Guid.NewGuid());
            var poltronas = sessao.Poltrona.ToList();

            var ingressos = new List <CreateIngressoCommand>()
            {
                new CreateIngressoCommand("Jose", poltronas[0].Id),
                new CreateIngressoCommand("Amanda", poltronas[1].Id),
                new CreateIngressoCommand("Erika", poltronas[2].Id)
            };

            var command       = new CreateReservaCommand(Guid.NewGuid(), sessao.Id, ingressos);
            var commandResult = (GenericCommandResult)_handler.Handle(command);

            Assert.IsTrue(commandResult.Sucess);
        }
コード例 #5
0
        //Cadastrar a reserva não quer dizer que ela foi comprada
        // Tera um handler para confirmar reserva
        // Ai sim é persistido, mas para outras pessoas, a reserva ja foi feita
        public ICommandResult Handle(CreateReservaCommand command)
        {
            command.Validate();

            if (command.Invalid)
            {
                return(new GenericCommandResult(false, "Dados incorretos", command.Notifications));
            }

            var cliente   = _clienteRepository.GetById(command.ClienteId);
            var sessao    = _sessaoRepository.GetById(command.SessaoId);
            var poltronas = _sessaoRepository.GetPoltronasByIds(sessao.Id, ExtractGuids.Extract(command));

            //Verificar se poltronas estão ocupadas
            if (IsPoltronasOcuped(poltronas))
            {
                return(new GenericCommandResult(false, "Algumas poltronas selecionadas já estão ocupadas", poltronas));
            }

            var reserva   = new Reserva(cliente, sessao);
            var ingressos = CreateIngressos(command.Ingressos, poltronas);

            reserva.AdicionarIngresso(ingressos);

            AddNotifications(reserva);

            if (Invalid)
            {
                return(new GenericCommandResult(false, "Problema ao gerar reserva", this.Notifications));
            }

            _reservaRepository.Add(reserva);

            return(new GenericCommandResult(true, "Reserva cadastrado, aguardando pagamento", reserva));
            //Verifica o estado das poltronas
            //Utilizar Dapper ou buscar estas informações na tela
        }