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