//gets bar graph data for a specific customer public IEnumerable <TransDateCount> GetBar(int id, DateTime date1, DateTime date2) { date1 = date1.ToUniversalTime(); date2 = date2.ToUniversalTime(); List <TransDateCount> transDateCount = new List <TransDateCount>(); while (date1 != date2.AddDays(1)) { //must restrict the date to one day as a time as == doesn't work with DateTime objects //must use theninclude because we are referencing the navigation property of account to get customer //group by statement converts the datetime to date DateTime dayAfter = date1.AddDays(1); var amount = _context.Transaction. Include(x => x.AccountNumberNavigation). ThenInclude(a => a.Customer). Where(x => x.AccountNumberNavigation.CustomerId == id && x.ModifyDate >= date1 && x.ModifyDate <= dayAfter). GroupBy(x => x.ModifyDate.Date). Select(x => x.Count()). FirstOrDefault(); //adds a new object where the date has been reconverted to local time instead of UTC DateTime localDate = date1.ToLocalTime(); TransDateCount dateCount = new TransDateCount(localDate, amount); transDateCount.Add(dateCount); date1 = dayAfter; } return(transDateCount); }
//gets bar graph data for all customers public IEnumerable <TransDateCount> GetBarAll(DateTime date1, DateTime date2) { date1 = date1.ToUniversalTime(); date2 = date2.ToUniversalTime(); List <TransDateCount> transDateCount = new List <TransDateCount>(); while (date1 != date2.AddDays(1)) { //must restrict the date to one day as a time as == doesn't work with DateTime objects //group by statement converts the datetime to date DateTime dayAfter = date1.AddDays(1); var amount = _context.Transaction. Where(x => x.ModifyDate >= date1 && x.ModifyDate <= dayAfter). GroupBy(x => x.ModifyDate.Date). Select(x => x.Count()). FirstOrDefault(); //adds a new object where the date has been reconverted to local time instead of UTC DateTime localDate = date1.ToLocalTime(); TransDateCount dateCount = new TransDateCount(localDate, amount); transDateCount.Add(dateCount); date1 = dayAfter; } return(transDateCount); }