示例#1
0
        public static EmailMessage RunTemplate(this MemoryCache cache, string name, string to, object model, string language = null)
        {
            var key = "RunTemplate_" + name;

            cache.GetOrCreate(key, () =>
            {
                var context       = new MailerContext();
                Template template = null;
                if (language != null)
                {
                    template = context.Templates[name + "." + language, string.Empty];
                }
                if (template == null)
                {
                    template = context.Templates[name, string.Empty];
                }
                Engine.Razor.AddTemplate(template.body, name);
                Engine.Razor.AddTemplate(template.subject, name + "|subject");
                return(string.Empty);
            });
            var body    = Engine.Razor.RunCompile(name, model: model);
            var subject = Engine.Razor.RunCompile(name + "|subject", model: model);

            return(new EmailMessage
            {
                PartitionKey = TimeId.NewSortableId(),
                RowKey = string.Empty,
                Subject = subject,
                Body = body,
                To = to
            });
        }
示例#2
0
        public void TestNewSortableId()
        {
            var a = TimeId.NewSortableId();
            var b = TimeId.NewSortableId();

            Assert.AreNotEqual(a, b);
        }
示例#3
0
        public void TestSortableId()
        {
            var date1 = new DateTime(2000, 1, 1, 0, 0, 0);
            var date2 = date1.AddSeconds(1);
            var a     = TimeId.NewSortableId(date1);
            var b     = TimeId.NewSortableId(date2);

            Assert.IsTrue(a.CompareTo(b) > 0);
            Assert.AreEqual(date2, TimeId.ToDateTime(b));

            var c = TimeId.NewSortableId(date1, true);
            var d = TimeId.NewSortableId(date2, true);

            Assert.IsTrue(c.CompareTo(d) < 0);
        }
示例#4
0
        LogItem CreateLogItem(string key, LogEventInfo logEventInfo)
        {
            var logItem = new LogItem
            {
                PartitionKey = key,
                RowKey       = TimeId.NewSortableId(logEventInfo.TimeStamp, this.SortAscending),
                LogDateTime  = logEventInfo.TimeStamp,
            };

            foreach (var property in _properties)
            {
                logItem[property.Name] = property.Value.Render(logEventInfo);
            }
            return(logItem);
        }
示例#5
0
        static void postJob(SchedulerContext context, JobItem jobItem, int statusCode, string result, int runTime)
        {
            var jobLog = new JobLog
            {
                PartitionKey = TimeId.NewSortableId(),
                RowKey       = string.Empty,
                JobGroup     = jobItem.PartitionKey,
                JobName      = jobItem.RowKey,
                StatusCode   = statusCode,
                Result       = result,
                RunTime      = runTime,
            };

            context.JobLogs.Insert(jobLog, true);
            jobItem.LastRun           = DateTime.UtcNow;
            jobItem.LastRunResult     = jobLog.Result;
            jobItem.LastRunStatusCode = jobLog.StatusCode;
            if (jobLog.StatusCode >= 200 && jobLog.StatusCode < 400)
            {
                jobItem.LastSuccessRun = jobItem.LastRun;
            }
            context.JobItems.Replace(jobItem);
        }