// Отклонение правки в каталог public static bool SendRejectCatalogChangeMessage(producerinterface_Entities cntx, Account user, string catalogName, string fieldName, string before, string after, string comment) { //throw new NotImplementedException(); bool mailSentToTheUser = false; var siteName = ConfigurationManager.AppSettings["SiteName"]; var mailForm = cntx.mailformwithfooter.Single(x => x.Id == (int)MailType.RejectCatalogChange); var subject = ReliableTokenizer(mailForm.Subject, new { SiteName = siteName }); var header = ReliableTokenizer(mailForm.Header, new { UserName = user.Name }); var body = $"{header}\r\n\r\n{ReliableTokenizer(mailForm.Body, new {FieldName = fieldName, CatalogName = catalogName, Before = before, After = after, Comment = comment})}\r\n\r\n{mailForm.Footer}"; //var attachments = EmailSender.GetAttachments(cntx, MailType.RejectCatalogChange); if (!user.IsAdmin || user.IsAdmin && user.Login.IndexOf("@") != -1) { EmailSender.SendEmail(user.Login, subject, body, new List <string>(), false); mailSentToTheUser = true; } var di = new DiagnosticInformation(user) { Body = body, ActionName = MailType.RejectCatalogChange.DisplayName() }; var mailInfo = ConfigurationManager.AppSettings["MailInfo"]; EmailSender.SendEmail(mailInfo, subject, di.ToString(cntx), new List <string>(), false); return(mailSentToTheUser); }
public PromotionSnapshot(ProducerInterfaceCommon.ContextModels.Account author, Promotion promotion, producerinterface_Entities db, Context db2, string comment = null) { Author = db2.Users.Find(author.Id); AuthorName = Author.DisplayName; CreatedOn = DateTime.Now; Promotion = promotion; Name = promotion.Name; SnapshotName = "Изменена промоакция"; SnapshotComment = comment; Annotation = promotion.Annotation; Status = promotion.GetStatus().DisplayName(); Begin = promotion.Begin; End = promotion.End; File = promotion.MediaFile; var ids = promotion.PromotionToDrug.Select(x => x.DrugId).ToArray(); var products = db.assortment.Where(x => ids.Contains(x.CatalogId)).Select(x => x.CatalogName).ToArray(); ProductsJson = JsonConvert.SerializeObject(products); var regions = db.Regions((ulong)promotion.RegionMask).Select(x => x.Name).ToArray(); RegionsJson = JsonConvert.SerializeObject(regions); ids = promotion.PromotionsToSupplier.Select(x => x.SupplierId).ToArray(); var suppliers = db.suppliernames.Where(x => ids.Contains(x.SupplierId)).Select(x => x.SupplierName).ToArray(); SuppliersJson = JsonConvert.SerializeObject(suppliers); }
public EmailSender(producerinterface_Entities db, Context db2, Account currentUser) { this.db = db; this.db2 = db2; this.currentUser = currentUser; diagnostics = new DiagnosticInformation(currentUser); }
public void Load_regions() { var cntx = new producerinterface_Entities(); var regions = cntx.Regions(); Assert.That(regions.Count, Is.GreaterThan(0)); Assert.That(regions[0].Id, Is.GreaterThan(0)); }
public void Execute(IJobExecutionContext context) { var key = context.JobDetail.Key; // jparam хранит параметры отчета, неспецифические к моменту запуска var report = (Report)context.JobDetail.JobDataMap["param"]; // tparam хранит временнЫе параметы var interval = (TriggerParam)context.Trigger.JobDataMap["tparam"]; if (interval is IInterval && report is IInterval) { ((IInterval)report).DateFrom = ((IInterval)interval).DateFrom; ((IInterval)report).DateTo = ((IInterval)interval).DateTo; } else { ((INotInterval)report).DateFrom = ((INotInterval)interval).DateFrom; } logger.Info($"Start running job {key.Group} {key.Name}"); try { report.Run(key, interval); } catch (Exception e) { logger.Error($"Job {key.Group} {key.Name} run failed:" + e.Message, e); var db = new producerinterface_Entities(); // вытащили расширенные параметры задачи var jext = db.jobextend.Single(x => x.JobName == key.Name && x.JobGroup == key.Group && x.Enable); // отправили статус об ошибке отчета jext.DisplayStatusEnum = DisplayStatus.Error; jext.LastRun = DateTime.Now; db.SaveChanges(); var ip = "неизвестен (авт. запуск)"; if (interval is RunNowParam) { ip = ((RunNowParam)interval).Ip; } var user = db.Account.First(x => x.Id == interval.UserId); user.IP = ip; var mail = new EmailSender(db, new Context(), user); mail.SendReportErrorMessage(jext, e.Message); return; } logger.Info($"Job {key.Group} {key.Name} run finished"); }
// Обратная связь, сотрудникам public static void SendFeedBackMessage(producerinterface_Entities cntx, Account user, string message, string Ip) { var siteName = ConfigurationManager.AppSettings["SiteName"]; var mailInfo = ConfigurationManager.AppSettings["MailInfo"]; var subject = $"Сообщение пользователя с сайта {siteName}"; var di = new DiagnosticInformation(user) { Body = message, ActionName = "Обратная связь" }; EmailSender.SendEmail(mailInfo, subject, di.ToString(cntx), null, false); }
// Именение МНН препарата, сотрудникам public static void SendMnnChangeMessage(producerinterface_Entities cntx, Account user, string catalogName, string before, string after) { var siteName = ConfigurationManager.AppSettings["SiteName"]; var mailForm = cntx.mailformwithfooter.Single(x => x.Id == (int)MailType.CatalogMNN); var subject = ReliableTokenizer(mailForm.Subject, new { SiteName = siteName }); var body = $"{ReliableTokenizer(mailForm.Body, new { CatalogName = catalogName, Before = before, After = after })}"; var di = new DiagnosticInformation(user) { Body = body, ActionName = MailType.CatalogMNN.DisplayName() }; var catalogChangeEmail = ConfigurationManager.AppSettings["CatalogChangeEmail"]; EmailSender.SendEmail(catalogChangeEmail, subject, di.ToString(cntx), null, false); }
// Запрос регистрации производителя, расширенное сотрудникам public static void ProducerRequestMessage(producerinterface_Entities cntx, Account user, string message, string contacts) { var siteName = ConfigurationManager.AppSettings["SiteName"]; var mailForm = cntx.mailformwithfooter.Single(x => x.Id == (int)MailType.ProducerRequest); var subject = ReliableTokenizer(mailForm.Subject, new { SiteName = siteName }); var body = $"{ReliableTokenizer(mailForm.Body, new { Message = message, Contacts = contacts })}"; var di = new DiagnosticInformation(user) { Body = body, ActionName = MailType.ProducerRequest.DisplayName() }; var mailInfo = ConfigurationManager.AppSettings["MailInfo"]; EmailSender.SendEmail(mailInfo, subject, di.ToString(cntx), null, false); }
public void Find(producerinterface_Entities db, Context db2, long producerId) { var promoList = db2.Promotions.Where(x => x.ProducerId == producerId).OrderByDescending(x => x.Begin) .ThenByDescending(x => x.Id).ToList(); var suppliers = db.suppliernames.ToDictionary(x => x.SupplierId, x => x.SupplierName); var assortment = db.assortment.Where(x => x.ProducerId == producerId).ToDictionary(x => x.CatalogId, x => x.CatalogName); foreach (var item in promoList) { unchecked { if (item.RegionMask == 0) { item.RegionMask = (long)ulong.MaxValue; } } var supplierIds = item.PromotionsToSupplier.Select(x => x.SupplierId).ToList(); var drugsIds = item.PromotionToDrug.Select(x => x.DrugId).ToList(); var status = item.GetStatus(); if (Status != null && Status != status) { continue; } var itemUi = new PromotionUi() { Id = item.Id, Name = item.Name, Annotation = item.Annotation, Begin = item.Begin.ToString("dd.MM.yyyy"), End = item.End.ToString("dd.MM.yyyy"), PromotionFileId = item.MediaFile?.Id, PromotionFileName = item.MediaFile?.ImageName, AllSuppliers = item.AllSuppliers, ActualStatus = status, DrugList = assortment.Where(x => drugsIds.Contains(x.Key)).Select(x => x.Value).ToList(), RegionList = db.Regions((ulong)item.RegionMask).Select(x => x.Name).ToList(), SuppierRegions = suppliers.Where(x => supplierIds.Contains(x.Key)).Select(x => x.Value).ToList(), RowStyle = item.RowStyle }; Items.Add(itemUi); } }
public Processor() { _type = typeof(T); db = new producerinterface_Entities(); _helper = new HeaderHelper(); }
public ReportHelper(producerinterface_Entities db) { this.db = db; }
public string ToString(producerinterface_Entities cntx) { var sb = new StringBuilder(); // может быть незарегистрированный пользователь if (User != null) { // у админов AccountCompany is null var ac = User.AccountCompany; if (ProducerId == null && ac != null && ac.ProducerId != null) { ProducerId = ac.ProducerId; } if (string.IsNullOrEmpty(ProducerName) && ProducerId != null) { var producer = cntx.producernames.SingleOrDefault(x => x.ProducerId == ac.ProducerId); if (producer != null) { ProducerName = producer.ProducerName; } } // у новых пользоватей может не быть производителя, если они не нашли его в системе, а указали его if (string.IsNullOrEmpty(ProducerName) && ProducerId == null && ac != null) { ProducerName = "отсутствует"; } } if (!ActionDate.HasValue) { ActionDate = DateTime.Now; } sb.AppendLine(Body); sb.AppendLine(); sb.AppendLine(); sb.AppendLine("Дополнительная информация"); if (User != null) { sb.AppendLine($"пользователь: {User.Name} (id={User.Id}, {User.Login}, IP {User.IP})"); sb.AppendLine($"производитель: {ProducerName} (id={ProducerId})"); } else { sb.AppendLine($"Незарегистрированный пользователь (IP {User?.IP ?? IP})"); } sb.AppendLine($"действие: {ActionName}, время {ActionDate}"); if (!string.IsNullOrEmpty(ReportId)) { sb.AppendLine($"отчет: {ReportName} (id={ReportId})"); } if (!string.IsNullOrEmpty(ErrorMessage)) { sb.AppendLine($"сообщение об ошибке: {ErrorMessage}"); } if (User?.UserType == TypeUsers.ControlPanelUser) { sb.AppendLine($"письмо отправлено из Панели управления администратором: {User.Login}"); } return(sb.ToString()); }
public NamesHelper(long userId) { _cntx = new producerinterface_Entities(); db = new Context(); _userId = userId; }
public HeaderHelper() { _cntx = new producerinterface_Entities(); }