public TemplateChangeViewModel(KinderGartenDbContext db, MessageService messageService) { Db = db; MessageService = messageService; Employees = Db.Employees.Include(x => x.Person).ToList(); Messenger.Default.Register <string>(this, message => { if (message == "UpdateEmployees") { Employees = Db.Employees.Include(x => x.Person).ToList(); } }); Messenger.Default.Register <NotificationMessage <SubscriptionTemplate> >(this, message => { if (message.Notification == "Add") { Title = "Новый шаблон"; Subscription = new SubscriptionTemplate(); AddVisibility = Visibility.Visible; ChangeVisibility = Visibility.Collapsed; } else if (message.Notification == "Change") { Subscription = message.Content; Title = "Редактирование шаблона"; AddVisibility = Visibility.Collapsed; ChangeVisibility = Visibility.Visible; } }); }
/// <summary> /// Get page subscription email content /// </summary> /// <param name="emailModels"></param> /// <param name="template"></param> /// <param name="isAnythingChanged"></param> /// <returns></returns> private string GetPageSubscriptionEmailContent(List <SubscriptionEmailModel> emailModels, SubscriptionTemplate template, ref bool isAnythingChanged) { var pageService = HostContainer.GetInstance <IPageService>(); var subscriptionTemplateService = HostContainer.GetInstance <ISubscriptionTemplateService>(); // Get a list of pageId in SubscriptionEmailModel var pageIds = emailModels.Select(l => SerializeUtilities.Deserialize <SubscriptionPageParameterModel>(l.Parameters).Id) .ToList(); // Map that list of pageId to list of PageModel var pages = pageService.Maps(pageService.Fetch(p => pageIds.Contains(p.Id))).ToList(); // Select a list of PageSubscriptionEmailModel from SubscriptionEmailModel and PageModel var model = emailModels.Select(m => new PageSubscriptionEmailModel { SubscriptionId = m.SubscriptionId, Page = pages.FirstOrDefault( p => p.Id == SerializeUtilities.Deserialize <SubscriptionPageParameterModel>(m.Parameters).Id) ?? new PageModel(), Logs = m.Logs }).ToList(); // Enable flag for sending email if (model.Any(e => e.Logs.Any())) { isAnythingChanged = true; } return(subscriptionTemplateService.ParseSubscription(template.Module, model).Body); }
public SubscriptionTemplateManageModel(SubscriptionTemplate subscriptionTemplate) : this() { Id = subscriptionTemplate.Id; Name = subscriptionTemplate.Name; Body = subscriptionTemplate.Body; Module = subscriptionTemplate.Module; }
public SubscriptionTemplateModel(SubscriptionTemplate subscriptionTemplate) : this() { Id = subscriptionTemplate.Id; Module = subscriptionTemplate.Module; Name = subscriptionTemplate.Name; RecordOrder = subscriptionTemplate.RecordOrder; Created = subscriptionTemplate.Created; CreatedBy = subscriptionTemplate.CreatedBy; LastUpdate = subscriptionTemplate.LastUpdate; LastUpdateBy = subscriptionTemplate.LastUpdateBy; }
/// <summary> /// Parse the Subscription /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="template"></param> /// <param name="model"></param> /// <returns></returns> public SubscriptionTemplateResponseModel ParseSubscription <TModel>(SubscriptionTemplate template, TModel model) { if (template == null) { return(null); } var bodyCacheName = template.Body.GetEnumName().GetTemplateCacheName(template.Body); var response = new SubscriptionTemplateResponseModel { Body = EzRazorEngineHelper.CompileAndRun(template.Body, model, bodyCacheName) }; return(response); }
internal ResponseModel Delete(SubscriptionTemplate subscriptionTemplate) { return(_subscriptionTemplateRepository.Delete(subscriptionTemplate)); }
internal ResponseModel Insert(SubscriptionTemplate subscriptionTemplate) { return(_subscriptionTemplateRepository.Insert(subscriptionTemplate)); }
/// <summary> /// Get final html from subscription info and template /// </summary> /// <param name="subscriberInfo"></param> /// <param name="subscriptionLogs"></param> /// <param name="template"></param> /// <param name="isAnythingChanged"></param> /// <returns></returns> public string GetSubscriptionEmailContent(IEnumerable <SubscribeModule> subscriberInfo, IEnumerable <SubscriptionLog> subscriptionLogs, SubscriptionTemplate template, ref bool isAnythingChanged) { // Map the subscription logs into the subscribe info of a subscriber var logs = subscriberInfo.Join(subscriptionLogs, subscribeModule => subscribeModule.Parameters, subscriptionLog => subscriptionLog.Parameters, (subscribeModule, subscriptionLog) => new { SubscribeModule = subscribeModule, SubscriptionLog = subscriptionLog }) .GroupBy(l => l.SubscribeModule.SubscriptionId) .Select(l => new SubscriptionEmailModel { SubscriptionId = l.Key, Parameters = l.First().SubscribeModule.Parameters, Logs = l.Select(m => new SubscriptionLogItem(m.SubscriptionLog)).ToList() }).ToList(); // Build html for specific module switch (template.Module) { case SubscriptionEnums.SubscriptionModule.Page: return(GetPageSubscriptionEmailContent(logs, template, ref isAnythingChanged)); default: return(string.Empty); } }