internal static CalendarSettings CreateForSession(UserContext userContext) { if (userContext == null) { throw new ArgumentNullException("userContext"); } CalendarSettings result; if (CalendarSettings.LoadFromMailbox(userContext.MailboxSession, userContext.CanActAsOwner, out result) != CalendarSettings.LoadResult.Success) { ExTraceGlobals.CalendarCallTracer.TraceDebug(0L, "Unable to load Calendar Settings User Configuration object"); result = new CalendarSettings(15, true, false, true, false); } return(result); }
private static CalendarSettings.LoadResult LoadFromMailbox(MailboxSession mailboxSession, bool canActAsOwner, out CalendarSettings calendarSettings) { if (!canActAsOwner) { calendarSettings = null; return(CalendarSettings.LoadResult.AccessDenied); } CalendarConfiguration calendarConfiguration; try { using (CalendarConfigurationDataProvider calendarConfigurationDataProvider = new CalendarConfigurationDataProvider(mailboxSession)) { calendarConfiguration = (CalendarConfiguration)calendarConfigurationDataProvider.Read <CalendarConfiguration>(null); } if (calendarConfiguration == null) { string message = string.Format("Unable to load Calendar configuration object for mailbox {0}", mailboxSession.MailboxOwner.LegacyDn); ExTraceGlobals.CalendarCallTracer.TraceDebug(0L, message); calendarSettings = null; return(CalendarSettings.LoadResult.Corrupt); } } catch (StoragePermanentException ex) { string message2 = string.Format("Unable to load Calendar configuration object for mailbox. Exception {0}", ex.Message); ExTraceGlobals.CalendarCallTracer.TraceDebug(0L, message2); calendarSettings = null; return(CalendarSettings.LoadResult.Missing); } catch (StorageTransientException ex2) { string message3 = string.Format("Unable to load Calendar configuration object for mailbox. Exception {0}", ex2.Message); ExTraceGlobals.CalendarCallTracer.TraceDebug(0L, message3); calendarSettings = null; return(CalendarSettings.LoadResult.Missing); } calendarSettings = new CalendarSettings(CalendarSettings.ValidateReminderInterval(calendarConfiguration.DefaultReminderTime), calendarConfiguration.AddNewRequestsTentatively, calendarConfiguration.ProcessExternalMeetingMessages, calendarConfiguration.RemoveOldMeetingMessages, calendarConfiguration.RemoveForwardedMeetingNotifications); return(CalendarSettings.LoadResult.Success); }