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