public static object GetAttributeValue(this GM_NSIReferenceRecord record, string attributeId) { if (record == null) { return(null); } var attribute = record.GM_NSIReferenceRecordAttribute.FirstOrDefault( x => ReferenceAttributeCache.GetAttribute(x.ReferenceAttributeRecId).ReferenceAttributeId.Equals(attributeId, StringComparison.InvariantCultureIgnoreCase)); if (attribute == null) { throw new ApplicationException(string.Format("не найден НСИ атрибут {0} у записи {1}({2}) справочника {3}", attributeId, record.RecordId, record.RecordName, record.ReferenceId)); } return(GetAttributeValue(attribute)); }
/// <summary> /// Сравнение значений аттрибута у двух записей НСИ справочника (записи одного типа) применимо для аттрибутов типа Integer. Real, DateTime. /// </summary> /// <param name="rec1">Первая запись справочника НСИ</param> /// <param name="rec2">Вторая запись справочника НСИ</param> /// <param name="attributeID">Идентификатов аттрибута</param> /// <returns>true - если аттрибут первой записи больше или равен аттрибуту второй записис, иначе false</returns> public static bool FirstNSIAttributeGreaterOrEqual(GM_NSIReferenceRecord rec1, GM_NSIReferenceRecord rec2, string attributeID) { // Проверка переданы ли записи справочника if (rec1 == null || rec2 == null) { throw new ApplicationException("FirstNSIAttributeGreaterOrEqual : Попытка сравнить аттрибуты пустой записи справочника"); } // Получение аттрибутов var attribute1 = rec1.GM_NSIReferenceRecordAttribute.FirstOrDefault( x => ReferenceAttributeCache.GetAttribute(x.ReferenceAttributeRecId).ReferenceAttributeId.Equals(attributeID, StringComparison.InvariantCultureIgnoreCase)); var attribute2 = rec2.GM_NSIReferenceRecordAttribute.FirstOrDefault( x => ReferenceAttributeCache.GetAttribute(x.ReferenceAttributeRecId).ReferenceAttributeId.Equals(attributeID, StringComparison.InvariantCultureIgnoreCase)); // Проверка существоания аттрибутов if (attribute1 == null) { throw new ApplicationException(string.Format("не найден НСИ атрибут {0} у записи {1}({2}) справочника {3}", attributeID, rec1.RecordId, rec1.RecordName, rec1.ReferenceId)); } if (attribute2 == null) { throw new ApplicationException(string.Format("не найден НСИ атрибут {0} у записи {1}({2}) справочника {3}", attributeID, rec2.RecordId, rec2.RecordName, rec2.ReferenceId)); } // Сравнение аттрибутов switch ((NSIDataTypes)ReferenceAttributeCache.GetAttribute(attribute1.ReferenceAttributeRecId).ReferenceAttributeType) { case NSIDataTypes.Integer: return(attribute1.ValueInteger >= attribute2.ValueInteger); case NSIDataTypes.Real: return(attribute1.ValueReal >= attribute2.ValueReal); case NSIDataTypes.DateTime: return(attribute1.ValueDate >= attribute2.ValueDate); default: throw new ArgumentOutOfRangeException(); } }
public static object GetAttributeValueOrNull(this GM_NSIReferenceRecord record, string attributeId) { if (record == null) { return(null); } var attribute = record.GM_NSIReferenceRecordAttribute.FirstOrDefault( x => ReferenceAttributeCache.GetAttributeOrNull(x.ReferenceAttributeRecId) != null && ReferenceAttributeCache.GetAttributeOrNull(x.ReferenceAttributeRecId) .ReferenceAttributeId.Equals(attributeId, StringComparison.InvariantCultureIgnoreCase)); if (attribute == null) { return(null); } return(GetAttributeValue(attribute)); }