Пример #1
0
        public void ClientMarkupsSynchronization()
        {
            var defaultItems = MarkupGlobalConfig.Defaults(user.Client);

            Assert.IsNotNull(defaultItems);
            Assert.IsTrue(defaultItems.Count == 6);
        }
        public virtual List <MarkupGlobalConfig> UpdateSynchronizationIfNeeds(ISession dbsession, Client client)
        {
            List <MarkupGlobalConfig> result = null;

            if (client.MarkupsSynchronization == false && ViewMarkupsSynchronization &&
                dbsession.Query <MarkupGlobalConfig>().Count(s => s.Client.Id == client.Id) == 0)
            {
                result = MarkupGlobalConfig.Defaults(client);
            }
            if (client.MarkupsSynchronization != ViewMarkupsSynchronization)
            {
                client.MarkupsSynchronization = ViewMarkupsSynchronization;
            }
            return(result);
        }
        public void UpdateDrugstore(
            [ARDataBind("client", AutoLoad = AutoLoadBehavior.Always)] Client client,
            [ARDataBind("drugstore.SmartOrderRules", AutoLoad = AutoLoadBehavior.NullIfInvalidKey)] SmartOrderRules smartOrderRules,
            [ARDataBind("drugstore", AutoLoad = AutoLoadBehavior.NullIfInvalidKey, Expect = "drugstore.OfferMatrixExcludes")] DrugstoreSettings drugstore,
            [DataBind("regionSettings")] RegionSettings[] regionSettings, [DataBind("markupsSynchronization")] MarkupsSynchronizationView markupsSynchronization,
            ulong homeRegion)
        {
            Admin.CheckClientPermission(client);

            if (Form["ResetReclameDate"] != null)
            {
                new ResetReclameDate(client).Execute(DbSession);
                Notify("Сброшена");
                RedirectTo(client);
                return;
            }

            var oldMaskRegion = client.MaskRegion;

            client.HomeRegion = DbSession.Load <Region>(homeRegion);
            client.UpdateRegionSettings(regionSettings);
            if (!IsValid(client))
            {
                Settings(client.Id);
                PropertyBag["client"] = client;
                RenderView("Settings");
                return;
            }

            if (drugstore.EnableSmartOrder)
            {
                if (drugstore.SmartOrderRules == null && smartOrderRules == null)
                {
                    drugstore.SmartOrderRules = new SmartOrderRules();
                    BindObjectInstance(drugstore.SmartOrderRules, "drugstore.SmartOrderRules", AutoLoadBehavior.NewRootInstanceIfInvalidKey);
                }
                else
                {
                    drugstore.SmartOrderRules = smartOrderRules;
                }
            }
            if (drugstore.IsChanged(d => d.IgnoreNewPrices) && !drugstore.IgnoreNewPrices)
            {
                client.UpdatePricesForClient(DbSession);
                Warning("Вы сняли опцию \"Не подключать новые прайсы 'Административно'\", целесообразно отправить всем поставщикам повторное уведомление о регистрации. Данные сохранены.");
            }
            drugstore.BeforeSave();

            markupsSynchronization.UpdateSynchronizationIfNeeds(DbSession, client)?.ForEach(s => {
                DbSession.Save(s);
                var audit = new AuditRecord(client)
                {
                    ObjectId    = s.Id,
                    IsHtml      = true,
                    Name        = MarkupGlobalConfig.GetTypeDescription(s.Type),
                    MessageType = LogMessageType.System,
                    Message     = $"<strong>Добавлены</strong> 'настройки наценок': <br/>{s.GetLogState()}"
                };
                DbSession.Save(audit);
            });
            DbSession.Save(client);

            DbSession.Save(drugstore);
            DbSession.Flush();
            if (oldMaskRegion != client.MaskRegion)
            {
                client.MaintainIntersection(DbSession);
            }

            Notify("Сохранено");
            RedirectTo(client);
        }