/// <inheritdoc cref="ISyncSession.StartFailover"/>. public void StartFailover() { _log.DebugFormat($"Failover synchronization of {_senderEmailAddress} started"); var mailbox = GetMailbox(); var sinceDate = ListenerUtils.GetFailoverPeriodStartDate(mailbox, _userConnection); var filters = mailbox.GetFromDateFilters(_userConnection, sinceDate); StartSynchronization(mailbox, filters); _log.DebugFormat($"Failover synchronization of {_senderEmailAddress} initialization ended"); }
/// <summary> /// Calls <paramref name="action"/> and handles thrown exceptions. /// </summary> /// <param name="action">Authentication action.</param> /// <param name="senderEmailAddress">Mailbox address.</param> private void TryDoListenerAction(string senderEmailAddress, Action action) { try { ListenerUtils.TryDoListenerAction(action, senderEmailAddress, UserConnection); } catch (Exception e) { var exceptionMessage = e.GetType() == typeof(AggregateException) ? e.InnerException.Message : e.Message; _log.Error(exceptionMessage, e); throw; } }
/// <summary> /// Starts mailbox synchronization. /// </summary> /// <param name="mailbox"><see cref="Mailbox"/> instance.</param> /// <param name="filters">Synchronization session filters.</param> private void StartSynchronization(Mailbox mailbox, string filters) { if (!mailbox.CheckSynchronizationSettings()) { _log.Warn($"mailbox {mailbox.SenderEmailAddress} synchronization settings not valid"); return; } var credentials = GetCredentials(mailbox); var emailProvider = GetProvider(); Action action = () => { emailProvider.StartSynchronization(credentials, filters); }; try { ListenerUtils.TryDoListenerAction(action, credentials.SenderEmailAddress, _userConnection); } catch (Exception e) { _log.Error($"Synchronization of {_senderEmailAddress} failed", e); throw; } }
/// <summary> /// Starts email synchronization process for period. /// </summary> /// <param name="mailboxId">Mailbox unique identifier.</param> protected void StartPeriodSyncJob(Mailbox mailbox) { try { if (GetIsFeatureEnabled("EmailIntegrationV2")) { var syncSession = ClassFactory.Get <ISyncSession>("Email", new ConstructorArgument("uc", UserConnection), new ConstructorArgument("senderEmailAddress", mailbox.SenderEmailAddress)); syncSession.StartFailover(); return; } var syncDate = ListenerUtils.GetFailoverPeriodStartDate(mailbox, UserConnection); var parameters = new Dictionary <string, object> { { "SenderEmailAddress", mailbox.SenderEmailAddress }, { "LoadEmailsFromDate", syncDate }, { "MailboxType", mailbox.TypeId }, { "PeriodInMinutes", 0 } }; var syncJobScheduler = ClassFactory.Get <ISyncJobScheduler>(); syncJobScheduler.CreateSyncJob(UserConnection, parameters); } catch (Exception e) { _log.ErrorFormat("Email synchronization process for {0} mailbox not started.", e, mailbox.Id); } }
/// <summary> /// Returns is feature enabled for <paramref name="uc"/>. /// </summary> /// <param name="uc"><see cref="UserConnection"/> instance.</param> /// <param name="code">Feature code.</param> /// <returns><c>True</c> if feature enabled, otherwise returns false.</returns> private bool GetIsFeatureDisabled(string code) { return(ListenerUtils.GetIsFeatureDisabled(UserConnection, code)); }