public void Execute(TaskExecutionContext ctx)
        {
            const int pageSize = 1000;
            const int maxTries = 3;

            for (int i = 0; i < 9999999; ++i)
            {
                var q = new SearchEmailsQuery
                {
                    MaxSendTries = maxTries,
                    PageIndex = i,
                    PageSize = pageSize,
                    Expand = "Attachments",
                    UnsentOnly = true
                };
                var queuedEmails = _queuedEmailService.SearchEmails(q);

                foreach (var queuedEmail in queuedEmails)
                {
                    _queuedEmailService.SendEmail(queuedEmail);
                }

                if (!queuedEmails.HasNextPage)
                    break;
            }
        }
Example #2
0
        public void Execute(TaskExecutionContext ctx)
        {
            const int pageSize = 1000;
            const int maxTries = 3;

            for (int i = 0; i < 9999999; ++i)
            {
                var q = new SearchEmailsQuery
                {
                    MaxSendTries = maxTries,
                    PageIndex    = i,
                    PageSize     = pageSize,
                    Expand       = "Attachments",
                    UnsentOnly   = true
                };
                var queuedEmails = _queuedEmailService.SearchEmails(q);

                foreach (var queuedEmail in queuedEmails)
                {
                    _queuedEmailService.SendEmail(queuedEmail);
                }

                if (!queuedEmails.HasNextPage)
                {
                    break;
                }
            }
        }
        public override async Task ExecuteAsync(TaskExecutionContext ctx)
        {
            const int pageSize = 1000;
            const int maxTries = 3;

            for (int i = 0; i < 9999999; ++i)
            {
                var q = new SearchEmailsQuery
                {
                    MaxSendTries = maxTries,
                    PageIndex    = i,
                    PageSize     = pageSize,
                    Expand       = "Attachments",
                    UnsentOnly   = true,
                    SendManually = false
                };

                var queuedEmails = await _queuedEmailService.SearchEmails(q).LoadAsync();

                foreach (var queuedEmail in queuedEmails)
                {
                    await _queuedEmailService.SendEmailAsync(queuedEmail);
                }

                if (!queuedEmails.HasNextPage)
                {
                    break;
                }
            }
        }
        public void Execute(TaskExecutionContext ctx)
        {
            const int pageSize = 90;
            const int maxTries = 3;

            //for (int i = 0; i < 9999999; ++i)
            //{
            var q = new SearchEmailsQuery
            {
                MaxSendTries = maxTries,
                PageIndex    = 0,
                PageSize     = pageSize,
                Expand       = "Attachments",
                UnsentOnly   = true,
                SendManually = false
            };
            var queuedEmails = _queuedEmailService.SearchEmails(q);

            foreach (var queuedEmail in queuedEmails)
            {
                _queuedEmailService.SendEmail(queuedEmail);
            }

            //if (!queuedEmails.HasNextPage)
            //	break;
            //}
        }
Example #5
0
        public virtual IPagedList <QueuedEmail> SearchEmails(SearchEmailsQuery query)
        {
            Guard.ArgumentNotNull(() => query);

            var q = _queuedEmailRepository.Table;

            if (query.Expand.HasValue())
            {
                var expands = query.Expand.Split(',');
                foreach (var expand in expands)
                {
                    q = q.Expand(expand.Trim());
                }
            }

            if (query.From.HasValue())
            {
                q = q.Where(qe => qe.From.Contains(query.From.Trim()));
            }

            if (query.To.HasValue())
            {
                q = q.Where(qe => qe.To.Contains(query.To.Trim()));
            }

            if (query.StartTime.HasValue)
            {
                q = q.Where(qe => qe.CreatedOnUtc >= query.StartTime);
            }

            if (query.EndTime.HasValue)
            {
                q = q.Where(qe => qe.CreatedOnUtc <= query.EndTime);
            }

            if (query.UnsentOnly)
            {
                q = q.Where(qe => !qe.SentOnUtc.HasValue);
            }

            if (query.SendManually.HasValue)
            {
                q = q.Where(qe => qe.SendManually == query.SendManually.Value);
            }

            q = q.Where(qe => qe.SentTries < query.MaxSendTries);

            q = q.OrderByDescending(qe => qe.Priority);

            q = query.OrderByLatest ?
                ((IOrderedQueryable <QueuedEmail>)q).ThenByDescending(qe => qe.CreatedOnUtc) :
                ((IOrderedQueryable <QueuedEmail>)q).ThenBy(qe => qe.CreatedOnUtc);

            var queuedEmails = new PagedList <QueuedEmail>(q, query.PageIndex, query.PageSize);

            return(queuedEmails);
        }
        public virtual IPagedList<QueuedEmail> SearchEmails(SearchEmailsQuery query)
        {
            Guard.ArgumentNotNull(() => query);

            var q = _queuedEmailRepository.Table;

            if (query.Expand.HasValue())
            {
                var expands = query.Expand.Split(',');
                foreach (var expand in expands)
                {
                    q = q.Expand(expand.Trim());
                }
            }

            if (query.From.HasValue())
                q = q.Where(qe => qe.From.Contains(query.From.Trim()));

            if (query.To.HasValue())
                q = q.Where(qe => qe.To.Contains(query.To.Trim()));

            if (query.StartTime.HasValue)
                q = q.Where(qe => qe.CreatedOnUtc >= query.StartTime);

            if (query.EndTime.HasValue)
                q = q.Where(qe => qe.CreatedOnUtc <= query.EndTime);

            if (query.UnsentOnly)
                q = q.Where(qe => !qe.SentOnUtc.HasValue);

            if (query.SendManually.HasValue)
                q = q.Where(qe => qe.SendManually == query.SendManually.Value);

            q = q.Where(qe => qe.SentTries < query.MaxSendTries);

            q = q.OrderByDescending(qe => qe.Priority);

            q = query.OrderByLatest ?
                ((IOrderedQueryable<QueuedEmail>)q).ThenByDescending(qe => qe.CreatedOnUtc) :
                ((IOrderedQueryable<QueuedEmail>)q).ThenBy(qe => qe.CreatedOnUtc);

            var queuedEmails = new PagedList<QueuedEmail>(q, query.PageIndex, query.PageSize);
            return queuedEmails;
        }
        public ActionResult QueuedEmailList(GridCommand command, QueuedEmailListModel model)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
                return AccessDeniedView();

            DateTime? startDateValue = (model.SearchStartDate == null) ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.SearchStartDate.Value, _dateTimeHelper.CurrentTimeZone);
            DateTime? endDateValue = (model.SearchEndDate == null) ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.SearchEndDate.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1);

            var q = new SearchEmailsQuery
            {
                EndTime = endDateValue,
                From = model.SearchFromEmail,
                MaxSendTries = model.SearchMaxSentTries,
                OrderByLatest = true,
                PageIndex = command.Page - 1,
                PageSize = command.PageSize,
                SendManually = model.SearchSendManually,
                StartTime = startDateValue,
                To = model.SearchToEmail,
                UnsentOnly = model.SearchLoadNotSent
            };
            var queuedEmails = _queuedEmailService.SearchEmails(q);

            var gridModel = new GridModel<QueuedEmailModel>
            {
                Data = queuedEmails.Select(x =>
                {
                    var m = x.ToModel();
                    m.CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc);

                    if (x.SentOnUtc.HasValue)
                        m.SentOn = _dateTimeHelper.ConvertToUserTime(x.SentOnUtc.Value, DateTimeKind.Utc);

                    return m;
                }),
                Total = queuedEmails.TotalCount
            };

            return new JsonResult
            {
                Data = gridModel
            };
        }