예제 #1
0
        /// <summary>
        /// Realiza o cálculo em pontos da família
        /// </summary>
        /// <param name="familia"></param>
        /// <returns></returns>
        public SorteioDto CalcularPontuacaoTotal(Familia familia)
        {
            var pontosRenda = CalcularPontuacaoPorRenda(familia);

            var pontosIdadePretendente = CalcularPontuacaoPorIdadePretendente(familia);

            var pontosNumeroDependentes = CalcularPontuacaoPeloNumeroDeDependentes(familia);

            var criteriosAtendidos = 0;

            criteriosAtendidos += (pontosRenda > 0 ? 1 : 0);

            criteriosAtendidos += (pontosIdadePretendente > 0 ? 1 : 0);

            criteriosAtendidos += (pontosNumeroDependentes > 0 ? 1 : 0);

            var pontosTotais = pontosRenda + pontosIdadePretendente + pontosNumeroDependentes;

            var sorteioFamilia = new SorteioDto
            {
                FamiliaId             = familia.Id,
                QuantidadeDeCriterios = criteriosAtendidos,
                DataSorteio           = DateTime.Now,
                PontuacaoTotal        = pontosTotais
            };

            return(sorteioFamilia);
        }
예제 #2
0
 public void Post(SorteioDto sorteio)
 {
     ExecuteProcedure(Procedures.SP_AddSorteio);
     AddParameter("@Nome", sorteio.Nome);
     AddParameter("@QtdItens", sorteio.QtdeItens);
     AddParameter("@DataSorteio", sorteio.DataSorteio);
     AddParameter("@IdCriador", sorteio.IdCriador);
     ExecuteNonQuery();
 }
예제 #3
0
        public ActionResult CreateConfirmed(SorteioDto sorteio)
        {
            var response = _sorteioAppService.Post(sorteio);

            if (response.IsSuccessStatusCode)
            {
                return(Json("OK"));
            }
            return(ErrorMessage("Erro ao criar Sorteio"));
        }
예제 #4
0
        public ActionResult EditConfirmed(SorteioDto sorteio)
        {
            var response = _sorteioAppService.Put(sorteio);

            if (response.IsSuccessStatusCode)
            {
                return(RedirectToAction("Index"));
            }
            return(ErrorMessage("Erro ao editar sorteio"));
        }
예제 #5
0
 public void Put(SorteioDto sorteio)
 {
     ExecuteProcedure(Procedures.SP_UpdSorteio);
     AddParameter("@Id", sorteio.Id);
     AddParameter("@Nome", sorteio.Nome);
     AddParameter("@QtdItens", sorteio.QtdeItens);
     AddParameter("@DataSorteio", sorteio.DataSorteio);
     AddParameter("@Ativo", sorteio.Ativo);
     ExecuteNonQuery();
 }
예제 #6
0
        public async Task <ActionResult <SorteioDto> > Adicionar(SorteioDto sorteioDto)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            await _sorteioService.Adicionar(_mapper.Map <Sorteio>(sorteioDto));

            return(CustomResponse(sorteioDto));
        }
예제 #7
0
        public async Task <List <int> > RetornaSorteioQuina()
        {
            var concursoVigente = _concursoRepository.ObterConcursoVigente();

            if (concursoVigente == null)
            {
                return(null);
            }

            var client = new HttpClient();
            var html   = await client.GetStringAsync("http://loterias.caixa.gov.br/wps/portal/loterias");

            var document = new HtmlDocument();

            document.LoadHtml(html);

            var ul = document.DocumentNode.Descendants("ul")
                     .Where(node => node.GetAttributeValue("class", "")
                            .Equals("resultado-loteria quina"))
                     .FirstOrDefault()
                     .Descendants("li").ToList();

            var dezenas = new List <int>();

            foreach (var item in ul)
            {
                dezenas.Add(Convert.ToInt32(item.InnerText));
            }

            SorteioDto sorteio = new SorteioDto
            {
                Dezena_01  = dezenas[0],
                Dezena_02  = dezenas[1],
                Dezena_03  = dezenas[2],
                Dezena_04  = dezenas[3],
                Dezena_05  = dezenas[4],
                ConcursoId = concursoVigente.Id,
                Data       = DateTime.Now
            };

            var sorteiosExistentes = await ObterSorteiosPorConcurso(concursoVigente.Id);

            if (sorteiosExistentes.Any(s => sorteio.Data.Date.Equals(s.Data.Date)))
            {
                NotificarErro("Esse sorteio já foi inserido na base de dados!");
                return(null);
            }

            await Adicionar(sorteio);

            return(dezenas);
        }
        public SorteioDto Get()
        {
            var familia = new SorteioDto();

            if (!_memoryCache.TryGetValue("sorteio", out familia))
            {
                familia = _service.SortearFamilia();
                MemoryCacheEntryOptions cacheOptions = new MemoryCacheEntryOptions();
                cacheOptions.SetPriority(CacheItemPriority.High);
                cacheOptions.AbsoluteExpiration = DateTime.Now.AddMinutes(10);
                _memoryCache.Set("sorteio", familia, cacheOptions);
            }

            return(familia);
        }
