/// <summary> /// Note. After this, the DataGroup will contain the groups of DataDetail /// </summary> /// <param name="fixedData"></param> /// <param name="nextGroupBy"></param> /// <param name="noOfReccursions"></param> /// <param name="thisGroupDataType">Eg. Year, Year-Month etc the constants listed to identify where you are coming from</param> /// <returns></returns> private List <DashBoardSingle> sql(DashBoardSingle dbs, string currGroupBy, string nextGroupBy) { if (dbs.IsNull()) { return(null); } var listOfDataGrouped = dbs .DataDetail .OrderBy(x => x.Key) .GroupBy(x => x.Key) .Select(y => new DashBoardSingle { Amount = GetDataFor(y.First().Key, dbs.DataDetail) .Count(), //we need to give a new key each time Key = makeKey(nextGroupBy, y.First().DateOfTrx, y.First().GroupBy, y.First().Name), Name = y.First().Name, NameCalculated = makeName(y.First().DateOfTrx, currGroupBy, y.First().ShowDataFor, y.First().Name), NameForSorting = makeNameForSorting(y.First().DateOfTrx, currGroupBy, y.First().ShowDataFor, y.First().Name), TotalAmount = dbs.DataDetail.Count(), //Percent = y.Count() == 0 ? 0 : (y.Count() / count) & 100, DataDetail = GetChildData( y.First().Key, dbs.DataDetail, nextGroupBy, dbs.BeginDate, dbs.EndDate, y.First().BelongsToGroup), //this is all the detail for this particular year. BeginDate = dbs.BeginDate, EndDate = dbs.EndDate, GroupBy = currGroupBy, ShowDataFor = y.First().ShowDataFor, BelongsToGroup = y.First().BelongsToGroup, }) .ToList(); return(listOfDataGrouped); }
/// <summary> /// This fixes the key of the main DataDetail /// </summary> /// <param name="dbs"></param> /// <param name="dataType"></param> /// <returns></returns> public DashBoardSingle Controller_FixKey(DashBoardSingle dbs, string dataType) { if (dbs.IsNull()) { return(dbs); } if (dbs.DataDetail.IsNull()) { return(dbs); } switch (dataType) { case GroupByConstants.MAIN: dbs = FixDataForMain(dbs); break; case GroupByConstants.YEAR: dbs = FixDataForYear(dbs); break; case GroupByConstants.YEAR_MONTH: dbs = FixDataForYearMonth(dbs); break; case GroupByConstants.YEAR_MONTH_DAY: dbs = FixDataForYearMonthDay(dbs); break; case GroupByConstants.YEAR_MONTH_DAY_HOUR: dbs = FixDataForYearMonthDayHour(dbs); break; case GroupByConstants.YEAR_MONTH_DAY_HOUR_MINUTE: dbs = FixDataForYearMonthDayHourMinute(dbs); break; case GroupByConstants.YEAR_MONTH_DAY_HOUR_MINUTE_SECOND: dbs = FixDataForYearMonthDayHourMinuteSecond(dbs); break; default: break; } return(dbs); }