Ejemplo n.º 1
0
        public void TestaPositivoValidacaoSexoMasculinoPorPeriodo()
        {
            var agendamento = new AgendamentoEntitie {
                Data = DateTime.Now
            };
            var doadorMaculino = new DoadorEntitie {
                Sexo = Entities.Enumeradores.SexoPessoaEnum.M
            };
            bool result = true;

            result = ValidaDoadorBusiness.IsDoacaoValidaNoPeriodo(agendamento, doadorMaculino);

            doadorMaculino.Doacoes = new System.Collections.Generic.List <ConfirmacaoDoacaoEntitie>();
            doadorMaculino.Doacoes.Add(new ConfirmacaoDoacaoEntitie {
                DataConfirmacaoDoacao = DateTime.Now.AddMonths(-8)
            });
            doadorMaculino.Doacoes.Add(new ConfirmacaoDoacaoEntitie {
                DataConfirmacaoDoacao = DateTime.Now.AddMonths(-6)
            });
            doadorMaculino.Doacoes.Add(new ConfirmacaoDoacaoEntitie {
                DataConfirmacaoDoacao = DateTime.Now.AddMonths(-4)
            });
            doadorMaculino.Doacoes.Add(new ConfirmacaoDoacaoEntitie {
                DataConfirmacaoDoacao = DateTime.Now.AddMonths(-2)
            });

            result = result && ValidaDoadorBusiness.IsDoacaoValidaNoPeriodo(agendamento, doadorMaculino);

            Assert.AreEqual(result, true, "Sucesso");
        }
        private void AtualizaStatusProcessamentoAgendamento(AgendamentoEntitie agendamento, StatusProcessamentoEnum status)
        {
            using (var transation = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                agendamento.StatusProcessamento = (int)StatusProcessamentoEnum.Processando;

                _agendamentoBusiness.Salvar(agendamento);
            }
        }
        private void ProcessarAptidaoDoadores(AgendamentoEntitie agendamento)
        {
            using (var transation = new TransactionScope(TransactionScopeOption.Required))
            {
                _doadoresBusiness.ExecutaRegrasDoadorAptoInapito(agendamento);

                transation.Complete();
            }
        }
Ejemplo n.º 4
0
        public static bool IsDoadorValidoTemporariamente(AgendamentoEntitie agendamento, DoadorEntitie doador)
        {
            var retorno = true;

            if (!IsDoadorPesoMinimoValido(doador) || !IsDoadorIdadeMinimaValido(doador) || !IsDoacaoValidaNoPeriodo(agendamento, doador))
            {
                retorno = false;
            }

            return(retorno);
        }
 private NotificacaoDoacaoEntitie GetInstaciaObjetoNotificacao(AgendamentoEntitie agendamento, DoadorEntitie doadorSelecionado)
 {
     return(new NotificacaoDoacaoEntitie
     {
         Confirmado = false,
         DataNotificacao = DateTime.Now,
         Doador = doadorSelecionado,
         Agendamento = agendamento,
         ChaveAutenticacao = Guid.NewGuid().ToString()
     });
 }
        public void ExecutaRegrasDoadorAptoInapito(AgendamentoEntitie agendamento)
        {
            var listaDoadoresIndefinido = _doadorData.RecuperaDoadoresIndefinidos();

            listaDoadoresIndefinido.ToList().ForEach(doador => {
                doador.AptoParaDoacaoTemporariamente = Validacao.ValidaDoadorBusiness.IsDoadorValidoTemporariamente(agendamento, doador);
                doador.AptoParaDoacaoPermanente      = Validacao.ValidaDoadorBusiness.IsDoadorValidoPermanentemente(doador);
            });

            AtualizaDadosDoadores(listaDoadoresIndefinido.ToList());
        }
        private void ProcessarAgendamento(AgendamentoEntitie agendamento)
        {
            AtualizaStatusProcessamentoAgendamento(agendamento, StatusProcessamentoEnum.Processando);

            agendamento = _agendamentoBusiness.RecuperaPorCodigo(agendamento.Codigo);

            bool sucesso = false;

            using (var transation = new TransactionScope(TransactionScopeOption.Required))
            {
                try
                {
                    var listaPossiveisDoadores = _doadoresBusiness.RecuperaPossiveisDoadores();

                    var listaDoadoresSorteados = SorteioDoadorBusiness.SortearDoadoresValidos(listaPossiveisDoadores, agendamento.MaximoDoadores);

                    listaDoadoresSorteados.ForEach(doadorSelecionado =>
                    {
                        var notificacao = GetInstaciaObjetoNotificacao(agendamento, doadorSelecionado);

                        _notificiacaoBusiness.Notificar(notificacao);
                    });

                    transation.Complete();

                    sucesso = true;
                }
                catch (Exception)
                {
                    //TODO: Implementar log de erro
                    sucesso = false;
                }
            }

            if (sucesso)
            {
                AtualizaStatusProcessamentoAgendamento(agendamento, StatusProcessamentoEnum.ProcessadoComSucesso);
            }
            else
            {
                AtualizaStatusProcessamentoAgendamento(agendamento, StatusProcessamentoEnum.ProcessadoComErro);
            }
        }
Ejemplo n.º 8
0
        public static bool IsDoacaoValidaNoPeriodo(AgendamentoEntitie agendamento, DoadorEntitie doador)
        {
            bool retorno = true;

            DateTime periodoFinal   = agendamento.Data;
            DateTime periodoInicial = agendamento.Data.AddYears(-1);

            doador.QuantidadeDoacoes = doador.Doacoes == null ? 0 : doador.Doacoes.Count;

            if (doador.QuantidadeDoacoes >= 3)
            {
                doador.QuantidadeDoacoes = doador.Doacoes.ToList().Count(x =>
                                                                         x.DataConfirmacaoDoacao >= periodoInicial &&
                                                                         x.DataConfirmacaoDoacao <= periodoFinal);

                if ((doador.Sexo == Entities.Enumeradores.SexoPessoaEnum.F && doador.QuantidadeDoacoes > 3) ||
                    (doador.Sexo == Entities.Enumeradores.SexoPessoaEnum.M && doador.QuantidadeDoacoes > 4))
                {
                    retorno = false;
                }
            }

            return(retorno);
        }
Ejemplo n.º 9
0
 public void Salvar(AgendamentoEntitie agendamentoEntitie)
 {
     _agendamentoData.Salvar(agendamentoEntitie);
 }
Ejemplo n.º 10
0
 public void Atualiza(AgendamentoEntitie agendamentoEntitie)
 {
     _agendamentoData.Salvar(agendamentoEntitie);
 }