public void RunScheduledBatchSendingTest() { using (var logic = new MessagesModuleLogic(new MessageContext(Settings.MessageContextConnectionString))) { //TASK_PROTOTYPE.RunScheduledBatchSending(logic); } //TASK_PROTOTYPE.RunScheduledBatchSending(null); }
public static List <Message> GetDemoMessages(MessagesModuleLogic logic, IMessageTemplate tmpl, ISqlLogic sqlLogic, bool isSms, int MaxCount = 0) { using (var mng = BatchCreationManager.NewInstance(sqlLogic, logic)) { var cltr = new MessageDataCollector(mng); var msgData = cltr.Collect(tmpl); var producer = new MessageProducer(tmpl, null, new DefaultMarkUpSpecification { NewLineSymbol = "\n" }); List <Message> result = new List <Message>(); int counter = 0; foreach (var data in msgData) { producer.ChangeWildCards(data.wildCards); foreach (var textData in data.TextProductionData) { result.Add(producer.Produce(textData, isSms ? MessageType.Sms : MessageType.Sms)); counter++; if (counter == MaxCount) { return(result); } } } return(result); } }
protected override FetchResult <TemplateVM> _fetch(int?Skip, int?Count, NgControllerInstruct[] filters) { using (var l = new MessagesModuleLogic()) { var queryResult = l.GetAll <tblTemplate>() .Select(x => PocoConstructor.MakeFromObj(x, TemplateVM.tblTemplatePR)); return(FetchResult <TemplateVM> .Succes(queryResult, queryResult.Count())); } }
protected override FetchResult <RFilterVM> _fetch(int?Skip, int?Count, NgControllerInstruct[] filters) { using (var l = new MessagesModuleLogic()) { var items = l.GetAll <tblRecepientFilter>() .Select(x => PocoConstructor.MakeFromObj(x, RFilterVM.tblRecepientFilterPR)); return(FetchResult <RFilterVM> .Succes(items, items.Count())); } }
protected override FetchResult <RecepientcardVM> _fetch(int?Skip, int?Count, NgControllerInstruct[] filters) { using (var l = new MessagesModuleLogic()) { int fullQueryCount; var queryResult = l.GetFiltered <tblRecepientCard>(Skip, Count, filters, out fullQueryCount) .Select(x => PocoConstructor.MakeFromObj(x, RecepientcardVM.tblRecepientCardPR)); return(FetchResult <RecepientcardVM> .Succes(queryResult, fullQueryCount)); } }
protected override FetchResult <MessageReportVM> _fetch(int?Skip, int?Count, NgControllerInstruct[] filters) { using (var l = new MessagesModuleLogic()) { int count; var queryResult = l.GetFiltered <tblMessage>(Skip, Count, filters, out count) .Select(x => PocoConstructor.MakeFromObj(x, MessageReportVM.tblMessagePR)); return(FetchResult <MessageReportVM> .Succes(queryResult, count)); } }
protected override FetchResult <EmailSenderDataProviderVM> _fetch(int?Skip, int?Count, NgControllerInstruct[] filters) { using (var l = new MessagesModuleLogic()) { int allQCount; var queryResult = l.GetFiltered <tblEmailSenderDataProvider>(Skip, Count, filters, out allQCount) .Select(x => PocoConstructor.MakeFromObj(x, EmailSenderDataProviderVM.tblEmailSenderDataProviderPR)); return(FetchResult <EmailSenderDataProviderVM> .Succes(queryResult, allQCount)); } }
private BatchCreationManager(DateTime controlledPeriodStart, DateTime controlledPeriodEnd, MessagesModuleLogic Logic, ISqlLogic SqlLogic) { this.SqlLogic = SqlLogic; this.Logic = Logic ?? new MessagesModuleLogic(); AutoDisposeLogic = Logic == null; periodStart = controlledPeriodStart; periodEnd = controlledPeriodEnd; stack.Add(this); }
public void SchedulesGetting_NoExceptions() { using (var logic = new MessagesModuleLogic(new MessageContext(Settings.MessageContextConnectionString))) { //SqlLogic isn't needed in this test. using (var Bcm = NewInstance(new DateTime(2015, 9, 3), new DateTime(2017, 9, 5), null, logic)) { Bcm.DontMakeTimeStamp(); var schedules = Bcm.GetActualMessageSchedules(); } } }
protected override NgResult _delete(MessageScheduleVM[] models) { using (var l = new MessagesModuleLogic()) { foreach (var model in models) { l.Delete <tblMessageSchedule>(model.Id); } } return(NgResult.Succes(DEBS.Translate("MessageMdl.{0} schedules was removed", models.Count()))); }
protected override NgResult _delete(EmailSenderDataProviderVM[] models) { using (var l = new MessagesModuleLogic()) { foreach (var model in models) { l.Delete <tblEmailSenderDataProvider>(model.Id); } } return(NgResult.Succes(DEBS.Translate("MessageMdl.{0} email providers was removed", models.Count()))); }
public void RunImmediateBatchCreationTest() { using (var logic = new MessagesModuleLogic(new MessageContext(Settings.MessageContextConnectionString))) { using (var sqlLogic = new SqlLogic(new SqlConnectionFactory(Settings.SqlConnectionString))) { using (var Bcm = BatchCreationManager.NewInstance(new DateTime(2016, 9, 3), new DateTime(2016, 9, 5), sqlLogic, logic)) { //TASK_PROTOTYPE.RunImmediateBatchCreation(logic.Get<tblMessageSchedule>(1), 1, sqlLogic, logic); } } } }
protected override NgResult _update(EmailSenderDataProviderVM[] models) { using (var l = new MessagesModuleLogic()) { foreach (var model in models) { var item = l.Get <tblEmailSenderDataProvider>(model.Id); EmailSenderDataProviderVM.ReflectToTblEmailSenderDataProvider.Run(model, item); l.SaveChanges(item); } } return(NgResult.Succes(DEBS.Translate("MessageMdl.{0} email providers was modified", models.Count()))); }
protected override NgResult _update(MessageScheduleVM[] models) { using (var l = new MessagesModuleLogic()) { foreach (var model in models) { var item = l.Get <tblMessageSchedule>(model.Id); MessageScheduleVM.ReflectToTblMessageSchedule.Run(model, item); l.SaveChanges(item); } } return(NgResult.Succes(DEBS.Translate("MessageMdl.{0} schedules was modified", models.Count()))); }
protected override NgResult _create(MessageScheduleVM[] models) { using (var l = new MessagesModuleLogic()) { foreach (var model in models) { var item = l.Create <tblMessageSchedule>(); MessageScheduleVM.ReflectToTblMessageSchedule.Run(model, item); l.Add(item); } } return(NgResult.Succes(DEBS.Translate("MessageMdl.{0} new schedules was added", models.Count()))); }
protected override NgResult _create(EmailSenderDataProviderVM[] models) { using (var l = new MessagesModuleLogic()) { foreach (var model in models) { var item = l.Create <tblEmailSenderDataProvider>(); EmailSenderDataProviderVM.ReflectToTblEmailSenderDataProvider.Run(model, item); l.Add(item); } } return(NgResult.Succes(DEBS.Translate("MessageMdl.{0} email sms providers was added", models.Count())));; }
protected override FetchResult <FilterVM> _fetch(int?Skip, int?Count, NgControllerInstruct[] filters) { IEnumerable <FilterVM> filts; int allQueryCount; using (var l = new MessagesModuleLogic()) { var result = l.GetFiltered <tblFilter>(Skip, Count, filters, out allQueryCount); filts = result.Select(x => PocoConstructor.MakeFromObj(x, sqllogic, FilterVM.tblFilterPR)).ToArray(); } return(FetchResult <FilterVM> .Succes(filts, allQueryCount)); }
static DateTime getStartDate() { //returns last invokation end Data + 1 milisecond using (var l = new MessagesModuleLogic()) { var last = l.GetAll <tblBatchCreationManagerData>().FirstOrDefault(); if (last == null) { return(DateTime.Now.AddYears(-1)); } return(last.LastEndTime.AddMilliseconds(1)); } }
public JsonResult ClearPendingMessagesQueue() { using (var l = new MessagesModuleLogic()) { var messages = l.GetAll <tblPendingMessagesQueue>(); l.DeleteRange(messages); var msgBuilder = new StringBuilder(); msgBuilder.AppendLine(DEBS.Translate("MessageMdl.Pending messages queue was cleaned")); var msg = msgBuilder.ToString(); return(NgResultToJsonResult(NgResult.Succes(msg))); } }
public static void RunScheduledBatchSending(MessagesModuleLogic Logic, BatchSendingTaskSettings Settings = null) { if (!ScheduledBatchSending_H.GetSafeThreadPermission()) { return; } try { Settings = Settings ?? DefaultsBatchSendingTaskSettings; using (var manager = BatchSendingManager.NewInstance(Settings, Logic)) { var allPendingMails = manager.GetPendingEmails(); var allPendingSms = manager.GetPendingSms(); var batches = allPendingMails .Select(x => x.tblMessageBatch) .Distinct() .Concat(allPendingSms .Select(x => x.tblMessageBatch) .Distinct()) .ToArray(); //EMAIL var emailProviders = manager.GetActiveEmailProviders().ToList().GetEnumerator(); var Emailer = new EmailSender(manager); SendCycle(manager, allPendingMails, emailProviders, Emailer); //SMS var smsProviders = manager.GetActiveSmsProviders().ToList().GetEnumerator(); var Smser = new SmsSender(manager); SendCycle(manager, allPendingSms, smsProviders, Smser); foreach (var batch in batches) { //check if batch finished if (!batch.tblMessages.Where(x => (x.tblPendingMessagesQueue != null) && (!x.tblPendingMessagesQueue.Deleted)).Any()) { batch.FinishedOn = DateTime.Now; } //TODO THIS CHECK IS NOT RIGHT DECISION //add errors to batch if there are some if (batch.tblMessages.Where(x => x.ErrorLog != null).Any()) { (batch as IErrorLoged).AddError("Some errors have arisen at sending stage at " + DateTime.Now.ToShortDateString()); } manager.Logic.SaveLazy(batch); } Logic.SaveChanges(); //Logic.Dispose(); } } finally { ScheduledBatchSending_H.ReportTaskEnded(); } }
public void WorkService(object sender, System.Timers.ElapsedEventArgs e) { ServiceTimer.Stop(); using (var logic = new MessagesModuleLogic(new MessageContext())) { TASK_PROTOTYPE.RunScheduledBatchSending(logic, new BatchSendingTaskSettings { SmsLimit = 20, MailsLimit = 20 }); } ServiceTimer.Start(); }
public JsonResult MockMessage(int templateId, int?MaxCount) { using (var l = new MessagesModuleLogic()) { var tmpl = l.Get <tblTemplate>(templateId); if (tmpl == null) { return(NgResultToJsonResult(NgResult.Fail(DEBS.Translate("MessageMdl.Server Error: cannot find template, try save it and re-open.")))); } var items = TASK_PROTOTYPE.GetDemoMessages(l, tmpl, sqllogic, tmpl.IsSms, MaxCount ?? 0); return(NgResultToJsonResult(FetchResult <Message> .Succes(items, items.Count))); } }
protected override FetchResult <RFilterTableVM> _fetch(int?Skip, int?Count, NgControllerInstruct[] filters) { using (var l = new MessagesModuleLogic()) { var items = l.GetAll <tblRecepientFilterTableName>().Select(x => PocoConstructor.MakeFromObj(x, RFilterTableVM.tblRecepientFilterTableNamePR) ); if (items.Count() == 0) { return(FetchResult <RFilterTableVM> .Fail(DEBS.Translate("MessageMdl.There is no base tables in database"))); } return(FetchResult <RFilterTableVM> .Succes(items, items.Count())); } }
public void CollectTest() { using (var logic = new MessagesModuleLogic(new MessageContext(Settings.MessageContextConnectionString))) { using (var sqlLogic = new SqlLogic(new SqlConnectionFactory(Settings.SqlConnectionString))) { using (var Bcm = BatchCreationManager.NewInstance(new DateTime(2016, 9, 3), new DateTime(2016, 9, 5), sqlLogic, logic)) { Bcm.DontMakeTimeStamp(); var sced = logic.Get <tblMessageSchedule>(1); var Collector = new MessageDataCollector(Bcm); var result = Collector.Collect(sced); } } } }
protected override NgResult _update(RFilterVM[] models) { using (var l = new MessagesModuleLogic()) { foreach (var model in models) { var filt = l.Get <tblRecepientFilter>(model.Id); filt.Name = model.Name; filt.tblRecepientFilterTableNameId = model.BaseTableId; l.SaveChanges(filt); model.Id = filt.Id; CreateAndUpdateRFilterParts(model, l); } } return(NgResult.Succes()); }
public JsonResult SendImmediately(int ScheduleId) { using (var l = new MessagesModuleLogic()) { var sched = l.Get <tblMessageSchedule>(ScheduleId); if (sched == null) { return(NgResultToJsonResult(NgResult.Fail(DEBS.Translate("MessageMdl.Server Error: cannot find template, try save it and re-open.")))); } var result = TASK_PROTOTYPE.RunImmediateBatchCreation(sched, 1, sqllogic, l); var msgBuilder = new StringBuilder(); msgBuilder.AppendLine(DEBS.Translate("MessageMdl.Message Batch was created and will be sended as soon as possible.")); msgBuilder.AppendLine(DEBS.Translate("MessageMdl.It contains: {0} messages.", result.Messages.Count())); var msg = msgBuilder.ToString(); return(NgResultToJsonResult(NgResult.Succes(msg))); } }
public JsonResult GetColumns(int id) { string tablename; using (var l = new MessagesModuleLogic()) { var item = l.Get <tblRecepientFilterTableName>(id); if (item == null) { return(NgResultToJsonResult(NgResult.Fail(DEBS.Translate("MessageMdl.There is no binded table in database with id: {0}", id)))); } tablename = item.ReferncedTableName; } var data = sqlLogic.GetColomnsInfos(tablename); return(NgResultToJsonResult(FetchResult <IDictionary <string, string> > .Succes(data, data.Count))); }
protected override NgResult _create(RFilterVM[] models) { //TODO OPTIMIZE using (var l = new MessagesModuleLogic()) { foreach (var model in models) { var filt = l.Create <tblRecepientFilter>(); filt.Name = model.Name; filt.tblRecepientFilterTableNameId = model.BaseTableId; l.Add(filt); model.Id = filt.Id; CreateAndUpdateRFilterParts(model, l); } } return(NgResult.Succes()); }
protected void CreateAndUpdateRFilterParts(RFilterVM model, MessagesModuleLogic l) { //!!!! IMPLEMENT POCO_AUTOBINDING MECHANISM IF YOU GOING TO DO SAME THINGS IN OTHER PLACE ManagerRFilterPart <tblFilter, FilterVM>(l, model.filters, (e, m) => { e.Key = m.Key; e.Name = m.Name; e.autoUpdatedList = m.autoUpdatedList; if (!m.autoUpdatedList) { string[] ops = new string[m.ValsOps.Length]; string[] vals = new string[m.ValsOps.Length]; for (int i = 0; i < m.ValsOps.Length; i++) { ops[i] = m.ValsOps[i].Operator; vals[i] = m.ValsOps[i].Value == null ? "": m.ValsOps[i].Value.ToString(); } e.OperatorsJSON = JsonConvert.SerializeObject(ops); e.ValuesJSON = JsonConvert.SerializeObject(vals); } else { e.OperatorsJSON = "[]"; e.ValuesJSON = "[]"; } e.allowMultipleSelection = m.allowMultipleSelection; e.allowUserInput = m.allowUserInput; e.Type = m.Type; e.tblRecepientFilterId = model.Id; }); //!!!! IMPLEMENT POCO_AUTOBINDING MECHANISM IF YOU GOING TO DO SAME THINGS IN OTHER PLACE ManagerRFilterPart <tblWildcard, WildcardVM>(l, model.wildcards, (e, m) => { e.Name = m.Name; e.Key = m.Key; e.Code = m.Code; e.tblRecepientFilterId = model.Id; }); //!!!! IMPLEMENT POCO_AUTOBINDING MECHANISM IF YOU GOING TO DO SAME THINGS IN OTHER PLACE ManagerRFilterPart <tblRecepientCard, RecepientcardVM>(l, model.reccards, (e, m) => { e.Name = m.Name; e.NameKey = m.NameKey; e.PhoneKey = m.PhoneKey; e.EmailKey = m.EmailKey; e.tblRecepientFilterId = model.Id; }); }
public override void Execute() { using (var logicSetting = new tblSettingLogic()) { if (logicSetting.BatchSendingIsActive) { using (var logic = new MessagesModuleLogic(new MessageContext())) { //logger.Info("BatchSending"); TASK_PROTOTYPE.RunScheduledBatchSending(logic, new BatchSendingTaskSettings { SmsLimit = 20, MailsLimit = 20 }); logicSetting.BatchSendingLastRun = DateTime.UtcNow; } } } }