예제 #1
0
        /// <summary>
        /// Get Records in Regions  pie chart
        /// </summary>
        /// <param name="languageID"></param>
        /// <returns></returns>
        public static List <Region_Language> GetRecordsInRegion(Guid languageID, List <Guid> listOfRecordId, List <Guid> selectedRegions)
        {
            List <Region_Language> regionLanguages = new List <Region_Language>();
            List <Region>          regions         = new List <Region>();
            string      currentYear    = DateTime.Now.Year.ToString();
            Guid        yearVariableID = new Guid(AppSettingsUtility.GetString(AppSettingsKeys.YearVariableID));
            List <Guid> recordIds      = GetActiveCurrentYearRecordsIDs(languageID);

            using (var context = new TSMContext())
            {
                //var filteredRecords = GetRecordList(languageID, selectedRegions, selectedCountries, selectedSectors, selectedDocumentTypes, documentTypeVariableID);
                // var filteredRecordsID = filteredRecords.Select(r => r.ID).ToList();
                var filteredRecordsID = listOfRecordId;

                if (selectedRegions == null || selectedRegions.Count <= 0)
                {
                    selectedRegions = (from r in context.Regions select r.ID).ToList();
                }
                var query = (from r in context.Regions.Include("Region_Languages")
                             join rl in context.Region_Languages
                             on r.ID equals rl.ID
                             where selectedRegions.Contains(r.ID) && r.Records.Any(re => filteredRecordsID.Contains(re.ID)) && rl.LanguageID == languageID && r.Type == TSM.Entity.RegionType.Geographical &&
                             r.IsDeleted == false && r.IsActive
                             select new
                {
                    Region = r,
                    RegionName = r.Region_Languages.Where(rec => r.Records.Any(re => filteredRecordsID.Contains(re.ID)) && rec.LanguageID == languageID).FirstOrDefault().Name,
                    RecordCount = r.Records.Where(re => recordIds.Contains(re.ID) &&
                                                  filteredRecordsID.Contains(re.ID)).Count()
                }).OrderBy(rls => rls.RegionName);


                foreach (var row in query)
                {
                    Region_Language regionLanguage = new Region_Language();
                    regionLanguage.ID          = row.Region.ID;
                    regionLanguage.Name        = row.RegionName;
                    regionLanguage.RecordCount = row.RecordCount;
                    regionLanguages.Add(regionLanguage);
                }
            }

            return(regionLanguages);
        }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="languageID"></param>
        /// <returns></returns>

        public static List <Region_Language> GetRecordsInRegion(Guid languageID)
        {
            List <Region_Language> regionLanguages = new List <Region_Language>();
            List <Region>          regions         = new List <Region>();
            string currentYear    = DateTime.Now.Year.ToString();
            Guid   yearVariableID = new Guid(AppSettingsUtility.GetString(AppSettingsKeys.YearVariableID));

            List <Guid> recordIds = GetActiveCurrentYearRecordsIDs(languageID);

            using (var context = new TSMContext())
            {
                var query = (from r in context.Regions.Include("Region_Languages")
                             join rl in context.Region_Languages
                             on r.ID equals rl.ID
                             where rl.LanguageID == languageID && r.Type == TSM.Entity.RegionType.Geographical &&
                             r.IsDeleted == false && r.IsActive
                             select new
                {
                    Region = r,
                    RegionName = r.Region_Languages.Where(rgl => rgl.LanguageID == languageID).FirstOrDefault().Name,
                    RecordCount = r.Records.Where(re => recordIds.Contains(re.ID)).Count()
                }).OrderBy(rls => rls.RegionName);


                foreach (var row in query)
                {
                    Region_Language regionLanguage = new Region_Language();
                    regionLanguage.ID          = row.Region.ID;
                    regionLanguage.Name        = row.RegionName;
                    regionLanguage.RecordCount = row.RecordCount;
                    regionLanguages.Add(regionLanguage);
                }
            }

            return(regionLanguages);
        }