Example #1
0
        /// <summary>
        /// Возвращает список стран прилета
        /// </summary>
        /// <param name="dc">Контекст поисковой БД</param>
        /// <param name="mainDc">Контекст основной БД</param>
        /// <param name="isOneWay">Является ли перелет в одну сторону или туда/обратно</param>
        /// <param name="cityKeyFrom">Ключ города вылета</param>
        /// <param name="hash">Хэш кэша</param>
        /// <returns></returns>
        public static IList <Tuple <int, string> > GetFlightCountriesTo(this MtSearchDbDataContext dc, MtMainDbDataContext mainDc, bool isOneWay, int cityKeyFrom, out string hash)
        {
            List <Tuple <int, string> > result;

            hash = String.Format("{0}_{1}_{2}", MethodBase.GetCurrentMethod().Name, isOneWay, cityKeyFrom);
            if ((result = CacheHelper.GetCacheItem <List <Tuple <int, string> > >(hash)) != null)
            {
                return(result);
            }

            var    cacheDependencies = new List <string>();
            string hashOut;
            var    cities = dc.GetFlightCitiesTo(mainDc, isOneWay, null, cityKeyFrom, out hashOut);

            cacheDependencies.Add(hashOut);

            result = (from cn in dc.GetAllCountries()
                      join ct in dc.GetAllCities() on cn.CN_KEY equals ct.CT_CNKEY
                      where cities.Select(c => c.Item1).ToList().Contains(ct.CT_KEY)
                      select new Tuple <int, string>(cn.CN_KEY, cn.CN_NAME))
                     .Distinct()
                     .OrderBy(c => c.Item2)
                     .ToList();
            cacheDependencies.Add(CitiesExtension.TableName);
            cacheDependencies.Add(CountriesExtension.TableName);

            CacheHelper.AddCacheData(hash, result, cacheDependencies.ToList(), Globals.Settings.Cache.LongCacheTimeout);
            return(result);
        }
Example #2
0
        public static IList <tbl_Country> GetCountriesByKeys(this MtSearchDbDataContext dc, IEnumerable <int> countryKeys, out string hash)
        {
            List <tbl_Country> countries;

            hash = String.Format("{0}_{1}", MethodBase.GetCurrentMethod().Name, String.Join(",", countryKeys));

            if ((countries = CacheHelper.GetCacheItem <List <tbl_Country> >(hash)) != default(List <tbl_Country>))
            {
                return(countries);
            }

            countries = (from c in dc.GetAllCountries()
                         where countryKeys.Contains(c.CN_KEY)
                         select c)
                        .ToList <tbl_Country>();

            CacheHelper.AddCacheData(hash, countries, new List <string>()
            {
                TableName
            }, Globals.Settings.Cache.LongCacheTimeout);

            return(countries);
        }
Example #3
0
        public static IList <Tuple <int, string> > GetCharterScheduleCountriesTo(this MtSearchDbDataContext dc, out string hash)
        {
            List <Tuple <int, string> > result;

            hash = String.Format("{0}", MethodBase.GetCurrentMethod().Name);
            if ((result = CacheHelper.GetCacheItem <List <Tuple <int, string> > >(hash)) != null)
            {
                return(result);
            }

            string hashOut;
            var    cacheDependencies = new List <string>();

            var charterKeys = dc.GetAllCharterKeys(out hashOut);

            cacheDependencies.Add(hashOut);

            var homeCountry = dc.GetHomeCountry(out hashOut);

            cacheDependencies.Add(hashOut);

            result = (from ch in dc.GetAllCharters()
                      join ct in dc.GetAllCities() on ch.CH_CITYKEYTO equals ct.CT_KEY
                      join cn in dc.GetAllCountries() on ct.CT_CNKEY equals cn.CN_KEY
                      where charterKeys.Contains(ch.CH_KEY) &&
                      cn.CN_KEY != homeCountry.CN_KEY
                      select new Tuple <int, string>(cn.CN_KEY, cn.CN_NAME))
                     .Distinct()
                     .ToList();

            cacheDependencies.Add(CharterExtension.TableName);
            cacheDependencies.Add(CountriesExtension.TableName);
            cacheDependencies.Add(CitiesExtension.TableName);

            return(result);
        }