//returns list of CalDayData for month of 'date'
        //should be 6 x 7  (42) items long
        public List <CalDayData> GetCalendarViewData(string username, DateTime date)
        {
            List <CalDayData> dayList = new List <CalDayData>();

            try
            {
                //param date could be anything.  Move it to the first day of the month
                DateTime dte = new DateTime(date.Year, date.Month, 1);

                //what day of week is this? (dow)
                DayOfWeek dow = dte.DayOfWeek;

                //count backwards until we hit monday. (our calendar is Mon >> Sun)
                while (dow != DayOfWeek.Monday)
                {
                    dte = dte.AddDays(-1);
                    dow = dte.DayOfWeek;
                }
                Console.WriteLine("FirstDayOfMonth: " + dte.ToString("yyyy-MM-dd ddd"));

                //dte now equals the first cell of the calendar.
                DateTime ldte = dte.LastDayOfTheMonth();
                dow = ldte.DayOfWeek;
                while (dow != DayOfWeek.Sunday)
                {
                    ldte = ldte.AddDays(1);
                    dow  = ldte.DayOfWeek;
                }

                Random r = new Random();
                //get all the information between the required dates
                //SELECT * FROM table WHERE username = '' AND date >= dte AND date <= ldte
                int daysBetween = 42;//(int)ldte.Subtract(dte).TotalDays;
                for (int i = 0; i < daysBetween; i++)
                {
                    CalDayData dd = new CalDayData();
                    dd.CalDay    = dte.AddDays(i);
                    dd.HrsWorked = Math.Round((decimal)(r.Next(6, 10) / 0.9));

                    int allocEqual = r.Next(0, 1);
                    if (allocEqual > 0)
                    {
                        dd.HrsAllocated = Math.Round((decimal)(r.Next(6, 10) / 0.9));
                    }
                    else
                    {
                        dd.HrsAllocated = dd.HrsWorked;
                    }
                    dd.Username = username;
                    // ws.HrsBreak = Math.Round((decimal)(r.Next(0, 45) / 60));

                    dayList.Add(dd);
                }
            } catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            return(dayList);
        }
        public async Task <ActionResult <List <CalDayData> > > GetMonthData(DateTime date)
        {
            List <CalDayData> dayList = new List <CalDayData>();

            Console.WriteLine("Getting Month Data for: " + date.ToString());

            try
            {
                //param date could be anything.  Move it to the first day of the month
                //DateTime dt = DateTime.Parse(date);
                DateTime dte = new DateTime(date.Year, date.Month, 1);

                //what day of week is this? (dow)
                DayOfWeek dow = dte.DayOfWeek;

                //count backwards until we hit monday. (our calendar is Mon >> Sun)
                while (dow != DayOfWeek.Monday)
                {
                    dte = dte.AddDays(-1);
                    dow = dte.DayOfWeek;
                }
                Console.WriteLine("FirstDayOfMonth: " + dte.ToString("yyyy-MM-dd ddd"));

                //dte now equals the first cell of the calendar.
                DateTime ldte = dte.LastDayOfTheMonth();
                dow = ldte.DayOfWeek;
                while (dow != DayOfWeek.Sunday)
                {
                    ldte = ldte.AddDays(1);
                    dow  = ldte.DayOfWeek;
                }

                //get all the information between the required dates
                //SELECT * FROM table WHERE username = '' AND date >= dte AND date <= ldte
                int daysBetween = 42;//(int)ldte.Subtract(dte).TotalDays;
                for (int i = 0; i < daysBetween; i++)
                {
                    CalDayData dd = new CalDayData();
                    dd.CalDay = dte.AddDays(i);

                    var result = await context.WorkShifts.Where(q => q.ShiftDate == dd.CalDay).FirstOrDefaultAsync();

                    if (result != null)
                    {
                        dd.HrsWorked    = result.HrsNorm;
                        dd.HrsAllocated = 0; //todo: needs to be implemented
                        dd.Username     = result.Username;
                        dayList.Add(dd);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            return(dayList);
        }