예제 #9
0
        public async Task <ActionResult <SorteioDto> > Atualizar(Guid id, SorteioDto SorteioDto)
        {
            if (id != SorteioDto.Id)
            {
                NotificarErro("O id informado não é o mesmo que foi passado na consulta");
                return(CustomResponse(SorteioDto));
            }

            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            await _sorteioService.Atualizar(_mapper.Map <Sorteio>(SorteioDto));

            return(CustomResponse(SorteioDto));
        }
예제 #10
0
        /// <summary>
        /// Realiza o sorteio da família baseado em sua pontuação
        /// </summary>
        /// <returns></returns>
        public SorteioDto SortearFamilia()
        {
            var        familiasDisponiveis = _repo.Query().Where(p => p.Status == 0).ToList();
            SorteioDto familiaSelecionada  = null;

            foreach (var familia in familiasDisponiveis)
            {
                var pontos = CalcularPontuacaoTotal(familia);

                if (familiaSelecionada == null || familiaSelecionada.PontuacaoTotal < pontos.PontuacaoTotal)
                {
                    familiaSelecionada = pontos;
                }
            }

            //Cadastrar no banco que a família foi contemplada
            AlterarStatusFamilia(familiaSelecionada);

            return(familiaSelecionada);
        }
예제 #11
0
        public SorteioDto GetById(int id)
        {
            ExecuteProcedure(Procedures.SP_ListarSorteioPorId);
            AddParameter("@Id", id);
            var sorteio = new SorteioDto();

            using (var r = ExecuteReader())
            {
                if (r.Read())
                {
                    sorteio = new SorteioDto
                    {
                        Id               = r.GetInt32(r.GetOrdinal("Id")),
                        Nome             = r["Nome"].ToString(),
                        QtdeItens        = r.GetInt32(r.GetOrdinal("QtdItens")),
                        QtdParticipantes = r.GetInt32(r.GetOrdinal("NumeroParticipantes")),
                        IdCriador        = r.GetInt32(r.GetOrdinal("IdCriador")),
                        DataSorteio      = r.GetDateTime(r.GetOrdinal("DataSorteio")),
                        NomeCriador      = r["NomeCriador"].ToString(),
                        Ativo            = r.GetBoolean(r.GetOrdinal("Ativo"))
                    }
                }
                ;
                if (r.NextResult())
                {
                    while (r.Read())
                    {
                        sorteio.SorteioParticipantes.Add(new SorteioParticipanteDto
                        {
                            Id_Participante   = r.GetInt32(r.GetOrdinal("Id_Participante")),
                            Nome_Participante = r["Nome_Participante"].ToString()
                        });
                    }
                }
                ;
            }
            return(sorteio);
        }
예제 #12
0
 public IHttpActionResult Put(SorteioDto sorteio)
 {
     _sorteioService.Put(sorteio);
     return(Ok());
 }
예제 #13
0
 public bool AlterarStatusFamilia(SorteioDto familia)
 {
     //Não tenho banco para implementar
     return(true);
 }
예제 #14
0
 public HttpResponseMessage Put(SorteioDto sorteio)
 {
     return(_httpClient.PutAsync("http://localhost:2002/api/sorteio", sorteio, JsonMediaTypeFormatter).Result);
 }
예제 #15
0
 public SorteioParticipanteDto()
 {
     Usuario = new Usuario();
     Sorteio = new SorteioDto();
 }
예제 #16
0
 public string Put(SorteioDto sorteio)
 {
     _sorteioRepository.Put(sorteio);
     return(string.Empty);
 }