public BaseFindableObject(BaseFindableObject obj) { if (obj == null) { return; } Street = obj.Street; HouseNumber = obj.HouseNumber; }
/// <summary> /// Ищет совпадение по объектам /// </summary> /// <param name="obj">Объект, с которым сверяем</param> /// <returns></returns> public bool IsTheSameObject(BaseFindableObject obj) { if (obj == null) { return(false); } if (!TheSameStreet(obj.Street)) { return(false); } // они дожны быть точными, инчае можем найти совпадения. // например, 1 и 1к2 return(HouseNumber == obj.HouseNumber); }
/// <summary> /// Возвращает тот же дом, только не учитывает корпус /// </summary> /// <param name="obj"></param> /// <param name="findCondition">Условия поиска</param> /// <returns></returns> public bool TheSameHouse(BaseFindableObject obj, ReturnConditions findCondition) { // нет объекта, ошибка if (obj == null) { return(false); } // улицы разные if (!TheSameStreet(obj.Street)) { return(false); } // нашли номера домов var number = new HouseNumber(HouseNumber); var objNumber = new HouseNumber(obj.HouseNumber); // разные номера, выходим if (number.Number != objNumber.Number) { return(false); } // нужно сравнить слеши if ((findCondition & ReturnConditions.CompareSlash) == ReturnConditions.CompareSlash && number.AfterSlash != objNumber.AfterSlash) { return(false); } // возвращаем что угодно if ((findCondition & ReturnConditions.All) == ReturnConditions.All) { return(true); } // сравниваем значения var compare = number.Housing.CompareTo(objNumber.Housing); // возвращаем, если стоит включать себя if (compare == 0 && (findCondition & ReturnConditions.Self) == ReturnConditions.Self) { return(true); } // нашли меньше if (compare < 0 && (findCondition & ReturnConditions.LessThen) == ReturnConditions.LessThen) { return(true); } // нашли больше if (compare > 0 && (findCondition & ReturnConditions.MoreThen) == ReturnConditions.MoreThen) { return(true); } return(false); }