public static IProgressItem GetStatus() { var result = _mailQueue.GetStatus(TenantProvider.CurrentTenantID); if (result == null) { return(MailSenderDataCache.Get()); } return(result); }
public static IProgressItem Start(List <int> fileID, List <int> contactID, String subject, String bodyTemplate, bool storeInHistory) { lock (_syncObj) { var operation = _mailQueue.GetStatus(TenantProvider.CurrentTenantID); if (operation == null) { var mailSender = MailSenderDataCache.Get(); if (mailSender != null) { return(mailSender); } } if (operation == null) { if (fileID == null) { fileID = new List <int>(); } if (contactID == null || contactID.Count == 0 || String.IsNullOrEmpty(subject) || String.IsNullOrEmpty(bodyTemplate)) { return(null); } if (contactID.Count > GetQuotas()) { contactID = contactID.Take(GetQuotas()).ToList(); } operation = new SendBatchEmailsOperation(fileID, contactID, subject, bodyTemplate, storeInHistory); _mailQueue.Add(operation); } if (!_mailQueue.IsStarted) { _mailQueue.Start(x => x.RunJob()); } return(operation); } }