示例#1
0
 /// <summary>
 /// Значение заданного атрибута для заданной строки НСИ справочника
 /// </summary>
 /// <param name="referenceId">Ссылка на НСИ справочник</param>
 /// <param name="recordId">ИД строки НСИ справочника</param>
 /// <param name="attributeId">ИД атрибута НСИ справочника</param>
 /// <returns>Значение атрибута</returns>
 public static object GetNSIReferenceRecordAttributeValue(string referenceId, string recordId, string attributeId)
 {
     using (var entities = new NsiModel())
     {
         return(GetNSIReferenceRecordAttributeValue(entities, referenceId, recordId, attributeId));
     }
 }
        /// <summary>
        /// Обновить настройки справочников для выбранной БД.
        /// </summary>
        private void UpdateNsiCollection()
        {
            try
            {
                if (SelectedDb == null)
                {
                    return;
                }

                HourGlass.Enable = true;

                NsiModel = null;

                string connectionString = DbConnectionHelper.BuildConnection(SelectedDb.DbName);

                NsiModel = new NsiModel(connectionString);

                NsiModel.GM_NSIReferenceSet.Load();
                //Все справочники
                NsiCollection = NsiModel.GM_NSIReferenceSet.Local;
            }
            catch (Exception)
            {
                //TODO log
            }
            finally
            {
                HourGlass.Enable = false;
            }
        }
示例#3
0
        public static GM_NSIReferenceRecord GetNSIReferenceRecord(long recId, NsiModel context = null)
        {
            if (context != null)
            {
                return(context.GM_NSIReferenceRecordSet.FirstOrDefault(x => x.RecId == recId));
            }

            using (context = new NsiModel())
            {
                return(context.GM_NSIReferenceRecordSet.FirstOrDefault(x => x.RecId == recId));
            }
        }
示例#4
0
        /// <summary>
        /// Получить запись указанного справочника NSI по указанному RecordID
        /// </summary>
        /// <param name="referenceId">ID справочника (задается через <see cref="NSIConstants"/>)</param>
        /// <param name="recordId">ID записи справочника (задается через <see cref="NSIConstants"/>)</param>
        /// <param name="context">Контекст, используемый для поиска</param>
        /// <returns>Возвращает запись справочника типа <see cref="GM_NSIReferenceRecord"/> либо Null</returns>
        public static GM_NSIReferenceRecord GetNSIReferenceRecordNullable(string referenceId, string recordId, NsiModel context = null)
        {
            if (context != null)
            {
                return(GetNSIReferenceRecord(context, referenceId, recordId));
            }

            using (context = new NsiModel())
            {
                return(GetNSIReferenceRecord(context, referenceId, recordId));
            }
        }
