예제 #1
0
        public ActionResult QueuedEmailList(DataTablesParam dataTableParam, 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 queuedEmails = _queuedEmailService.SearchEmails(model.SearchFromEmail, model.SearchToEmail,
            //    startDateValue, endDateValue,
            //    model.SearchLoadNotSent, model.SearchMaxSentTries, true,
            //    dataTableParam.PageIndex, dataTableParam.PageSize);

            var q = new SearchEmailsQuery
            {
                EndTime       = endDateValue,
                From          = model.SearchFromEmail,
                MaxSendTries  = model.SearchMaxSentTries,
                OrderByLatest = true,
                PageIndex     = dataTableParam.PageIndex,
                PageSize      = dataTableParam.PageSize,
                SendManually  = model.SearchSendManually,
                StartTime     = startDateValue,
                To            = model.SearchToEmail,
                UnsentOnly    = model.SearchLoadNotSent
            };
            var queuedEmails = _queuedEmailService.SearchEmails(q);
            var total        = queuedEmails.Count();
            var result       = new DataTablesData
            {
                iTotalRecords        = total,
                sEcho                = dataTableParam.sEcho,
                iTotalDisplayRecords = total,
                aaData               = 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);
                }).Cast <object>().ToArray(),
            };

            return(new JsonResult
            {
                Data = result
            });
        }
        public ActionResult QueuedEmailList(GridCommand command, QueuedEmailListModel model)
        {
            var gridModel = new GridModel <QueuedEmailModel>();

            if (_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                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);

                gridModel.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);
                });

                gridModel.Total = queuedEmails.TotalCount;
            }
            else
            {
                gridModel.Data = Enumerable.Empty <QueuedEmailModel>();

                NotifyAccessDenied();
            }

            return(new JsonResult
            {
                Data = gridModel
            });
        }