예제 #1
0
        private void ProcessReminders(bool isReminderModified)
        {
            bool       flag      = false;
            bool       flag2     = false;
            bool       flag3     = false;
            bool       flag4     = base.IsParameterSet("LRT");
            ExDateTime localTime = DateTimeUtilities.GetLocalTime();

            if (!base.UserContext.IsRemindersSessionStarted || !flag4)
            {
                base.UserContext.IsRemindersSessionStarted = true;
                flag2 = true;
            }
            if (flag4)
            {
                ExDateTime dt = (ExDateTime)base.GetParameter("LRT");
                if ((int)(ExDateTime.UtcNow - dt).TotalHours > 12)
                {
                    flag = true;
                }
            }
            int num = (int)localTime.Bias.TotalMinutes;

            if (num != base.UserContext.RemindersTimeZoneOffset)
            {
                base.UserContext.RemindersTimeZoneOffset = num;
                flag3 = true;
            }
            if (flag || flag2 || isReminderModified)
            {
                this.Writer.Write("rmNotfy(");
                this.Writer.Write(num);
                this.Writer.Write(", 1, \"");
                Utilities.JavascriptEncode(DateTimeUtilities.GetJavascriptDate(localTime), this.Writer);
                this.Writer.Write("\", \"");
                bool reminderItems = RemindersRenderingUtilities.GetReminderItems(localTime, this.Writer);
                if (reminderItems)
                {
                    this.Writer.Write("\", \"");
                    Utilities.JavascriptEncode(LocalizedStrings.GetHtmlEncoded(-1707229168), this.Writer);
                }
                this.Writer.Write("\");");
                return;
            }
            if (flag3)
            {
                this.Writer.Write("rmNotfy(");
                this.Writer.Write(num);
                this.Writer.Write(", 0, \"\");");
            }
        }
        public static List <object[]> QueryReminders(ExDateTime actualizationTime, UserContext userContext)
        {
            List <object[]> list = new List <object[]>();

            object[][]       array            = null;
            ComparisonFilter comparisonFilter = new ComparisonFilter(ComparisonOperator.LessThan, ItemSchema.ReminderNextTime, actualizationTime.AddHours(24.0));

            if (userContext.IsPushNotificationsEnabled)
            {
                array = userContext.MapiNotificationManager.GetReminderRows(comparisonFilter, 100);
            }
            else
            {
                using (SearchFolder searchFolder = SearchFolder.Bind(userContext.MailboxSession, DefaultFolderType.Reminders))
                {
                    SortBy[] sortColumns = new SortBy[]
                    {
                        new SortBy(ItemSchema.ReminderIsSet, SortOrder.Descending),
                        new SortBy(ItemSchema.ReminderNextTime, SortOrder.Descending)
                    };
                    using (QueryResult queryResult = searchFolder.ItemQuery(ItemQueryType.None, null, sortColumns, RemindersRenderingUtilities.QueryProperties))
                    {
                        queryResult.SeekToCondition(SeekReference.OriginBeginning, comparisonFilter);
                        array = queryResult.GetRows(100);
                    }
                }
            }
            if (array == null)
            {
                return(list);
            }
            for (int i = 0; i < array.Length; i++)
            {
                bool itemProperty = RemindersRenderingUtilities.GetItemProperty <bool>(array[i], ItemSchema.ReminderIsSet, false);
                if (!itemProperty)
                {
                    break;
                }
                list.Add(array[i]);
                if (list.Count == 100)
                {
                    break;
                }
            }
            return(list);
        }
        internal static bool GetReminderItemsInternal(UserContext userContext, ExDateTime actualizationTime, TextWriter output)
        {
            bool            result = false;
            string          name   = userContext.UserCulture.Name;
            List <object[]> list   = RemindersRenderingUtilities.QueryReminders(actualizationTime, userContext);

            if (list.Count == 0)
            {
                return(false);
            }
            foreach (object[] reminder in list)
            {
                ExDateTime exDateTime  = RemindersRenderingUtilities.GetItemProperty <ExDateTime>(reminder, ItemSchema.ReminderDueBy, ExDateTime.MinValue);
                ExDateTime exDateTime2 = RemindersRenderingUtilities.GetItemProperty <ExDateTime>(reminder, ItemSchema.ReminderNextTime, ExDateTime.MinValue);
                if (!(exDateTime == ExDateTime.MinValue) && !(exDateTime2 == ExDateTime.MinValue) && !(exDateTime2 == RemindersRenderingUtilities.MaxOutlookDate))
                {
                    string itemProperty  = RemindersRenderingUtilities.GetItemProperty <string>(reminder, StoreObjectSchema.ItemClass, string.Empty);
                    bool   itemProperty2 = RemindersRenderingUtilities.GetItemProperty <bool>(reminder, MessageItemSchema.IsDraft, false);
                    int    itemProperty3 = RemindersRenderingUtilities.GetItemProperty <int>(reminder, MessageItemSchema.SwappedToDoStore, -1);
                    if (itemProperty.IndexOf("IPM.Schedule.Meeting", StringComparison.OrdinalIgnoreCase) == -1 && (itemProperty.IndexOf("IPM.Note", StringComparison.OrdinalIgnoreCase) == -1 || !itemProperty2) && itemProperty3 == -1)
                    {
                        ExDateTime itemProperty4 = RemindersRenderingUtilities.GetItemProperty <ExDateTime>(reminder, CalendarItemInstanceSchema.StartTime, ExDateTime.MinValue);
                        ExDateTime itemProperty5 = RemindersRenderingUtilities.GetItemProperty <ExDateTime>(reminder, CalendarItemInstanceSchema.EndTime, ExDateTime.MinValue);
                        int        num           = (int)(itemProperty5 - itemProperty4).TotalMinutes;
                        if (num < 0)
                        {
                            num = 0;
                        }
                        bool        flag          = ObjectClass.IsCalendarItem(itemProperty);
                        VersionedId itemProperty6 = RemindersRenderingUtilities.GetItemProperty <VersionedId>(reminder, ItemSchema.Id);
                        bool        flag2         = false;
                        if (flag)
                        {
                            CalendarItemType itemProperty7 = RemindersRenderingUtilities.GetItemProperty <CalendarItemType>(reminder, CalendarItemBaseSchema.CalendarItemType, CalendarItemType.Single);
                            flag2 = (itemProperty7 == CalendarItemType.RecurringMaster);
                        }
                        VersionedId versionedId = null;
                        string      text;
                        string      text2;
                        if (flag2)
                        {
                            CalendarItemOccurrence calendarItemOccurrence = null;
                            Item item = null;
                            try
                            {
                                try
                                {
                                    item = Utilities.GetItem <Item>(userContext, itemProperty6.ObjectId, new PropertyDefinition[0]);
                                    if (item.Reminder != null)
                                    {
                                        calendarItemOccurrence = (item.Reminder.GetPertinentItem(actualizationTime) as CalendarItemOccurrence);
                                    }
                                    if (calendarItemOccurrence == null)
                                    {
                                        continue;
                                    }
                                    object obj  = calendarItemOccurrence.Reminder.DueBy;
                                    object obj2 = calendarItemOccurrence.Reminder.ReminderNextTime;
                                    if (obj == null || obj2 == null)
                                    {
                                        continue;
                                    }
                                    exDateTime2 = (ExDateTime)obj2;
                                    exDateTime  = (ExDateTime)obj;
                                    versionedId = calendarItemOccurrence.Id;
                                    text        = calendarItemOccurrence.Subject;
                                    text2       = calendarItemOccurrence.Location;
                                }
                                catch (StoragePermanentException ex)
                                {
                                    ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Unable to retrieve calendar item occurence for this reminder.  Exception: {0}", ex.Message);
                                    result = true;
                                    continue;
                                }
                                catch (StorageTransientException ex2)
                                {
                                    ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Unable to retrieve calendar item occurence for this reminder.  Exception: {0}", ex2.Message);
                                    result = true;
                                    continue;
                                }
                                goto IL_289;
                            }
                            finally
                            {
                                if (item != null)
                                {
                                    item.Dispose();
                                    item = null;
                                }
                                if (calendarItemOccurrence != null)
                                {
                                    calendarItemOccurrence.Dispose();
                                    calendarItemOccurrence = null;
                                }
                            }
                            goto IL_26D;
                        }
                        goto IL_26D;
IL_289:
                        using (StringWriter stringWriter = new StringWriter())
                        {
                            stringWriter.Write("<div _lnk=1 class=\"divNotificationsItem\" id=\"b");
                            Utilities.HtmlEncode(itemProperty6.ObjectId.ToBase64String(), stringWriter);
                            stringWriter.Write("\" ck=\"");
                            Utilities.HtmlEncode(itemProperty6.ChangeKeyAsBase64String(), stringWriter);
                            if (flag2)
                            {
                                stringWriter.Write("\" oid=\"");
                                Utilities.HtmlEncode(versionedId.ObjectId.ToBase64String(), stringWriter);
                            }
                            stringWriter.Write("\" t=\"");
                            Utilities.HtmlEncode(DateTimeUtilities.GetJavascriptDate(exDateTime), stringWriter);
                            stringWriter.Write("\" c=\"");
                            Utilities.HtmlEncode(itemProperty, stringWriter);
                            stringWriter.Write("\" r=\"");
                            Utilities.HtmlEncode(DateTimeUtilities.GetJavascriptDate(exDateTime2), stringWriter);
                            stringWriter.Write("\" d=\"");
                            stringWriter.Write(num);
                            SanitizedHtmlString sanitizedHtmlString = null;
                            if (!string.IsNullOrEmpty(text))
                            {
                                sanitizedHtmlString = Utilities.SanitizeHtmlEncode(text);
                            }
                            SanitizedHtmlString sanitizedHtmlString2 = null;
                            if (!string.IsNullOrEmpty(text2))
                            {
                                sanitizedHtmlString2 = Utilities.SanitizeHtmlEncode(text2);
                            }
                            stringWriter.Write("\" subj=\"");
                            stringWriter.Write(sanitizedHtmlString);
                            stringWriter.Write("\" loc=\"");
                            stringWriter.Write(sanitizedHtmlString2);
                            string text3 = string.Format(userContext.UserCulture, LocalizedStrings.GetHtmlEncodedFromKey(name, 580192567), new object[]
                            {
                                Utilities.HtmlEncode(exDateTime.ToString(DateTimeFormatInfo.CurrentInfo.LongDatePattern)),
                                Utilities.HtmlEncode(exDateTime.ToString(userContext.UserOptions.TimeFormat))
                            });
                            stringWriter.Write("\" due=\"");
                            stringWriter.Write(text3);
                            stringWriter.Write("\" tabindex=0>");
                            SmallIconManager.RenderItemIcon(stringWriter, userContext, itemProperty, false, -1, string.Empty, new string[]
                            {
                                "id=\"imgNtfyEnt\""
                            });
                            stringWriter.Write("<DIV id=\"c3\" class=\"divNotificationsColumn3\"><div id=\"c3Time\" class=\"divRemindersDueInTime\"></div><div id=\"c3Text\" class=\"divRemindersDueInText\"></div></div>");
                            stringWriter.Write("<DIV id=\"c2\" class=\"divNotificationsColumn2\"><div id=\"c2Time\" class=\"divRemindersDueInTime\"></div><div id=\"c2Text\" class=\"divRemindersDueInText\"></div></div>");
                            stringWriter.Write("<DIV id=\"c1\" class=\"divNotificationsColumn1\"><div id=\"c1Row1\" class=\"divNotificationsColumn1Row1\">{0}</div><div id=\"c1Row2\" class=\"divNotificationsColumn1Row2\">{1}</div>", (sanitizedHtmlString != null) ? sanitizedHtmlString.ToString() : string.Empty, text3);
                            if (sanitizedHtmlString2 != null)
                            {
                                stringWriter.Write("<div id=\"c1Row3\" class=\"divNotificationsColumn1Row3\">");
                                stringWriter.Write(sanitizedHtmlString2);
                                stringWriter.Write("</div>");
                            }
                            stringWriter.Write("</div></div>");
                            Utilities.JavascriptEncode(stringWriter.ToString(), output);
                        }
                        continue;
IL_26D:
                        text  = RemindersRenderingUtilities.GetItemProperty <string>(reminder, ItemSchema.Subject, null);
                        text2 = RemindersRenderingUtilities.GetItemProperty <string>(reminder, CalendarItemBaseSchema.Location, null);
                        goto IL_289;
                    }
                }
            }
            return(result);
        }
 internal static bool GetReminderItems(UserContext userContext, ExDateTime actualizationTime, TextWriter output)
 {
     return(RemindersRenderingUtilities.GetReminderItemsInternal(userContext, actualizationTime, output));
 }
        public static void RenderRemindersMenu(UserContext userContext, TextWriter output)
        {
            if (output == null)
            {
                throw new ArgumentNullException("output");
            }
            if (userContext == null)
            {
                throw new ArgumentNullException("userContext");
            }
            Culture.SingularPluralRegularExpression singularPluralRegularExpressions = Culture.GetSingularPluralRegularExpressions(Thread.CurrentThread.CurrentUICulture.LCID);
            StringBuilder stringBuilder = new StringBuilder("re1=\"");

            stringBuilder.Append(singularPluralRegularExpressions.SingularExpression);
            stringBuilder.Append("\" re2=\"");
            stringBuilder.Append(singularPluralRegularExpressions.PluralExpression);
            stringBuilder.Append("\" fSoundEnabled=\"");
            stringBuilder.Append(userContext.UserOptions.EnableReminderSound ? "1" : "0");
            int value = (int)DateTimeUtilities.GetLocalTime().Bias.TotalMinutes;

            stringBuilder.Append("\" iTimeOffset=\"");
            stringBuilder.Append(value);
            stringBuilder.Append("\" rgTU=\"");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(-632713499));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(1401635374));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(-2005924231));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(-993448055));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(2108503220));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(-713621139));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(527281145));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(-1099158712));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(845856285));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(1605214999));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(-242484566));
            stringBuilder.Append(",");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(2014322819));
            stringBuilder.Append("\" sNow=\"");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(367075512));
            stringBuilder.Append("\"");
            stringBuilder.Append("\" sOverdue=\"");
            stringBuilder.Append(LocalizedStrings.GetHtmlEncoded(570999474));
            stringBuilder.Append("\"");
            StringBuilder stringBuilder2 = new StringBuilder();

            userContext.RenderThemeImage(stringBuilder2, ThemeFileId.ShadowDivLeft, "shadow-div-left", new object[0]);
            stringBuilder2.Append("<div class=\"shadow-div-tile\"></div>");
            userContext.RenderThemeImage(stringBuilder2, ThemeFileId.ShadowDivRight, "shadow-div-right", new object[0]);
            stringBuilder2.Append("<DIV class=\"divRemindersSnoozeGradient\"><div class=\"divRemindersSnoozeRegion\"><a id=\"divBtnSnooze\" class=\"aRemindersSnoozeButton\">");
            stringBuilder2.Append(LocalizedStrings.GetHtmlEncoded(-1327887096));
            stringBuilder2.Append("</a>");
            StringBuilder stringBuilder3 = new StringBuilder();

            using (StringWriter stringWriter = new StringWriter(stringBuilder3))
            {
                RemindersRenderingUtilities.RenderSnoozeDropDownList(stringWriter);
            }
            stringBuilder2.Append(stringBuilder3.ToString());
            stringBuilder2.Append("</div></div>");
            NotificationRenderingUtilities.RenderNotificationMenu(userContext, output, "divRmd", stringBuilder.ToString(), 1299349449, -1018465893, "divBtnDismissall", -1788659265, "divBtnDismiss", 1178588418, "divBtnOpenReminder", -669845619, stringBuilder2.ToString());
        }