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;
                }
            });
        }
Beispiel #2
0
        /// <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;
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
 internal ResponseModel Delete(SubscriptionTemplate subscriptionTemplate)
 {
     return(_subscriptionTemplateRepository.Delete(subscriptionTemplate));
 }
Beispiel #7
0
 internal ResponseModel Insert(SubscriptionTemplate subscriptionTemplate)
 {
     return(_subscriptionTemplateRepository.Insert(subscriptionTemplate));
 }
Beispiel #8
0
        /// <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);
            }
        }