/// <summary> /// Renvoi les informations des cours d'une classe pour une semaine /// </summary> /// <param name="classId">ID de la Classe</param> /// <param name="scheduleDate">Une date de cette Semaine</param> /// <returns></returns> public ConcurrentBag <DayCoursCards> GetClassWeekAgendaData(Guid classId, DateTime scheduleDate) { scheduleDate = scheduleDate.Date; var firstDateOfWeek = scheduleDate.DayOfWeek == DayOfWeek.Sunday ? scheduleDate.AddDays(-6) : scheduleDate.AddDays(-((int)scheduleDate.DayOfWeek - 1)); var scheduleData = new ConcurrentBag <DayCoursCards>(); var days = new HashSet <DateTime>(); for (var i = 0; i <= 6; i++) { days.Add(firstDateOfWeek.AddDays(i)); } Parallel.ForEach(days, d => { var dayCard = new DayCoursCards(classId, d); if (dayCard.DayDate.Equals(scheduleDate) && scheduleDate != DateTime.Today) { dayCard.DayColor = "Brown"; } if (dayCard.DayCours.Any()) { scheduleData.Add(dayCard); } }); return(new ConcurrentBag <DayCoursCards>(scheduleData.OrderByDescending(d => d.DayDate))); }
/// <summary> /// Emploi du Temps d un Staff /// </summary> /// <param name="staffGuid"></param> /// <param name="currentDate"></param> /// <param name="scheduleType"></param> /// <returns></returns> public IEnumerable GetStaffSchedule(Guid staffGuid, DateTime?currentDate, ScheduleType?scheduleType = ScheduleType.Weekly) { var scheduleDate = currentDate?.Date ?? DateTime.Today; var scheduleData = new ConcurrentBag <DayCoursCards>(); var days = new HashSet <DateTime>(); if (scheduleType == ScheduleType.Weekly) { var firstDateOfWeek = scheduleDate.DayOfWeek == DayOfWeek.Sunday ? scheduleDate.AddDays(-6) : scheduleDate.AddDays(-((int)scheduleDate.DayOfWeek - 1)); for (var i = 0; i <= 6; i++) { days.Add(firstDateOfWeek.AddDays(i)); } } else { days.Add(scheduleDate); } Parallel.ForEach(days, d => { var dayCard = new DayCoursCards(staffGuid, d, true); if (dayCard.DayDate.Equals(scheduleDate) && scheduleDate != DateTime.Today) { dayCard.DayColor = "#894769"; } if (dayCard.DayCours.Any()) { scheduleData.Add(dayCard); } }); return(scheduleData.OrderBy(d => d.DayDate)); }