コード例 #1
0
        protected override void Executar(Command command)
        {
            Assegure.Que(command.IdAtendimento > 0, "Informe o IdAtendimento");

            var atendimento = atendimentoRepo.ById(command.IdAtendimento);

            atendimento.Cancelar(timeProvider);
        }
コード例 #2
0
        protected override void Executar(Command command)
        {
            Assegure.Que(command.IdAtendimento > 0, "Informe o IdAtendimento");

            var atendimento = atendimentoRepo.ById(command.IdAtendimento);

            atendimento.Compareceu();
        }
コード例 #3
0
        public virtual void Cancelar(ITimeProvider timeProvider)
        {
            Assegure.Que(Status == TipoStatus.MARC, $"Não é possível Cancelar no Status {Status}");

            Status = TipoStatus.CANC;

            DataCancelamento = timeProvider.Now;
        }
コード例 #4
0
        protected override void Executar(Command command)
        {
            Assegure.Que(command.IdAtendimento > 0, "Informe o IdAtendimento");

            command.Horario.Validar();

            var atendimento = atendimentoRepo.ById(command.IdAtendimento);

            atendimento.Alterar(atendimentoRepo,
                                timeProvider,
                                command.Horario.ToPeriodoFechado(),
                                new Paciente(command.PacienteNome, command.PacienteDataNascimento.ToDateTimeOrNull()),
                                command.Observacao

                                );
        }
コード例 #5
0
        public Paciente(string nome, DateTime?dataNascimento)
        {
            nome = nome?.Trim();

            Assegure.Que(nome.PossuiValor(), () => $"Informe o Nome");

            Assegure.Que(nome.Length <= 100, () => "Nome deve ter até 100 caracteres");

            Assegure.Que(dataNascimento != null, "Informe uma Data de Nascimento válida");

            Assegure.Que(dataNascimento >= DateTimeExtension.MenorDataPossivel,
                         $"Informe uma data maior ou igual a {dataNascimento.ToDateBr()}");

            Nome = nome;

            DataNascimento = dataNascimento.Value;
        }
コード例 #6
0
        public virtual void ComputarResultado(DateTime dataComputou, IResultado resultado, IJogo jogo)
        {
            Assegure.Que(this.IdJogo == jogo.IdJogo, "Jogo inválido");

            Assegure.NaoNulo(resultado, "Informe o resultado");

            Assegure.NaoNulo(jogo, "Informe o jogo");


            this.Acerto = jogo.ComputarAposta(resultado, Volante);

            this.AcertoStatus = this.Acerto == null ? StatusAcerto.ERR : StatusAcerto.VENC;


            this.StatusProcessamento = StatusProcessamentoAposta.COMP;

            this.DataComputou = dataComputou;
        }
コード例 #7
0
        protected override Acerto ApostaVencedoraTemplate(Resultado resultado, Volante volante)
        {
            Assegure.NaoNulo(resultado, "Informe o resultado");

            Assegure.NaoNulo(volante, "Informe o volante");


            var intersect = volante.NumerosSelecionados.Intersect(resultado.NumerosSorteados).ToList();

            if (intersect.Count() == 6 ||
                intersect.Count() == 5 ||
                intersect.Count() == 4)
            {
                return(new Acerto(intersect));
            }


            return(null);
        }
コード例 #8
0
        public Atendimento(
            IAtendimentoRepo atendimentoRepo,
            ITimeProvider timeProvider,
            PeriodoFechado horario,
            Paciente paciente,
            string observacao
            )
        {
            observacao = observacao?.Trim();

            Assegure.Que(atendimentoRepo != null, () => $"{nameof(atendimentoRepo)} é null");

            Assegure.Que(timeProvider != null, () => $"{nameof(timeProvider)} é null");

            Assegure.Que(horario != null, () => $"{nameof(horario)} é null");

            Assegure.Que(paciente != null, "Informe o Paciente");

            Assegure.Que((observacao?.Length ?? 0) <= 500, () => "Observação deve ter no máximo 500 caracteres");


            Assegure.Que(horario.DataInicial >= timeProvider.Now, () => "Informe um Horário com data maior ou igual a de agora");


            var atendimentos = atendimentoRepo.ExisteColisaoComOHorario(horario);

            Assegure.Que(atendimentos.Count == 0, () => $"Já existe Atendimento marcado para o Horário informado");


            Horario = horario;

            Paciente = paciente;

            Observacao = observacao;



            Status = TipoStatus.MARC;

            DataCadastro = timeProvider.Now;
        }
