Пример #1
0
        public void Dado_um_CreateSessaoCommand_valido_a_sessao_deve_ser_criada()
        {
            var _espetaculo = _espetaculoRepository.GetById(Guid.NewGuid());
            var _sala       = _salaRepository.GetById(Guid.NewGuid());

            var command       = new CreateSessaoCommand(_espetaculo.Id, new DateTime(2020, 11, 3, 19, 0, 0), _sala.Id, 30);
            var commandResult = (GenericCommandResult)_handler.Handle(command);

            Assert.IsTrue(commandResult.Sucess);
        }
Пример #2
0
        // Buscar dados do espetaculo
        // Buscar dados da sala
        // Verificar se o horario esta disponivel
        // Cadastrar Sessao
        public ICommandResult Handle(CreateSessaoCommand command)
        {
            command.Validate();
            if (command.Invalid)
            {
                return(new GenericCommandResult(false, "Dados inválidos", command.Notifications));
            }

            var espetaculo = _espetaculoRepository.GetById(command.EspetaculoId);

            //Verificar se o horario esta livre, isso inclui somar a duração do espetaculi
            if (_sessaoRepository
                .IsHorarioNotFree(
                    command.Horario,
                    command.Horario.AddMinutes(espetaculo.DuracaoMinutos), command.SalaId)
                )
            {
                return(new GenericCommandResult(false, "O horario na sala especificada esta ocupado"));
            }

            var sala   = _salaRepository.GetById(command.SalaId);
            var sessao = new Sessao(command.Horario, espetaculo, sala, command.ValorIngresso);

            AddNotifications(sessao);

            if (Invalid)
            {
                return(new GenericCommandResult(false, "Não foi possivel criar a sessão", this.Notifications));
            }

            _sessaoRepository.Add(sessao);

            return(new GenericCommandResult(true, "Sessão criada com sucesso"));
        }