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 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; //} }
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 }; }