Example #1
0
        private bool TryProcessSubscriptionRequest(FblRequestParameters fblRequestParameters)
        {
            if (fblRequestParameters == null)
            {
                return(false);
            }
            ExPerformanceCounter exPerformanceCounter       = fblRequestParameters.OptIn ? FBLPerfCounters.NumberOfFblOptInRequestsReceived : FBLPerfCounters.NumberOfFblOptOutRequestsReceived;
            ExPerformanceCounter successSubscriptionCounter = fblRequestParameters.OptIn ? FBLPerfCounters.NumberOfFblOptInRequestsSuccessfullyProcessed : FBLPerfCounters.NumberOfFblOptOutRequestsSuccessfullyProcessed;
            ExPerformanceCounter failedSubscriptionCounter  = fblRequestParameters.OptIn ? FBLPerfCounters.NumberOfFblOptInRequestsFailed : FBLPerfCounters.NumberOfFblOptOutRequestsFailed;

            try
            {
                FBLPerfCounters.NumberOfFblSubscriptionRequestsReceived.Increment();
                exPerformanceCounter.Increment();
                ADUser aduser = this.GetADUser(fblRequestParameters.Puid, fblRequestParameters.PrimaryEmail);
                if (aduser == null || !this.TryUpdateMservEntry(aduser, fblRequestParameters))
                {
                    FBLPerfCounters.NumberOfFblSubscriptionRequestsFailed.Increment();
                    failedSubscriptionCounter.Increment();
                    return(false);
                }
                Task.Factory.StartNew(delegate()
                {
                    if (this.TryPrepareAndSendXmrMessage(fblRequestParameters, "*****@*****.**"))
                    {
                        FBLPerfCounters.NumberOfFblSubscriptionRequestsSuccessfullyProcessed.Increment();
                        successSubscriptionCounter.Increment();
                        return;
                    }
                    FBLPerfCounters.NumberOfFblSubscriptionRequestsFailed.Increment();
                    failedSubscriptionCounter.Increment();
                }).ContinueWith(delegate(Task t)
                {
                    if (t.Exception != null)
                    {
                        FBLPerfCounters.NumberOfFblSubscriptionRequestsFailed.Increment();
                        failedSubscriptionCounter.Increment();
                        Exception innerException = t.Exception.Flatten().InnerException;
                        LoggingUtilities.LogEvent(ClientsEventLogConstants.Tuple_FblUnableToProcessRequest, new object[]
                        {
                            innerException
                        });
                    }
                }, TaskContinuationOptions.OnlyOnFaulted);
            }
            catch (Exception ex)
            {
                FBLPerfCounters.NumberOfFblSubscriptionRequestsFailed.Increment();
                failedSubscriptionCounter.Increment();
                LoggingUtilities.LogEvent(ClientsEventLogConstants.Tuple_FblUnableToProcessRequest, new object[]
                {
                    ex.InnerException ?? ex
                });
                return(false);
            }
            return(true);
        }
        // Token: 0x06001122 RID: 4386 RVA: 0x000470CC File Offset: 0x000452CC
        private static TimeZoneOffsets.TimeZoneOffsetTable BuildCache(int startYear, int endYear, ExPerformanceCounter performanceCounter)
        {
            if (performanceCounter != null)
            {
                performanceCounter.Increment();
            }
            TimeZoneOffsets.TimeZoneOffsetTable timeZoneOffsetTable = new TimeZoneOffsets.TimeZoneOffsetTable();
            timeZoneOffsetTable.StartYear = startYear;
            timeZoneOffsetTable.EndYear   = endYear;
            List <TimeZoneOffset> list = new List <TimeZoneOffset>();

            foreach (ExTimeZone exTimeZone in ExTimeZoneEnumerator.Instance)
            {
                TimeZoneOffset timeZoneOffset = new TimeZoneOffset();
                timeZoneOffset.TimeZoneId = exTimeZone.Id;
                List <TimeZoneRange> list2      = new List <TimeZoneRange>();
                ExDateTime           t          = new ExDateTime(ExTimeZone.UtcTimeZone, endYear + 1, 1, 1);
                ExDateTime           exDateTime = new ExDateTime(ExTimeZone.UtcTimeZone, startYear, 1, 1);
                for (;;)
                {
                    int num = (int)exTimeZone.ConvertDateTime(exDateTime).Bias.TotalMinutes;
                    list2.Add(new TimeZoneRange
                    {
                        UtcTime = exDateTime,
                        Offset  = num
                    });
                    TimeSpan timeSpan  = TimeSpan.Zero;
                    TimeSpan timeSpan2 = TimeSpan.Zero;
                    while (exDateTime + timeSpan < t && exTimeZone.ConvertDateTime(exDateTime + timeSpan2).Bias.TotalMinutes == (double)num)
                    {
                        timeSpan  = timeSpan2;
                        timeSpan2 = timeSpan2.Add(TimeSpan.FromDays(7.0));
                    }
                    if (exDateTime + timeSpan >= t)
                    {
                        break;
                    }
                    while ((timeSpan2 - timeSpan).TotalMilliseconds > 1.0)
                    {
                        TimeSpan timeSpan3 = timeSpan.Add(TimeSpan.FromMilliseconds((timeSpan2.TotalMilliseconds - timeSpan.TotalMilliseconds) / 2.0));
                        if (exTimeZone.ConvertDateTime(exDateTime + timeSpan3).Bias.TotalMinutes == (double)num)
                        {
                            timeSpan = timeSpan3;
                        }
                        else
                        {
                            timeSpan2 = timeSpan3;
                        }
                    }
                    exDateTime += timeSpan2;
                }
                timeZoneOffset.OffsetRanges = list2.ToArray();
                list.Add(timeZoneOffset);
            }
            timeZoneOffsetTable.TimeZoneOffsets = list.ToArray();
            return(timeZoneOffsetTable);
        }
            // Token: 0x06000A2C RID: 2604 RVA: 0x000434E8 File Offset: 0x000416E8
            private static void SendTextMessage(MailboxSession session, IList <E164Number> recipients, string content, ExPerformanceCounter perfcounter)
            {
                StoreObjectId destFolderId = session.GetDefaultFolderId(DefaultFolderType.Drafts) ?? session.GetDefaultFolderId(DefaultFolderType.Outbox);

                using (MessageItem messageItem = MessageItem.Create(session, destFolderId))
                {
                    messageItem.ClassName = "IPM.Note.Mobile.SMS.Alert.Calendar";
                    messageItem.From      = new Participant(session.MailboxOwner);
                    foreach (E164Number e164Number in recipients)
                    {
                        messageItem.Recipients.Add(new Participant(null, e164Number.Number, "MOBILE"), RecipientItemType.To);
                    }
                    using (TextWriter textWriter = messageItem.Body.OpenTextWriter(BodyFormat.TextPlain))
                    {
                        textWriter.Write(content);
                    }
                    messageItem.Send();
                    perfcounter.Increment();
                    CalNotifsCounters.NumberOfNotificationsSent.Increment();
                }
            }