/// <summary>
        /// Prepare queued email model
        /// </summary>
        /// <param name="model">Queued email model</param>
        /// <param name="queuedEmail">Queued email</param>
        /// <param name="excludeProperties">Whether to exclude populating of some properties of model</param>
        /// <returns>Queued email model</returns>
        public virtual QueuedEmailModel PrepareQueuedEmailModel(QueuedEmailModel model, QueuedEmail queuedEmail, bool excludeProperties = false)
        {
            if (queuedEmail == null)
            {
                return(model);
            }

            //fill in model values from the entity
            model = model ?? queuedEmail.ToModel <QueuedEmailModel>();
            //chai
            //model.PriorityName = queuedEmail.Priority.GetLocalizedEnum(_localizationService, _workContext);
            model.PriorityName = CommonHelper.ConvertEnum(queuedEmail.Priority.ToString());
            model.CreatedOn    = _dateTimeHelper.ConvertToUserTime(queuedEmail.CreatedOnUtc, DateTimeKind.Utc);

            if (queuedEmail.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(queuedEmail.SentOnUtc.Value, DateTimeKind.Utc);
            }
            if (queuedEmail.DontSendBeforeDateUtc.HasValue)
            {
                model.DontSendBeforeDate = _dateTimeHelper.ConvertToUserTime(queuedEmail.DontSendBeforeDateUtc.Value, DateTimeKind.Utc);
            }
            else
            {
                model.SendImmediately = true;
            }

            return(model);
        }
예제 #2
0
        public virtual IActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            //try to get a queued email with the specified id
            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                return(RedirectToAction("List"));
            }

            var requeuedEmail = new QueuedEmail
            {
                From         = queuedEmail.From,
                FromName     = queuedEmail.FromName,
                To           = queuedEmail.To,
                ToName       = queuedEmail.ToName,
                ReplyTo      = queuedEmail.ReplyTo,
                ReplyToName  = queuedEmail.ReplyToName,
                CC           = queuedEmail.CC,
                Bcc          = queuedEmail.Bcc,
                Subject      = queuedEmail.Subject,
                Body         = queuedEmail.Body,
                CreatedOnUtc = DateTime.UtcNow
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            _notificationService.SuccessNotification("The queued email has been requeued successfully.");

            return(RedirectToAction("Edit", new { id = requeuedEmail.Id }));
        }
예제 #3
0
        public ActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }
            var requeuedEmail = new QueuedEmail
            {
                PriorityId         = queuedEmail.PriorityId,
                From               = queuedEmail.From,
                FromName           = queuedEmail.FromName,
                To                 = queuedEmail.To,
                ToName             = queuedEmail.ToName,
                ReplyTo            = queuedEmail.ReplyTo,
                ReplyToName        = queuedEmail.ReplyToName,
                CC                 = queuedEmail.CC,
                Bcc                = queuedEmail.Bcc,
                Subject            = queuedEmail.Subject,
                Body               = queuedEmail.Body,
                AttachmentFilePath = queuedEmail.AttachmentFilePath,
                AttachmentFileName = queuedEmail.AttachmentFileName,
                AttachedDownloadId = queuedEmail.AttachedDownloadId,
                CreatedOn          = DateTime.Now,
                EmailAccountId     = queuedEmail.EmailAccountId,
                //DontSendBeforeDateUtc = (queuedEmailModel.SendImmediately || !queuedEmailModel.DontSendBeforeDate.HasValue) ?
                //   null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(queuedEmailModel.DontSendBeforeDate.Value)
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);
            SuccessNotification("修改邮件队列成功");
            return(RedirectToAction("Edit", new { id = requeuedEmail.Id }));
        }
예제 #4
0
        public ActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);

                SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            model.PriorityName = email.Priority.GetLocalizedEnum(_localizationService, _workContext);
            model.CreatedOn    = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
            }
            return(View(model));
        }
