// 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")); }
public Sessao Adicionar(Sessao sessao) { sessao.ResultadoValidacao = new SessaoAptaParaCadastroValidation(_sessaoRepository).Validate(sessao); if (PossuiConformidade(sessao.ResultadoValidacao)) { _sessaoRepository.Add(sessao); } return(sessao); }