/// <summary>
        /// Retrieves all mailing sessions that are broken.
        /// </summary>
        /// <param name="userConnection">The user connection.</param>
        /// <param name="jobGroupName">The name of job group.</param>
        /// <returns>Dictionary with sessisonId as a key and bulkEmailId as a value</returns>
        private Dictionary <Guid, Guid> GetBrokenTriggerEmailSessions(UserConnection userConnection, string jobGroupName)
        {
            var brokenSessions = new Dictionary <Guid, Guid>();
            Dictionary <Guid, Guid> emailSessions = GetTriggerEmailInProgress(userConnection);

            foreach (var session in emailSessions)
            {
                string jobName = MailingSchedulerUtilities.GetTriggerEmailJobName(session.Value, session.Key);
                if (MailingSchedulerUtilities.FindJob(jobName, jobGroupName) != null)
                {
                    continue;
                }
                brokenSessions.Add(session.Key, session.Value);
            }
            return(brokenSessions);
        }
        /// <summary>
        /// Schedules bulk email from send queue to sent.
        /// </summary>
        public void ScheduleBulkEmailsFromSendQueue()
        {
            IEnumerable <Guid> bulkEmailIds = GetBulkEmailsFromSendQueue();

            foreach (Guid entityId in bulkEmailIds)
            {
                string     jobName   = GetJobName(entityId);
                IJobDetail jobDetail = MailingSchedulerUtilities.FindJob(jobName, JobGroupName);
                if (jobDetail != null)
                {
                    continue;
                }
                ShiftTriggerEmailStartDate(entityId, TriggerEmailStartDateShift);
                ScheduleImmediateJob(jobName, entityId);
            }
        }
 public static IJobDetail FindJob(string jobName, string jobGroupName)
 {
     return(MailingSchedulerUtilities.FindJob(jobName, jobGroupName));
 }