private void ExtrairEmpresaComMenorValorNoFds(EnumeradorTipoProgramaDeFidelidade PlanoDeFidelidade, ref decimal diariasCorrentes, ref int classificacaoCorrente, ref Guid IdHotel)
 {
     if (PlanoDeFidelidade == EnumeradorTipoProgramaDeFidelidade.Regular)
     {
         foreach (var hotel in this._contexto.tblRedeDeHoteis.ListaDeHoteis)
         {
             if (diariasCorrentes >= hotel.Diarias.VlDiariaFds && classificacaoCorrente < hotel.Classificacao)
             {
                 diariasCorrentes      = hotel.Diarias.VlDiariaFds;
                 classificacaoCorrente = hotel.Classificacao;
                 IdHotel = hotel.Id;
             }
         }
     }
     else
     {
         foreach (var hotel in this._contexto.tblRedeDeHoteis.ListaDeHoteis)
         {
             if (diariasCorrentes >= hotel.Diarias.VlDiariaFdsFidelidade && classificacaoCorrente < hotel.Classificacao)
             {
                 diariasCorrentes      = hotel.Diarias.VlDiariaFdsFidelidade;
                 classificacaoCorrente = hotel.Classificacao;
                 IdHotel = hotel.Id;
             }
         }
     }
 }
        public EntidadeHoteis ObterHotelMaisBarato(EnumeradorTipoProgramaDeFidelidade PlanoDeFidelidade, DateTime dt1,
                                                   DateTime dt2, DateTime dt3)
        {
            Dictionary <Guid, decimal> Hoteis = new Dictionary <Guid, decimal>();
            List <DateTime>            datas  = new List <DateTime>();

            datas.Add(dt1);
            datas.Add(dt2);
            datas.Add(dt3);

            BuscarMenorData(Hoteis, PlanoDeFidelidade, datas);

            var hotel = this._contexto.tblRedeDeHoteis.ListaDeHoteis.FirstOrDefault(me => me.Id == Hoteis.Aggregate((l, r) => l.Value < r.Value ? l : r).Key);

            return(hotel);
        }
        private void BuscarMenorData(Dictionary <Guid, decimal> Hoteis, EnumeradorTipoProgramaDeFidelidade PlanoDeFidelidade, List <DateTime> Datas)
        {
            decimal diariasCorrentes      = decimal.MaxValue;
            int     classificacaoCorrente = 0;
            Guid    IdHotel = new Guid();

            for (var i = 0; i < Datas.Count; i++)
            {
                if ((Datas[i].DayOfWeek == DayOfWeek.Saturday || Datas[i].DayOfWeek == DayOfWeek.Sunday))
                {
                    ExtrairEmpresaComMenorValorNoFds(PlanoDeFidelidade, ref diariasCorrentes, ref classificacaoCorrente, ref IdHotel);
                }
                else
                {
                    ExtrairEmpresaComMenorValorDuranteASemana(PlanoDeFidelidade, ref diariasCorrentes, ref classificacaoCorrente, ref IdHotel);
                }
            }

            if (!Hoteis.ContainsKey(IdHotel))
            {
                Hoteis.Add(IdHotel, diariasCorrentes);
            }
        }
 public void AtualizarParticipante(Guid idRedeDeHoteis, EnumeradorTipoProgramaDeFidelidade tipoDeFidelidade)
 {
     this.IdRedeDeHoteis   = idRedeDeHoteis;
     this.TipoDeFidelidade = tipoDeFidelidade;
 }
 public void AtualizarPlanoDeFilidade(EnumeradorTipoProgramaDeFidelidade tipoDeFidelidade)
 {
     this.TipoDeFidelidade = tipoDeFidelidade;
 }