// Отклонение правки в каталог
        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);
        }
Exemple #2
0
        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);
 }
Exemple #4
0
        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);
            }
        }
Exemple #10
0
 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());
            }
Exemple #13
0
 public NamesHelper(long userId)
 {
     _cntx   = new producerinterface_Entities();
     db      = new Context();
     _userId = userId;
 }
Exemple #14
0
 public HeaderHelper()
 {
     _cntx = new producerinterface_Entities();
 }