protected void SetCalendar() { SiteData site = SiteData.CurrentSite; DateTime dtStart = Calendar1.CalendarDate.AddDays(1 - Calendar1.CalendarDate.Day).Date; DateTime dtEnd = dtStart.AddMonths(1).Date; dtStart = site.ConvertSiteTimeToUTC(dtStart); dtEnd = site.ConvertSiteTimeToUTC(dtEnd); using (CalendarDataContext db = CalendarDataContext.GetDataContext()) { List <vw_carrot_CalendarEvent> lst = (from c in db.vw_carrot_CalendarEvents where c.EventDate >= dtStart && c.EventDate < dtEnd && c.SiteID == SiteID orderby c.EventDate, c.EventStartTime select c).ToList(); lst.ForEach(x => x.EventDate = site.ConvertUTCToSiteTime(x.EventDate)); List <DateTime> dates = (from dd in lst select dd.EventDate.Date).Distinct().ToList(); Calendar1.HilightDateList = dates; CalendarHelper.BindDataBoundControl(dgEvents, lst); } }
protected void SetCalendar() { SiteData site = SiteData.CurrentSite; DateTime dtStart = Calendar1.CalendarDate.AddDays(1 - Calendar1.CalendarDate.Day).Date; DateTime dtEnd = dtStart.AddMonths(1).Date; dtStart = site.ConvertSiteTimeToUTC(dtStart); dtEnd = site.ConvertSiteTimeToUTC(dtEnd); List <vw_carrot_CalendarEvent> lst = null; using (CalendarDataContext db = CalendarDataContext.GetDataContext()) { lst = (from c in db.vw_carrot_CalendarEvents where c.EventDate >= dtStart && c.EventDate < dtEnd && c.SiteID == SiteID && c.IsPublic == true && (!c.IsCancelledEvent || c.IsCancelledPublic) && (!c.IsCancelledSeries || c.IsCancelledPublic) orderby c.EventDate ascending, c.EventStartTime ascending, c.IsCancelledEvent ascending select c).ToList(); } lst.ForEach(x => x.EventDate = site.ConvertUTCToSiteTime(x.EventDate)); List <DateTime> dates = (from dd in lst select dd.EventDate.Date).Distinct().ToList(); List <Guid> cats = (from dd in lst select dd.CalendarEventCategoryID).Distinct().ToList(); Calendar1.HilightDateList = dates; CalendarHelper.BindRepeater(rpEvent, lst); if (lst.Count > 0) { phNone.Visible = false; } else { phNone.Visible = true; } SetDDLSelections(); CalendarHelper.BindRepeater(rpCat, CalendarHelper.GetCalendarCategories(SiteID).Where(x => cats.Contains(x.CalendarEventCategoryID))); }
protected void SetCalendar() { SiteData site = SiteData.CurrentSite; DateTime dtStart = DateTime.Now.AddDays(DaysInPast).Date; DateTime dtEnd = DateTime.Now.AddDays(DaysInFuture).Date; dtStart = site.ConvertSiteTimeToUTC(dtStart); dtEnd = site.ConvertSiteTimeToUTC(dtEnd); using (CalendarDataContext db = CalendarDataContext.GetDataContext()) { var lst = (from c in db.vw_carrot_CalendarEvents where c.EventDate >= dtStart && c.EventDate <= dtEnd && c.SiteID == SiteID && c.IsPublic == true && (!c.IsCancelledEvent || c.IsCancelledPublic) && (!c.IsCancelledSeries || c.IsCancelledPublic) orderby c.EventDate, c.EventStartTime select c).Take(TakeTop).ToList(); lst.ForEach(x => x.EventDate = site.ConvertUTCToSiteTime(x.EventDate)); CalendarHelper.BindRepeater(rpDates, lst); } if (!string.IsNullOrEmpty(this.CalendarURL)) { lnkHyper.NavigateUrl = this.CalendarURL; phLink.Visible = true; } else { phLink.Visible = false; } }
protected static void InsertEventsFromList(CalendarDataContext ctx, CalendarEvent item, List <DateTime> lstDates) { SiteData site = SiteData.CurrentSite; foreach (DateTime date in lstDates) { carrot_CalendarEvent evt = new carrot_CalendarEvent { CalendarEventID = Guid.NewGuid(), CalendarEventProfileID = item.CalendarEventProfileID, EventDate = site.ConvertSiteTimeToUTC(date), IsCancelled = false }; ctx.carrot_CalendarEvents.InsertOnSubmit(evt); } }
public static void SaveFrequencies(CalendarDataContext ctx, CalendarEvent newItem, CalendarEvent oldItem) { SiteData site = SiteData.CurrentSite; DateTime todayDate = DateTime.UtcNow.Date; DateTime newStartDateTime = GetStartDateTimeFromItem(newItem); DateTime newEndDateTime = GetEndDateTimeFromItem(newItem); List <DateTime> eventDates = GetSequenceDates(todayDate, false, newItem); if (newItem.EventStartDate.Date <= todayDate.AddYears(-1) || newItem.EventStartDate.Date >= todayDate.AddMonths(6)) { eventDates = eventDates.Union(GetSequenceDates(todayDate, true, newItem)).Distinct().ToList(); } List <DateTime> eventUTCDates = (from d in eventDates select site.ConvertSiteTimeToUTC(d)).ToList(); if (oldItem.SiteID == Guid.Empty && oldItem.CalendarFrequencyID == Guid.Empty) { InsertEventsFromList(ctx, newItem, eventDates); } else { DateTime oldStartDateTime = GetStartDateTimeFromItem(oldItem); int iDays = GetDateDiffDays(newStartDateTime, oldStartDateTime); TimeSpan newTS = new TimeSpan(); if (newItem.EventStartTime.HasValue) { newTS = newItem.EventStartTime.Value; } TimeSpan oldTS = new TimeSpan(); if (oldItem.EventStartTime.HasValue) { oldTS = oldItem.EventStartTime.Value; } int iMin = GetDateDiffMinutes(newTS, oldTS); DateTime dateMax = (from d in eventUTCDates orderby d.Date descending where d.Date >= DateTime.UtcNow.Date select d).FirstOrDefault(); if (dateMax == DateTime.MinValue) { dateMax = DateTime.UtcNow.Date; } dateMax = site.ConvertSiteTimeToUTC(dateMax).Date; DateTime dStart = site.ConvertSiteTimeToUTC(newStartDateTime).Date; DateTime dEnd = site.ConvertSiteTimeToUTC(newEndDateTime).Date; int iFuture = (from d in eventUTCDates where d.Date >= DateTime.UtcNow.Date select d).Count(); int iMaxRange = (from c in ctx.carrot_CalendarEvents where c.CalendarEventProfileID == newItem.CalendarEventProfileID && c.EventDate.Date >= dateMax.Date select c.CalendarEventID).Count(); if (oldItem.Frequency != newItem.Frequency || oldItem.RecursEvery != newItem.RecursEvery || iMin != 0 || iDays != 0 || (iMaxRange != iFuture && iFuture > 0) || oldItem.EventEndDate.Date != newItem.EventEndDate.Date || oldItem.EventStartDate.Date != newItem.EventStartDate.Date) { var lstEvents = (from c in ctx.carrot_CalendarEvents orderby c.EventDate where c.CalendarEventProfileID == newItem.CalendarEventProfileID select c).ToList(); if (iDays != 0) { lstEvents.ForEach(x => x.EventDate = site.ConvertUTCToSiteTime(x.EventDate).Date); if (newItem.Frequency == FrequencyType.Daily || newItem.Frequency == FrequencyType.Once) { lstEvents.ForEach(x => x.EventDate = x.EventDate.Date.AddDays(iDays)); } if (newItem.Frequency == FrequencyType.Weekly) { int iDayShift = iDays; if (newItem.EventRepeatPattern != null) { iDayShift = 7 * GetDateDiffWeeks(newItem.EventStartDate, oldItem.EventStartDate); } lstEvents.ForEach(x => x.EventDate = x.EventDate.Date.AddDays(iDayShift)); } if (newItem.Frequency == FrequencyType.Monthly || newItem.Frequency == FrequencyType.Yearly) { int iMonths = GetDateDiffMonths(newItem.EventStartDate, oldItem.EventStartDate); lstEvents.ForEach(x => x.EventDate = x.EventDate.AddMonths(iMonths).Date); } if (newItem.Frequency == oldItem.Frequency && (newItem.Frequency == FrequencyType.Monthly || newItem.Frequency == FrequencyType.Yearly)) { lstEvents.ForEach(x => x.EventDate = CorrectMonthlyYearlyDate(x.EventDate, newItem.EventStartDate.Day).Date); } lstEvents.ForEach(x => x.EventDate = site.ConvertSiteTimeToUTC(x.EventDate)); } var lstDel = (from l in lstEvents orderby l.EventDate where l.EventDate.Date <dStart || l.EventDate.Date> dEnd || !eventUTCDates.Contains(l.EventDate) select l).ToList(); lstDel.RemoveAll(l => eventUTCDates.Contains(l.EventDate)); ctx.carrot_CalendarEvents.DeleteAllOnSubmit(lstDel); var lstExist = (from l in lstEvents select site.ConvertUTCToSiteTime(l.EventDate).Date).Distinct().ToList(); var lstAdd = (from d in eventDates where !lstExist.Contains(d.Date) select d).ToList(); InsertEventsFromList(ctx, newItem, lstAdd); } } }