示例#5
0
        /// <summary>
        /// Значение заданного атрибута для заданной строки НСИ справочника
        /// </summary>
        /// <param name="context">Контекст доступа к БД</param>
        /// <param name="referenceId">Ссылка на НСИ справочник</param>
        /// <param name="recordId">ИД строки НСИ справочника</param>
        /// <param name="attributeId">ИД атрибута НСИ справочника</param>
        /// <returns>Значение атрибута, либо null</returns>
        public static object GetNSIReferenceRecordAttributeValue(NsiModel context, string referenceId, string recordId, string attributeId)
        {
            // Чтобы не плодить лишние перекрестные вызовы прочих методов и не плодить лишние запросы к БД,
            // данный метод включает некоторый копипаст прочих методов, но является самодостаточным

            if (context == null)
            {
                throw new ArgumentNullException("Не задан контекст доступа к данным");
            }
            if (String.IsNullOrEmpty(referenceId) || String.IsNullOrEmpty(recordId) || String.IsNullOrEmpty(attributeId))
            {
                throw new ArgumentNullException("Заданы не все параметры для поиска значения атрибута записи НСИ справочника");
            }

            var nsiRecord    = context.GM_NSIReferenceRecordSet.FirstOrDefault(x => x.ReferenceId == referenceId && x.RecordId == recordId);
            var nsiAttribute = context.GM_NSIReferenceAttributeSet.FirstOrDefault(x => x.ReferenceId == referenceId && x.ReferenceAttributeId == attributeId);

            if (nsiRecord != null && nsiAttribute != null)
            {
                var nsiRecordAttribute = nsiRecord.GM_NSIReferenceRecordAttribute.FirstOrDefault(x => x.ReferenceAttributeRecId == nsiAttribute.RecId);

                if (nsiRecordAttribute != null)
                {
                    switch ((NSIDataTypes)nsiAttribute.ReferenceAttributeType)
                    {
                    case NSIDataTypes.String:
                        return(nsiRecordAttribute.ValueString);

                    case NSIDataTypes.Integer:
                        return(nsiRecordAttribute.ValueInteger);

                    case NSIDataTypes.Real:
                        return(nsiRecordAttribute.ValueReal);

                    case NSIDataTypes.DateTime:
                        return(nsiRecordAttribute.ValueDate);

                    case NSIDataTypes.ReferenceRecord:
                        return(nsiRecordAttribute.ValueRecord);

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }
            return(null);
        }
示例#6
0
        /// <summary>
        /// Получить запись указанного справочника NSI по указанному значению атрибута
        /// </summary>
        /// <param name="referenceId">ID справочника (задается через <see cref="NSIConstants"/>)</param>
        /// <param name="atrId">ID атрибута (задается через <see cref="NSIConstants"/>)</param>
        /// /// <param name="atrVal">значение указанного атрибута</param>
        /// <param name="context">Контекст, используемый для поиска</param>
        /// <returns>Возвращает запись справочника типа <see cref="GM_NSIReferenceRecord"/> либо null</returns>
        public static GM_NSIReferenceRecord GetNSIReferenceRecordByAttribute(string referenceId, string atrId, object atrVal, NsiModel context = null)
        {
            if (String.IsNullOrWhiteSpace(referenceId) ||
                String.IsNullOrWhiteSpace(atrId) ||
                (atrVal is String ? String.IsNullOrWhiteSpace(atrVal as String) : atrVal == null))
            {
                return(null);
            }

            List <GM_NSIReferenceRecord> records;

            if (context != null)
            {
                records = context.GM_NSIReferenceRecordSet
                          .Where(x => x.ReferenceId.Equals(referenceId) &&
                                 x.GM_NSIReferenceRecordAttribute.Any(
                                     a => a.GM_NSIReferenceAttribute.ReferenceAttributeId.Equals(atrId))).ToList();
                return(records.FirstOrDefault(x =>
                {
                    var val = x.GetAttributeValue(atrId);
                    // Если атрибут является строковым - нужно искомое значение атрибута привести к строке, даже если в качестве значения передана не строка!
                    return val is String
                        ? String.Equals((val as String), atrVal.ToString(), StringComparison.OrdinalIgnoreCase)
                        : val == atrVal;
                }));
            }

            using (context = new NsiModel())
            {
                records = context.GM_NSIReferenceRecordSet
                          .Where(x => x.ReferenceId.Equals(referenceId) &&
                                 x.GM_NSIReferenceRecordAttribute.Any(
                                     a => a.GM_NSIReferenceAttribute.ReferenceAttributeId.Equals(atrId))).ToList();
                return(records.FirstOrDefault(x =>
                {
                    var val = x.GetAttributeValue(atrId);
                    return val is String
                        ? String.Equals((val as String), atrVal.ToString(), StringComparison.OrdinalIgnoreCase)
                        : val == atrVal;
                }));
            }
        }
示例#7
0
        public static GM_NSIReferenceRecord GetNSIReferenceRecordByAttributeSafe(string referenceId, string atrId, object atrVal, NsiModel context = null)
        {
            var record = GetNSIReferenceRecordByAttribute(referenceId, atrId, atrVal, context);

            return(record ?? new GM_NSIReferenceRecord
            {
                RecId = 0,
                RecordId = string.Empty,
                RecordName = string.Empty
            });
        }
示例#8
0
 private static GM_NSIReferenceRecord GetNSIReferenceRecord(NsiModel context, string referenceId, string recordId)
 {
     return(context.GM_NSIReferenceRecordSet.FirstOrDefault(x =>
                                                            x.ReferenceId.Equals(referenceId) &&
                                                            x.RecordId.Equals(recordId)));
 }
示例#9
0
 /// <summary>
 /// Получить запись указанного справочника NSI по указанному RecordID
 /// </summary>
 /// <param name="referenceId">ID справочника (задается через <see cref="NSIConstants"/>)</param>
 /// <param name="recordId">ID записи справочника (задается через <see cref="NSIConstants"/>)</param>
 /// <param name="context">Контекст, используемый для поиска</param>
 /// <returns>Возвращает запись справочника типа <see cref="GM_NSIReferenceRecord"/> либо пустую заглушку</returns>
 public static GM_NSIReferenceRecord GetNSIReferenceRecord(string referenceId, string recordId, NsiModel context = null)
 {
     return(GetNSIReferenceRecordNullable(referenceId, recordId, context));
 }