예제 #5
0
        /// <returns>A task that represents the asynchronous operation</returns>
        public virtual async Task <IActionResult> Edit(QueuedEmailModel model, bool continueEditing)
        {
            if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

            //try to get a queued email with the specified id
            var email = await _queuedEmailService.GetQueuedEmailByIdAsync(model.Id);

            if (email == null)
            {
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                email.DontSendBeforeDateUtc = model.SendImmediately || !model.DontSendBeforeDate.HasValue ?
                                              null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.DontSendBeforeDate.Value);
                await _queuedEmailService.UpdateQueuedEmailAsync(email);

                _notificationService.SuccessNotification(await _localizationService.GetResourceAsync("Admin.System.QueuedEmails.Updated"));

                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            //prepare model
            model = await _queuedEmailModelFactory.PrepareQueuedEmailModelAsync(model, email, true);

            //if we got this far, something failed, redisplay form
            return(View(model));
        }
        public ActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
                return AccessDeniedView();

            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);
            if (queuedEmail == null)
                return RedirectToAction("List");

            var requeuedEmail = new QueuedEmail
            {
                Priority = queuedEmail.Priority,
                From = queuedEmail.From,
                To = queuedEmail.To,
                CC = queuedEmail.CC,
                Bcc = queuedEmail.Bcc,
                Subject = queuedEmail.Subject,
                Body = queuedEmail.Body,
                CreatedOnUtc = DateTime.UtcNow,
                EmailAccountId = queuedEmail.EmailAccountId,
				SendManually = queuedEmail.SendManually
            };
            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            NotifySuccess(_localizationService.GetResource("Admin.System.QueuedEmails.Requeued"));

            return RedirectToAction("Edit", requeuedEmail.Id);
        }
        public ActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
                return AccessDeniedView();

            var email = _queuedEmailService.GetQueuedEmailById(model.Id);
            if (email == null)
                return RedirectToAction("List");

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);

                NotifySuccess(_localizationService.GetResource("Admin.System.QueuedEmails.Updated"));
                return continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List");
            }

            //If we got this far, something failed, redisplay form
            model.CreatedOn = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);

            return View(model);
		}
예제 #8
0
        public ActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }

            var requeuedEmail = new QueuedEmail()
            {
                Priority       = queuedEmail.Priority,
                From           = queuedEmail.From,
                FromName       = queuedEmail.FromName,
                To             = queuedEmail.To,
                ToName         = queuedEmail.ToName,
                CC             = queuedEmail.CC,
                Bcc            = queuedEmail.Bcc,
                Subject        = queuedEmail.Subject,
                Body           = queuedEmail.Body,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = queuedEmail.EmailAccountId
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Requeued"));
            return(RedirectToAction("Edit", requeuedEmail.Id));
        }
        public ActionResult SendNow(QueuedEmailModel queuedEmailModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                return(RedirectToAction("List"));
            }

            var result = _queuedEmailService.SendEmail(queuedEmail);

            if (result)
            {
                NotifySuccess(_localizationService.GetResource("Admin.Common.TaskSuccessfullyProcessed"));
            }
            else
            {
                NotifyError(_localizationService.GetResource("Common.Error.SendMail"));
            }

            return(RedirectToAction("Edit", queuedEmail.Id));
        }
예제 #10
0
        public ActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);

                NotifySuccess(T("Admin.System.QueuedEmails.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            model.CreatedOn = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
            }

            return(View(model));
        }
예제 #11
0
        public virtual IActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            //try to get a queued email with the specified id
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);

                _notificationService.SuccessNotification("The queued email has been updated successfully.");

                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            //prepare model
            model = _queuedEmailModelFactory.PrepareQueuedEmailModel(model, email, true);

            //if we got this far, something failed, redisplay form
            return(View(model));
        }
예제 #12
0
        public async Task <IActionResult> Edit(QueuedEmailModel model, bool continueEditing)
        {
            var email = await _db.QueuedEmails.FindByIdAsync(model.Id);

            if (email == null)
            {
                return(RedirectToAction(nameof(List)));
            }

            if (ModelState.IsValid)
            {
                await MapperFactory.MapAsync(model, email);

                await _db.SaveChangesAsync();

                NotifySuccess(T("Admin.System.QueuedEmails.Updated"));
                return(continueEditing ? RedirectToAction(nameof(Edit), new { id = email.Id }) : RedirectToAction(nameof(List)));
            }

            model.CreatedOn = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
            }

            return(View(model));
        }
예제 #13
0
        public async Task <IActionResult> Requeue(QueuedEmailModel queuedEmailModel)
        {
            var queuedEmail = await _db.QueuedEmails.FindByIdAsync(queuedEmailModel.Id, false);

            if (queuedEmail == null)
            {
                return(RedirectToAction(nameof(List)));
            }

            var requeuedEmail = new QueuedEmail
            {
                Priority       = queuedEmail.Priority,
                From           = queuedEmail.From,
                To             = queuedEmail.To,
                CC             = queuedEmail.CC,
                Bcc            = queuedEmail.Bcc,
                Subject        = queuedEmail.Subject,
                Body           = queuedEmail.Body,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = queuedEmail.EmailAccountId,
                SendManually   = queuedEmail.SendManually
            };

            _db.QueuedEmails.Add(requeuedEmail);
            await _db.SaveChangesAsync();

            NotifySuccess(T("Admin.System.QueuedEmails.Requeued"));

            return(RedirectToAction(nameof(Edit), new { id = requeuedEmail.Id }));
        }
