public IEnumerable <EventDetails> GetEventSchedules(int year, int month, int date, int crewid) { try { //int crewid = 3; DateTime selectedDate = new DateTime(year, month, date); DateTime from = GetFirstDayOfWeek(selectedDate, null); List <EventDetails> eventDetails = new List <EventDetails>(); var service = new EventService(); var eventSchedules = service.GetEventsForCrewForDay(from, crewid); foreach (var eventVal in eventSchedules) { EventTaskList propTask = db.EventTaskLists.Include("Crew").Include("Property").Include("EventTaskTimes").Single(pt => pt.Id == eventVal.EventTaskListId); if (propTask.Crew == null) { continue; } Crew crewVal = propTask.Crew; if (crewVal == null) { continue; } if (!string.IsNullOrEmpty(eventVal.RecurrenceRule)) { var pattern = new RecurrencePattern(eventVal.RecurrenceRule); var evaluator = new RecurrencePatternEvaluator(pattern); var items = evaluator.Evaluate(new CalDateTime(eventVal.StartTime), eventVal.StartTime, eventVal.StartTime.AddYears(5), false); if (!items.Any(i => i.StartTime.Date == selectedDate)) { continue; } } else { if (eventVal.StartTime.AddDays(-1) > selectedDate || eventVal.EndTime < selectedDate) { continue; } } EventDetails eventDetail = new EventDetails(); TimeZoneInfo estZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); eventDetail.EventId = eventVal.Id; eventDetail.StartTime = TimeZoneInfo.ConvertTimeFromUtc(eventVal.StartTime, estZone); eventDetail.EndTime = TimeZoneInfo.ConvertTimeFromUtc(eventVal.EndTime, estZone); eventDetail.ActualEndTime = eventVal.ActualEndTime; eventDetail.ActualStartTime = eventVal.ActualStartTime; eventDetail.IsAllDay = eventVal.IsAllDay; eventDetail.RecurrenceRule = eventVal.RecurrenceRule; eventDetail.RecurrenceID = eventVal.RecurrenceID; eventDetail.RecurrenceException = eventVal.RecurrenceException; eventDetail.StartTimezone = eventVal.StartTimezone; eventDetail.EndTimezone = eventVal.EndTimezone; eventDetail.Status = (StatusEnum)eventVal.Status; eventDetail.Title = eventVal.Title; eventVal.EventTaskList = propTask; eventDetail.TaskId = propTask.Id; eventDetail.EventTaskListId = eventVal.EventTaskListId; eventDetail.PropertyId = propTask.Property.Id; eventDetail.PropertyAddress = propTask.Property.Address1 + " " + propTask.Property.Address2 + " " + propTask.Property.City.Name + " " + propTask.Property.State + " " + propTask.Property.Zip; eventDetail.PropertyName = eventVal.EventTaskList.Property.Name; eventDetail.PropertyRefNumber = eventVal.EventTaskList.Property.PropertyRefNumber; var eventTaskTime = propTask.EventTaskTimes.FirstOrDefault(e => e.EventDate.Subtract(selectedDate) == TimeSpan.Zero); if (eventTaskTime != null) { eventDetail.TaskStartTime = eventTaskTime.StartTime; eventDetail.TaskEndTime = eventTaskTime.EndTime; } eventDetails.Add(eventDetail); } return(eventDetails.OrderBy(e => e.StartTime)); } catch (Exception ex) { throw ex; } }
public IEnumerable <EventDetails> GetEventSchedulesForCrew(int crewid) { try { //int crewid = 3; DateTime selectedDate = DateTime.Now; DateTime from = DateTime.Now.AddYears(-1); DateTime to = DateTime.Now.AddYears(1); List <EventDetails> eventDetails = new List <EventDetails>(); var eventSchedules = db.EventSchedules.Where(ev => (ev.StartTime <= from) && (ev.EndTime >= from) || (ev.StartTime <= to) && (ev.EndTime >= to) || (ev.StartTime >= from) && (ev.EndTime <= to) ).OrderBy(e => e.StartTime).ToList(); foreach (var eventVal in eventSchedules) { var eventTaskLists = db.EventTaskLists.Single(pt => pt.Id == eventVal.EventTaskListId); if (eventTaskLists.Crew == null || eventTaskLists.CrewId != crewid) { continue; } Crew crewVal = eventTaskLists.Crew; if (crewVal == null) { continue; } EventDetails eventDetail = new EventDetails(); eventDetail.EventId = eventVal.Id; eventDetail.StartTime = eventVal.StartTime; eventDetail.EndTime = eventVal.EndTime; eventDetail.ActualEndTime = eventVal.ActualEndTime; eventDetail.ActualStartTime = eventVal.ActualStartTime; eventDetail.IsAllDay = eventVal.IsAllDay; eventDetail.RecurrenceRule = eventVal.RecurrenceRule; eventDetail.RecurrenceID = eventVal.RecurrenceID; eventDetail.RecurrenceException = eventVal.RecurrenceException; eventDetail.StartTimezone = eventVal.StartTimezone; eventDetail.EndTimezone = eventVal.EndTimezone; eventDetail.Status = (StatusEnum)eventVal.Status; eventDetail.Title = eventVal.Title; eventVal.EventTaskList = eventTaskLists; eventDetail.TaskId = eventTaskLists.Id; eventDetail.PropertyId = eventTaskLists.Property.Id; eventDetail.PropertyAddress = eventTaskLists.Property.Address1 + " " + eventTaskLists.Property.Address2 + " " + eventTaskLists.Property.City.Name + " " + eventTaskLists.Property.State + " " + eventTaskLists.Property.Zip; eventDetail.PropertyName = eventVal.EventTaskList.Property.Name; eventDetail.PropertyRefNumber = eventVal.EventTaskList.Property.PropertyRefNumber; eventDetail.Crew = crewVal; eventDetails.Add(eventDetail); } return(eventDetails); } catch (Exception ex) { throw ex; } }