/// <summary> /// Возвращает строку SQL запроса на селектирование данных из БД /// </summary> public static string GetSelectQuery(BaseComponent component, bool llpMark) { ICommonFilter baseComponentFilter = GetWhereStatement(component); ICommonFilter llpMarkFilter = new CommonFilter <bool>(Entities.General.Accessory.Component.LLPMarkProperty, llpMark); return(BaseQueries.GetSelectQueryWithWhere <Entities.General.Accessory.Component>(new[] { llpMarkFilter, baseComponentFilter }, true)); }
/// <summary> /// Возвращает объект определенного типа с заданным Id /// </summary> /// <typeparam name="T">Тип объекта</typeparam> /// <param name="filter">Дополнительные фильтр</param> /// <param name="loadChild">Загружать объекты, помеченные атрибутом Child</param> /// <param name="loadForced">Загружать поля, помеченные как принудительные</param> /// <param name="loadDeleted">Загружать элементы, помеченные как удаленные</param> /// <returns></returns> public T GetObject <T>(ICommonFilter filter, bool loadChild = false, bool loadForced = false, bool loadDeleted = false) where T : BaseEntityObject, new() { return((T)GetObject(typeof(T), new[] { filter }, loadChild, false, loadForced, loadDeleted)); }
/// <summary> /// Удаляет запись о выполнении директивы /// </summary> /// <param name="directiveRecord"></param> public void Delete(DirectiveRecord directiveRecord) { if (directiveRecord.Dispatched == new DateTime(0001, 01, 01)) { directiveRecord.Dispatched = DateTimeExtend.GetCASMinDateTime(); } directiveRecord.IsDeleted = true; _newKeeper.Save(directiveRecord); // нужно обнулить математический аппарат объекта, которому принадлежит запись о выполнении // а также удалить выполнение директивы из коллекции выполнений директивы IDirective parent = directiveRecord.Parent; if (parent == null) { throw new Exception("1040: Failed to specify directive record parent type"); } ICommonFilter filter = null; if (parent is MaintenanceCheck) { filter = new CommonFilter <int>(DirectiveRecord.MaintenanceCheckRecordIdProperty, directiveRecord.ItemId); } else if (parent is MaintenanceDirective) { filter = new CommonFilter <int>(DirectiveRecord.MaintenanceDirectiveRecordIdProperty, directiveRecord.ItemId); } else if (parent is ComponentDirective) { if (directiveRecord.MaintenanceDirectiveRecordId > 0) { filter = new CommonFilter <int>(DirectiveRecord.MaintenanceDirectiveRecordIdProperty, directiveRecord.ItemId); } } if (filter != null) { _keeper.MarkAsDeleted <DirectiveRecord>(new[] { filter }); } parent.PerformanceRecords.Remove(directiveRecord); }
private Control GetControl(ICommonFilter commonFilter) { #region ЭУ для базовых типов if (commonFilter is CommonFilter <bool> ) { var boolFilter = commonFilter as CommonFilter <bool>; var boolFilterControl = new CommonBoolFilterControl(boolFilter) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(boolFilterControl); } if (commonFilter is CommonFilter <int> ) { var stringFilter = commonFilter as CommonFilter <int>; var intFilterControl = new CommonIntFilterControl(stringFilter) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(intFilterControl); } if (commonFilter is CommonFilter <string> ) { var stringFilter = commonFilter as CommonFilter <string>; var stringFilterControl = new CommonStringFilterControl(stringFilter) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(stringFilterControl); } if (commonFilter is CommonFilter <DateTime> ) { var dateFilter = commonFilter as CommonFilter <DateTime>; DateTime minDate = DateTimeExtend.GetCASMinDateTime(); DateTime maxDate = DateTime.Today; if (_items != null && _items.Count > 0 && commonFilter.FilterProperty.PropertyType.Name == nameof(DateTime)) { var p = commonFilter.FilterProperty; var preCollection = _items.OfType <BaseEntityObject>() .Select(o => p.GetValue(o, null)) .OfType <DateTime>() .OrderBy(time => time) .ToList(); var preMaxDate = preCollection[preCollection.Count - 1]; var preMinDate = preCollection[0]; if (preMinDate > minDate) { minDate = preMinDate; } if (preMaxDate > maxDate) { maxDate = preMaxDate; } } var dateFilterControl = new CommonDateTimePeriodFilterControl(dateFilter, minDate, maxDate) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(dateFilterControl); } #endregion #region ЭУ для ENUM, IDictionaryItem, IBaseEntityObject Type filterType = commonFilter.GetType(); if (filterType.IsGenericType) { Type genericArgumentType = filterType.GetGenericArguments().First(); if (genericArgumentType.IsEnum) { try { var enumFilterControl = new CommonEnumFilterControl(commonFilter) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(enumFilterControl); } catch (Exception) { return(null); } } if (genericArgumentType.GetInterface(nameof(IDictionaryItem)) != null) { try { var dictionaryFilter = (ICommonFilter <IDictionaryItem>)commonFilter; IDictionaryItem[] values = null; if (commonFilter.FilterProperty.PropertyType.GetInterface(typeof(IEnumerable <>).Name) != null) { Type t = commonFilter.FilterProperty.PropertyType; if (t != null) { Type filterPropertyGenericArgument = t.GetGenericArguments().FirstOrDefault(); if (filterPropertyGenericArgument != null && filterPropertyGenericArgument.GetInterface(nameof(IDictionaryItem)) != null) { PropertyInfo p = commonFilter.FilterProperty; values = _items.OfType <BaseEntityObject>() .Select(o => p.GetValue(o, null)) .Where(o => o != null) .Cast <IEnumerable>() .SelectMany(enumerable => enumerable.OfType <IDictionaryItem>()) .Select(o => o) .ToArray(); } } } else { PropertyInfo p = commonFilter.FilterProperty; values = _items.OfType <BaseEntityObject>() .Select(o => p.GetValue(o, null)) .OfType <IDictionaryItem>() .Distinct() .ToArray(); } var dictionaryFilterControl = new CommonDictionaryFilterControl(dictionaryFilter, values) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(dictionaryFilterControl); } catch (Exception) { return(null); } } if (genericArgumentType.GetInterface(nameof(IBaseEntityObject)) != null) { try { var entitiesFilter = commonFilter as ICommonFilter <IBaseEntityObject>; BaseEntityObject[] values = null; if (_items != null && _items.Count > 0) { if (commonFilter.FilterProperty.PropertyType.GetInterface(typeof(IEnumerable <>).Name) != null) { //Свойство типа является универсальным типом, типом аргумента которого является //является тип аргумента данного фильтра Type t = commonFilter.FilterProperty.PropertyType; while (t != null) { if (t.IsGenericType) { break; } t = t.BaseType; } if (t != null) { Type filterPropertyGenericArgument = t.GetGenericArguments().FirstOrDefault(); if (filterPropertyGenericArgument != null && filterPropertyGenericArgument.GetInterface(nameof(IBaseEntityObject)) != null) { PropertyInfo p = commonFilter.FilterProperty; values = _items.OfType <BaseEntityObject>() .Select(o => p.GetValue(o, null)) .Where(o => o != null) .Cast <IEnumerable>() .SelectMany(enumerable => enumerable.OfType <BaseEntityObject>()) .Select(o => o) .ToArray(); } } } if (commonFilter.FilterProperty.PropertyType.GetInterface(nameof(IBaseEntityObject)) != null) { PropertyInfo p = commonFilter.FilterProperty; values = _items.OfType <BaseEntityObject>() .Select(o => p.GetValue(o, null)) .OfType <BaseEntityObject>() .ToArray(); } } var baseEntityObjectFilterControl = new CommonBaseEntityObjectFilterControl(entitiesFilter, values) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(baseEntityObjectFilterControl); } catch (Exception) { return(null); } } } #endregion #region ЭУ для CommonFilter<Lifelength> if (commonFilter is CommonFilter <Lifelength> ) { var lifelengthFilter = commonFilter as CommonFilter <Lifelength>; Lifelength[] values = null; if (_items != null && _items.Count > 0 && commonFilter.FilterProperty.PropertyType.Name == nameof(Lifelength)) { PropertyInfo p = commonFilter.FilterProperty; values = _items.OfType <BaseEntityObject>() .Select(o => p.GetValue(o, null)) .OfType <Lifelength>() .ToArray(); } var stringFilterControl = new CommonLifelengthFilterControl(lifelengthFilter, values) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(stringFilterControl); } #endregion #region ЭУ для CommonFilter<BaseEntityObject> if (commonFilter is CommonFilter <IBaseEntityObject> ) { var lifelengthFilter = commonFilter as CommonFilter <IBaseEntityObject>; BaseEntityObject[] values = null; if (_items != null && _items.Count > 0 && commonFilter.FilterProperty.PropertyType.Name == nameof(Lifelength)) { PropertyInfo p = commonFilter.FilterProperty; values = _items.OfType <BaseEntityObject>() .Select(o => p.GetValue(o, null)) .OfType <BaseEntityObject>() .ToArray(); } var baseEntityObjectFilterControl = new CommonBaseEntityObjectFilterControl(lifelengthFilter, values) { AutoSize = true, MinimumSize = new Size(20, 17), Tag = commonFilter.FilterProperty, }; return(baseEntityObjectFilterControl); } #endregion return(null); }
/// <summary> /// Простой конструктор для создания ЭУ /// </summary> public CommonDictionaryFilterControl(ICommonFilter <IDictionaryItem> filter, IDictionaryItem[] filterValues) : this() { _filterValues = filterValues; AttachedObject = filter; }
/// <summary> /// Простой конструктор для создания ЭУ /// </summary> public CommonBoolFilterControl(ICommonFilter <bool> filter) : this() { AttachedObject = filter; }
/// <summary> /// Простой конструктор для создания ЭУ /// </summary> public CommonEnumFilterControl(ICommonFilter filter) : this() { AttachedObject = filter; }
/// <summary> /// Простой конструктор для создания ЭУ /// </summary> public CommonLifelengthFilterControl(ICommonFilter <Lifelength> filter, Lifelength[] filterValues) : this() { _filterValues = filterValues; AttachedObject = filter; }
/// <summary> /// Простой конструктор для создания ЭУ /// </summary> public CommonBaseEntityObjectFilterControl(ICommonFilter <IBaseEntityObject> filter, IBaseEntityObject[] filterValues) : this() { _filterValues = filterValues; AttachedObject = filter; }
/// <summary> /// Возвращает из БД массив объектов типа Т, упакованных в коллекцию типа ICommonCollectionT /// </summary> /// <param name="filter">Фильтрация по определенным полям</param> /// <param name="loadChild">Производить загрузку дочерних объектов (помеченных атрибутом Child). По умолчанию FALSE</param> /// <param name="getDeleted">Загружать недействительные записи</param> /// <returns>ICommonCollectionT ,</returns> public ICommonCollection <T> GetObjectCollection <T>(ICommonFilter filter, bool loadChild = false, bool getDeleted = false) where T : BaseEntityObject, new() { return(GetObjectCollection <T, CommonCollection <T> >(new[] { filter }, loadChild, getDeleted)); }
/// <summary> /// Делает запрос к БД и возвращает список объектов переданного типа /// </summary> /// <typeparam name="T">Тип объетов, которые необходимо вернуть из БД</typeparam> /// <param name="filter">Фильтрация по определенному полю</param> /// <param name="loadChild">Производить загрузку дочерних объектов (помеченных атрибутом Child). По умолчанию FALSE</param> /// <param name="getDeleted">Загружать недействительные записи. По умолчанию FALSE</param> /// <returns>Список объектов переданного типа</returns> public List <T> GetObjectList <T>(ICommonFilter filter, bool loadChild = false, bool getDeleted = false) where T : BaseEntityObject, new() { // возвращаем результат return(GetObjectList <T>(new[] { filter }, loadChild, getDeleted)); }
/// <summary> /// Делает запрос к БД и возвращает список объектов переданного типа /// </summary> /// <typeparam name="T">Тип объетов, которые необходимо вернуть из БД</typeparam> /// <param name="filter">Фильтрация по определенным полям</param> /// <param name="loadChild">Производить загрузку дочерних объектов (помеченных атрибутом Child). По умолчанию FALSE</param> /// <param name="getDeleted">Загружать недействительные записи. По умолчанию FALSE</param> /// <param name="ignoreConditions">Игнорировать значения полей по умолчанию</param> /// <returns>Список объектов переданного типа</returns> public List <T> GetObjectListAll <T>(ICommonFilter filter, bool loadChild = false, bool getDeleted = false, bool ignoreConditions = false) where T : BaseEntityObject, new() { // возвращаем результат return((List <T>)GetObjectList(typeof(T), new[] { filter }, loadChild, getDeleted, ignoreConditions: ignoreConditions)); }