예제 #14
0
        /// <summary>
        /// Prepare queued email model
        /// </summary>
        /// <param name="model">Queued email model</param>
        /// <param name="queuedEmail">Queued email</param>
        /// <param name="excludeProperties">Whether to exclude populating of some properties of model</param>
        /// <returns>
        /// A task that represents the asynchronous operation
        /// The task result contains the queued email model
        /// </returns>
        public virtual async Task <QueuedEmailModel> PrepareQueuedEmailModelAsync(QueuedEmailModel model, QueuedEmail queuedEmail, bool excludeProperties = false)
        {
            if (queuedEmail == null)
            {
                return(model);
            }

            //fill in model values from the entity
            model ??= queuedEmail.ToModel <QueuedEmailModel>();

            model.EmailAccountName = GetEmailAccountName(await _emailAccountService.GetEmailAccountByIdAsync(queuedEmail.EmailAccountId));
            model.PriorityName     = await _localizationService.GetLocalizedEnumAsync(queuedEmail.Priority);

            model.CreatedOn = await _dateTimeHelper.ConvertToUserTimeAsync(queuedEmail.CreatedOnUtc, DateTimeKind.Utc);

            if (queuedEmail.SentOnUtc.HasValue)
            {
                model.SentOn = await _dateTimeHelper.ConvertToUserTimeAsync(queuedEmail.SentOnUtc.Value, DateTimeKind.Utc);
            }
            if (queuedEmail.DontSendBeforeDateUtc.HasValue)
            {
                model.DontSendBeforeDate = await _dateTimeHelper.ConvertToUserTimeAsync(queuedEmail.DontSendBeforeDateUtc.Value, DateTimeKind.Utc);
            }
            else
            {
                model.SendImmediately = true;
            }

            return(model);
        }
예제 #15
0
        public ActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                return(RedirectToAction("List"));
            }

            var requeuedEmail = new QueuedEmail
            {
                Priority       = queuedEmail.Priority,
                From           = queuedEmail.From,
                To             = queuedEmail.To,
                CC             = queuedEmail.CC,
                Bcc            = queuedEmail.Bcc,
                Subject        = queuedEmail.Subject,
                Body           = queuedEmail.Body,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = queuedEmail.EmailAccountId,
                SendManually   = queuedEmail.SendManually
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            NotifySuccess(T("Admin.System.QueuedEmails.Requeued"));

            return(RedirectToAction("Edit", requeuedEmail.Id));
        }
        /// <summary>
        /// Prepare queued email model
        /// </summary>
        /// <param name="model">Queued email model</param>
        /// <param name="queuedEmail">Queued email</param>
        /// <param name="excludeProperties">Whether to exclude populating of some properties of model</param>
        /// <returns>Queued email model</returns>
        public virtual QueuedEmailModel PrepareQueuedEmailModel(QueuedEmailModel model, QueuedEmail queuedEmail, bool excludeProperties = false)
        {
            if (queuedEmail == null)
            {
                return(model);
            }

            //fill in model values from the entity
            model = model ?? queuedEmail.ToModel <QueuedEmailModel>();

            model.EmailAccountName = queuedEmail.EmailAccount?.FriendlyName ?? string.Empty;
            model.PriorityName     = _localizationService.GetLocalizedEnum(queuedEmail.Priority);
            model.CreatedOn        = _dateTimeHelper.ConvertToUserTime(queuedEmail.CreatedOnUtc, DateTimeKind.Utc);

            if (queuedEmail.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(queuedEmail.SentOnUtc.Value, DateTimeKind.Utc);
            }
            if (queuedEmail.DontSendBeforeDateUtc.HasValue)
            {
                model.DontSendBeforeDate = _dateTimeHelper.ConvertToUserTime(queuedEmail.DontSendBeforeDateUtc.Value, DateTimeKind.Utc);
            }
            else
            {
                model.SendImmediately = true;
            }

            return(model);
        }
