Ejemplo n.º 1
0
        public virtual AuditRecord MoveToAnotherClient(ISession session, Client newOwner, LegalEntity legalEntity)
        {
            if (!newOwner.Orgs().Any(o => o.Id == legalEntity.Id))
            {
                throw new Exception(String.Format("Не могу переместить пользователя {0} т.к. юр. лицо {1} не принадлежит клиенту {2}",
                                                  this, legalEntity, newOwner));
            }

            var regions = session.Query <Region>().ToArray();

            // Если маски регионов не совпадают, добавляем записи в UserPrices для тех регионов,
            // которых не было у старого клиента, но они есть у нового клиента
            if (Client.MaskRegion != newOwner.MaskRegion)
            {
                foreach (var region in regions)
                {
                    // Если этот регион есть у старого клиента, пропускаем его
                    if ((region.Id & Client.MaskRegion) > 0)
                    {
                        continue;
                    }
                    // Если региона нет у старого клиента, но он есть у нового,
                    // и для этого пользователя нет прайсов в этом регионе добавляем прайсы для этого региона
                    if ((region.Id & newOwner.MaskRegion) > 0)
                    {
                        if (!HavePricesInRegion(session, region))
                        {
                            AddPrices(session, newOwner, region);
                        }
                    }
                }
            }
            var message = String.Format("Перемещение пользователя от {0} к {1}", Client, newOwner);

            AuditRecord.UpdateLogs(newOwner.Id, this);
            Client      = newOwner;
            RootService = newOwner;
            if (Payer != legalEntity.Payer)
            {
                Payer = legalEntity.Payer;
            }
            InheritPricesFrom = null;
            ContactGroup?.MoveTo(newOwner.ContactGroupOwner);
            session.Save(this);

            return(new AuditRecord(message, this));
        }
Ejemplo n.º 2
0
        public virtual AuditRecord MoveToAnotherClient(ISession session, Client newOwner, LegalEntity newLegalEntity)
        {
            if (!newOwner.Orgs().Any(o => o.Id == newLegalEntity.Id))
            {
                throw new Exception(String.Format("Не могу переместить адрес {0} т.к. юр. лицо {1} не принадлежит клиенту {2}",
                                                  this, newLegalEntity, newOwner));
            }

            Maintainer.MaintainIntersection(session, newOwner, newLegalEntity);
            MoveAddressIntersection(session, newOwner, newLegalEntity, Client, LegalEntity);

            var message = String.Format("Перемещение адреса доставки от {0} к {1}", Client, newOwner);

            Client      = newOwner;
            Payer       = newLegalEntity.Payer;
            LegalEntity = newLegalEntity;
            ContactGroup?.MoveTo(newOwner.ContactGroupOwner);
            AuditRecord.UpdateLogs(newOwner.Id, this);
            session.Save(this);

            return(new AuditRecord(message, this));
        }