public static Address GetAddressByOkato(IObjectSpace objectSpace, string okato) { var address = new Address(((XPObjectSpace)objectSpace).Session); var kladr = Kladr.GetKladr(objectSpace, okato); if (kladr == null) { return(null); } switch (kladr.Level) { case 1: address.Level1 = kladr; break; case 2: address.Level2 = kladr; break; case 3: address.Level3 = kladr; break; case 4: address.Level4 = kladr; break; } return(address); }
private Kladr SetFieldByLevel(int level, Kladr newValue) { switch (level) { case 1: this.level1 = newValue; OnChanged("Level1"); break; case 2: this.level2 = newValue; OnChanged("Level2"); break; case 3: this.level3 = newValue; OnChanged("Level3"); break; case 4: this.level4 = newValue; OnChanged("Level4"); break; } return(null); }
private void CheckAndRefreshAddress(Kladr newValue) { if (newValue == null) { return; } if (newValue.Level == 0) { return; } // определяем какое поле было задано int level = newValue.Level; // обнуляем вышестоящие поля for (int i = level - 1; i > 0; i--) { var field = GetFieldByLevel(i); field = null; } // проставляем новые значения var temp = newValue.Parent; while (temp != null) { SetFieldByLevel(temp.Level, temp); temp = temp.Parent; } // проверяем, что нижестоящие поля содержатся в новом значении, если нет - обнулить значения var parent = newValue; for (int i = level + 1; i < 5; i++) { var field = GetFieldByLevel(i); if (field != null) { if (field.Parent != parent) { SetFieldByLevel(i, null); } else { parent = field; } } } if (Street != null && (Street.City != GetFieldByLevel(3)) && (Street.City != GetFieldByLevel(4))) { Street = null; } // обновляем критерии UpdateCriterias(level); }
public override void AfterConstruction() { base.AfterConstruction(); this.Country = Session.FindObject <Country>(CriteriaOperator.Parse("ShortName='РОССИЯ'")); this.level1 = null; this.level2 = null; this.level3 = null; this.level4 = null; this.street = null; }
public void Copy(Address address) { this.level1 = address.level1; this.level2 = address.level2; this.level3 = address.level3; this.level4 = address.level4; this.street = address.street; this.House = address.House; this.Build = address.Build; this.Flat = address.Flat; }
/// <summary> /// Строковый формат /// </summary> /// <returns>Название объекта</returns> public override string ToString() { // Собираем полный адрес на основе ссылки на родительский элемент string result = string.Empty; Kladr kladr = this; if (kladr.Level != 5) { while (kladr != null) { result = (kladr.Type != null ? kladr.Type.ShortName + " " : string.Empty) + kladr.Name + (kladr != this ? ", " : string.Empty) + result; kladr = kladr.Parent; } } else { result = (kladr.Type != null ? kladr.Type.ShortName + " " : string.Empty) + kladr.Name; } return(result); }
/// <summary> /// Получить элемент КЛАДР-а /// </summary> /// <param name="level">Уровень</param> /// <returns>Элемент КЛАДР-а</returns> public Kladr GetElementKladr(int level) { Kladr kladr = this; if (kladr == null) { return(null); } while (true) { if (kladr.Level == level) { return(kladr); } kladr = kladr.Parent; if (kladr == null) { return(null); } } }