예제 #17
0
        public IActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                email.DontSendBeforeDateUtc = (model.SendImmediately || !model.DontSendBeforeDate.HasValue) ?
                                              null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.DontSendBeforeDate.Value);
                _queuedEmailService.UpdateQueuedEmail(email);

                SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            model.PriorityName = email.Priority.GetLocalizedEnum(_localizationService, _workContext);
            model.CreatedOn    = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
            }
            if (email.DontSendBeforeDateUtc.HasValue)
            {
                model.DontSendBeforeDate = _dateTimeHelper.ConvertToUserTime(email.DontSendBeforeDateUtc.Value, DateTimeKind.Utc);
            }

            return(View(model));
        }
예제 #18
0
        public async Task <IActionResult> Delete(QueuedEmailModel model)
        {
            var email = await _db.QueuedEmails.FindByIdAsync(model.Id);

            if (email == null)
            {
                return(RedirectToAction("List"));
            }

            _db.QueuedEmails.Remove(email);
            await _db.SaveChangesAsync();

            NotifySuccess(T("Admin.System.QueuedEmails.Deleted"));
            return(RedirectToAction("List"));
        }
예제 #19
0
        public async Task <IActionResult> QueuedEmailList(GridCommand command, QueuedEmailListModel model)
        {
            DateTime?startDateValue = model.SearchStartDate != null
                ? _dateTimeHelper.ConvertToUtcTime(model.SearchStartDate.Value, _dateTimeHelper.CurrentTimeZone)
                : null;

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

            var query = _db.QueuedEmails.AsNoTracking()
                        .Include(x => x.EmailAccount)
                        .ApplyTimeFilter(startDateValue, endDateValue, model.SearchLoadNotSent)
                        .ApplyMailAddressFilter(model.SearchFromEmail, model.SearchToEmail)
                        .Where(x => x.SentTries < model.SearchMaxSentTries)
                        .ApplyGridCommand(command, false);

            if (model.SearchSendManually.HasValue)
            {
                query = query.Where(x => x.SendManually == model.SearchSendManually);
            }

            var queuedEmails = await query.ToPagedList(command.Page - 1, command.PageSize).LoadAsync();

            var gridModel = new GridModel <QueuedEmailModel>
            {
                Rows = await queuedEmails.SelectAsync(async x =>
                {
                    var model = new QueuedEmailModel();
                    await MapperFactory.MapAsync(x, model);

                    model.CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc);
                    if (x.SentOnUtc.HasValue)
                    {
                        model.SentOn = _dateTimeHelper.ConvertToUserTime(x.SentOnUtc.Value, DateTimeKind.Utc);
                    }

                    model.ViewUrl = Url.Action(nameof(Edit), "QueuedEmail", new { id = x.Id });

                    return(model);
                })
                       .AsyncToList(),

                Total = queuedEmails.TotalCount
            };

            return(Json(gridModel));
        }
예제 #20
0
        public ActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }
            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);
                SuccessNotification("更新邮件成功");
                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }
            return(View(model));
        }
예제 #21
0
        /// <summary>
        /// Prepare queued email model
        /// </summary>
        /// <param name="model">Queued email model</param>
        /// <param name="queuedEmail">Queued email</param>
        /// <param name="excludeProperties">Whether to exclude populating of some properties of model</param>
        /// <returns>Queued email model</returns>
        public virtual QueuedEmailModel PrepareQueuedEmailModel(QueuedEmailModel model, QueuedEmail queuedEmail, bool excludeProperties = false)
        {
            if (queuedEmail == null)
            {
                return(model);
            }

            //fill in model values from the entity
            model = model ?? queuedEmail.ToModel <QueuedEmailModel>();

            model.CreatedOn = queuedEmail.CreatedOnUtc.ToLocalTime();

            if (queuedEmail.SentOnUtc.HasValue)
            {
                model.SentOn = queuedEmail.SentOnUtc.Value.ToLocalTime();
            }

            return(model);
        }