コード例 #9
0
        public virtual void Finalizar(FinalizarCommand command)
        {
            Assegure.Que(this.IdJogo == command.Jogo.IdJogo, "Jogo inválido");

            Assegure.NaoNulo(command.Resultado, "Informe o Resultado");

            Assegure.NaoNulo(command.Apostas, "Apostas é null");

            Assegure.Que(command.Apostas.Count > 0, "Nenhuma aposta informada");


            command.Apostas.ForEach(aposta =>
                                    aposta.ComputarResultado(command.DataConclusao, command.Resultado, command.Jogo));


            this.Status = EnumStatusConcurso.CONC;

            this.DataConclusao = command.DataConclusao;

            this.Resultado = command.Resultado;
        }
コード例 #10
0
        public Aposta(
            int idAposta,
            Concurso concurso,
            IJogo jogo,
            DateTime dataOcorrencia,
            string jogador,
            IVolante volante
            )
        {
            Assegure.Que(idAposta > 0, "idAposta inválida");

            Assegure.NaoNulo(concurso, "Informe o Concurso");

            Assegure.NaoNulo(jogo, "Informe o Jogo");

            Assegure.EhDataValida(dataOcorrencia, () => "Data da Ocorrência inválida");

            Assegure.NaoNulo(volante, "Informe o volante");


            jogo.ValidarVolante(volante);


            this.IdAposta = idAposta;

            this.IdConcurso = concurso.IdConcurso;

            this.IdJogo = jogo.IdJogo;

            this.DataOcorrencia = dataOcorrencia;

            this.Jogador = jogador;

            this.Volante = volante;

            this.StatusProcessamento = StatusProcessamentoAposta.FEITA;

            this.AcertoStatus = StatusAcerto.INIC;
        }
コード例 #11
0
        public void Executar(Command command)
        {
            Assegure.Que(command.IdConcurso > 0, "Informe o Concurso");

            Assegure.NaoNulo(command.Apostas, "Nenhuma Aposta");

            Assegure.Que(command.Apostas.Count > 0, "Informe pelo menos uma aposta");


            var concurso = concursoRepo.AtivoByIdConcurso(command.IdConcurso);

            Assegure.NaoNulo(concurso, "Concurso não encontrado");


            var jogo = jogoRepo.GetByIdJogo(concurso.IdJogo);



            var dataOcorrencia = DateTime.Now;
            var type           = typeof(Aposta);

            foreach (var apostaDto in command.Apostas)
            {
                var idAposta = sequenceGenerator.NextIdFor(type);

                var newAposta = new Aposta(
                    idAposta,
                    concurso,
                    jogo,
                    dataOcorrencia,
                    apostaDto.Jogador,
                    apostaDto.Volante
                    );


                apostaRepo.Insert(newAposta);
            }
        }
コード例 #12
0
        public virtual void Compareceu()
        {
            Assegure.Que(Status == TipoStatus.MARC, $"Não é possível estar como Compareceu no Status {Status}");

            Status = TipoStatus.COMP;
        }
コード例 #13
0
        public override void Query(Command command)
        {
            Assegure.Que(command.IdPaciente > 0, "Informe o IdPaciente");

            command.PacienteResult = pacienteRepo.ById(command.IdPaciente);
        }
コード例 #14
0
 protected override void ValidarVolanteTemplate(Volante volante)
 {
     Assegure.Que(volante.NumerosSelecionados.Count == Regras.QuantidadeDeNumerosDoVolante,
                  () => $"Volante inválido. Deve ter {Regras.QuantidadeDeNumerosDoVolante} números");
 }