//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);
        }