예제 #22
0
        public virtual IActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

            //try to get a queued email with the specified id
            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                return(RedirectToAction("List"));
            }

            var requeuedEmail = new QueuedEmail
            {
                PriorityId            = queuedEmail.PriorityId,
                From                  = queuedEmail.From,
                FromName              = queuedEmail.FromName,
                To                    = queuedEmail.To,
                ToName                = queuedEmail.ToName,
                ReplyTo               = queuedEmail.ReplyTo,
                ReplyToName           = queuedEmail.ReplyToName,
                CC                    = queuedEmail.CC,
                Bcc                   = queuedEmail.Bcc,
                Subject               = queuedEmail.Subject,
                Body                  = queuedEmail.Body,
                AttachmentFilePath    = queuedEmail.AttachmentFilePath,
                AttachmentFileName    = queuedEmail.AttachmentFileName,
                AttachedDownloadId    = queuedEmail.AttachedDownloadId,
                CreatedOnUtc          = DateTime.UtcNow,
                EmailAccountId        = queuedEmail.EmailAccountId,
                DontSendBeforeDateUtc = queuedEmailModel.SendImmediately || !queuedEmailModel.DontSendBeforeDate.HasValue ?
                                        null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(queuedEmailModel.DontSendBeforeDate.Value)
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Requeued"));

            return(RedirectToAction("Edit", new { id = requeuedEmail.Id }));
        }
예제 #23
0
        public async Task <IActionResult> Edit(int id)
        {
            var email = await _db.QueuedEmails.FindByIdAsync(id);

            if (email == null)
            {
                return(RedirectToAction(nameof(List)));
            }

            var model = new QueuedEmailModel();
            await MapperFactory.MapAsync(email, model);

            model.CreatedOn = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
            }

            return(View(model));
        }
예제 #24
0
        public async Task <ActionResult> SendNow(QueuedEmailModel queuedEmailModel)
        {
            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                return(RedirectToAction("List"));
            }

            var result = await _queuedEmailService.SendEmailAsync(queuedEmail);

            if (result)
            {
                NotifySuccess(T("Admin.Common.TaskSuccessfullyProcessed"));
            }
            else
            {
                NotifyError(T("Common.Error.SendMail"));
            }

            return(RedirectToAction("Edit", queuedEmail.Id));
        }
        public async Task <IActionResult> Requeue(QueuedEmailModel queuedEmailModel)
        {
            var queuedEmail = await _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }

            var requeuedEmail = new QueuedEmail
            {
                PriorityId            = queuedEmail.PriorityId,
                From                  = queuedEmail.From,
                FromName              = queuedEmail.FromName,
                To                    = queuedEmail.To,
                ToName                = queuedEmail.ToName,
                ReplyTo               = queuedEmail.ReplyTo,
                ReplyToName           = queuedEmail.ReplyToName,
                CC                    = queuedEmail.CC,
                Bcc                   = queuedEmail.Bcc,
                Subject               = queuedEmail.Subject,
                Body                  = queuedEmail.Body,
                AttachmentFilePath    = queuedEmail.AttachmentFilePath,
                AttachmentFileName    = queuedEmail.AttachmentFileName,
                AttachedDownloads     = queuedEmail.AttachedDownloads,
                CreatedOnUtc          = DateTime.UtcNow,
                EmailAccountId        = queuedEmail.EmailAccountId,
                DontSendBeforeDateUtc = (queuedEmailModel.SendImmediately || !queuedEmailModel.DontSendBeforeDate.HasValue) ?
                                        null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(queuedEmailModel.DontSendBeforeDate.Value)
            };
            await _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Requeued"));
            return(RedirectToAction("Edit", new { id = requeuedEmail.Id }));
        }
예제 #26
0
        public async Task <IActionResult> SendNow(QueuedEmailModel queuedEmailModel)
        {
            var queuedEmail = await _db.QueuedEmails.FindByIdAsync(queuedEmailModel.Id, false);

            if (queuedEmail == null)
            {
                return(RedirectToAction(nameof(List)));
            }

            var result = await _queuedEmailService.SendMailsAsync(new List <QueuedEmail> {
                queuedEmail
            });

            if (result)
            {
                NotifySuccess(T("Admin.Common.TaskSuccessfullyProcessed"));
            }
            else
            {
                NotifyError(T("Common.Error.SendMail"));
            }

            return(RedirectToAction(nameof(Edit), new { id = queuedEmail.Id }));
        }
예제 #27
0
 public static QueuedEmail ToEntity(this QueuedEmailModel model)
 {
     return(Mapper.Map <QueuedEmailModel, QueuedEmail>(model));
 }
예제 #28
0
 public static QueuedEmail ToEntity(this QueuedEmailModel model, QueuedEmail destination)
 {
     return(Mapper.Map(model, destination));
 }
예제 #29
0
 public static QueuedEmail ToEntity(this QueuedEmailModel model, QueuedEmail destination)
 {
     return(model.MapTo(destination));
 }
예제 #30
0
 public static QueuedEmail ToEntity(this QueuedEmailModel model)
 {
     return(model.MapTo <QueuedEmailModel, QueuedEmail>());
 }