Exemple #1
0
        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)));
        }
Exemple #3
0
        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;
            }
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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);
                }
            }
        }