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)); }
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)); }