示例#1
0
        public IProgressItem Start(List <int> fileID, List <int> contactID, String subject, String bodyTemplate, bool storeInHistory)
        {
            lock (_syncObj)
            {
                var operation = _mailQueue.GetTasks <SendBatchEmailsOperation>().FirstOrDefault(x => Convert.ToInt32(x.Id) == _tenantID);

                if (operation != null && operation.IsCompleted)
                {
                    _mailQueue.RemoveTask(operation.Id);
                    operation = null;
                }

                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();
                    }

                    _sendBatchEmailsOperation.Configure(fileID, contactID, subject, bodyTemplate, storeInHistory);

                    _mailQueue.QueueTask(_sendBatchEmailsOperation);
                }

                return(operation);
            }
        }