示例#1
0
        public virtual void Delete(ISession session)
        {
            foreach (var user in Users.ToArray())
            {
                user.Delete();
            }

            foreach (var address in Addresses.ToArray())
            {
                address.Delete();
            }

            var payers = Payers.ToArray();

            Payers.Clear();
            foreach (var payer in payers)
            {
                //какая то фигня с загрузкой объектов
                payer.Clients.Remove(payer.Clients.First(c => c.Id == Id));
                if (payer.CanDelete(session))
                {
                    session.Delete(payer);
                }
                else
                {
                    payer.UpdatePaymentSum();
                }
            }


            var rule = Settings.SmartOrderRules;

            if (rule != null)
            {
                var overHaveSameSettins = ActiveRecordLinqBase <DrugstoreSettings> .Queryable.Any(s => s.Id != Id && s.SmartOrderRules == rule);

                if (!overHaveSameSettins)
                {
                    Settings.SmartOrderRules = null;
                    session.Delete(rule);
                }
            }
            AuditRecord.DeleteAuditRecords(this);
            session.Delete(this);
        }
示例#2
0
        protected virtual void CommonChangePayer(Action changer, Payer payer)
        {
            var oldPayers = Payers.ToArray();

            Payers.Clear();
            Payers.Add(payer);
            foreach (var user in Users)
            {
                user.Payer.Users.Remove(user);
                user.Payer = payer;
                user.Payer.Users.Add(user);
            }

            changer();

            payer.UpdatePaymentSum();
            foreach (var oldPayer in oldPayers)
            {
                oldPayer.UpdatePaymentSum();
            }
        }
示例#3
0
        public virtual void ChangePayer(ISession session, Payer payer)
        {
            var oldPayers = Payers.ToArray();

            CommonChangePayer(() => {
                foreach (var address in Addresses)
                {
                    address.Payer.Addresses.Remove(address);
                    address.Payer = payer;
                    address.Payer.Addresses.Add(address);
                }

                var legalEntities = oldPayers.SelectMany(p => p.Orgs).ToList();
                if (legalEntities.Count > 1)
                {
                    throw new Exception(string.Format("Количество ЮрЛиц у клиента {0} более одного, не могу поменять плательщика у клиента", Id));
                }

                var legalEntity   = legalEntities.First();
                legalEntity.Payer = payer;
                session.SaveOrUpdate(legalEntity);
            }, payer);
        }