示例#1
0
        /// <summary>
        /// 新建消息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CreateMessageResult CreateMessage(CreateMessageRequest request)
        {
            var result = new CreateMessageResult();

            var messageBody = new MessageBody()
            {
                Title   = request.Title,
                Content = request.Content
            };

            var message = new Message()
            {
                AppId = request.AppId
            };

            message.SetBody(messageBody);

            try
            {
                Validate(message);
                AppIdIsInvalid(request.AppId);
            }
            catch (BusinessRuleException excep)
            {
                // TODO...
                //return result.Create(excep);
            }

            _messageRepository.Register(message);

            return(result);
        }
        public ActionResult Preview(int id, bool isCampaign = false)
        {
            var model = new MessageTemplatePreviewModel();

            if (!Services.Permissions.Authorize(isCampaign ? StandardPermissionProvider.ManageCampaigns: StandardPermissionProvider.ManageMessageTemplates))
            {
                model.Error = T("Admin.AccessDenied.Description");
                return(View(model));
            }

            // TODO: (mc) Liquid > Display info about preview models
            try
            {
                CreateMessageResult result = null;

                if (isCampaign)
                {
                    var campaign = _campaignService.GetCampaignById(id);
                    if (campaign == null)
                    {
                        model.Error = "The request campaign does not exist.";
                        return(View(model));
                    }

                    result = _campaignService.Preview(campaign);
                }
                else
                {
                    var template = _messageTemplateService.GetMessageTemplateById(id);
                    if (template == null)
                    {
                        model.Error = "The requested message template does not exist.";
                        return(View(model));
                    }

                    var messageContext = new MessageContext
                    {
                        MessageTemplate = template,
                        TestMode        = true
                    };

                    result = _messageFactory.CreateMessage(messageContext, false);
                }

                var email = result.Email;

                model.AccountEmail   = email.EmailAccount?.Email ?? result.MessageContext.EmailAccount?.Email;
                model.EmailAccountId = email.EmailAccountId;
                model.Bcc            = email.Bcc;
                model.Body           = email.Body;
                model.From           = email.From;
                model.ReplyTo        = email.ReplyTo;
                model.Subject        = email.Subject;
                model.To             = email.To;
                model.Error          = null;
                model.Token          = Guid.NewGuid().ToString();
                model.BodyUrl        = Url.Action("PreviewBody", new { token = model.Token });

                HttpContext.Cache.Insert("mtpreview:" + model.Token, model, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(1));
            }
            catch (Exception ex)
            {
                model.Error = ex.ToAllMessages();
            }

            return(View(model));
        }