예제 #1
0
        /// <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));
        }
예제 #2
0
파일: Loader.cs 프로젝트: mgladilov/Cas
 /// <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));
 }
예제 #3
0
        /// <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);
        }
예제 #4
0
        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);
        }
예제 #5
0
 /// <summary>
 /// Простой конструктор для создания ЭУ
 /// </summary>
 public CommonDictionaryFilterControl(ICommonFilter <IDictionaryItem> filter, IDictionaryItem[] filterValues)
     : this()
 {
     _filterValues  = filterValues;
     AttachedObject = filter;
 }
예제 #6
0
 /// <summary>
 /// Простой конструктор для создания ЭУ
 /// </summary>
 public CommonBoolFilterControl(ICommonFilter <bool> filter)
     : this()
 {
     AttachedObject = filter;
 }
예제 #7
0
 /// <summary>
 /// Простой конструктор для создания ЭУ
 /// </summary>
 public CommonEnumFilterControl(ICommonFilter filter)
     : this()
 {
     AttachedObject = filter;
 }
 /// <summary>
 /// Простой конструктор для создания ЭУ
 /// </summary>
 public CommonLifelengthFilterControl(ICommonFilter <Lifelength> filter, Lifelength[] filterValues)
     : this()
 {
     _filterValues  = filterValues;
     AttachedObject = filter;
 }
예제 #9
0
 /// <summary>
 /// Простой конструктор для создания ЭУ
 /// </summary>
 public CommonBaseEntityObjectFilterControl(ICommonFilter <IBaseEntityObject> filter, IBaseEntityObject[] filterValues)
     : this()
 {
     _filterValues  = filterValues;
     AttachedObject = filter;
 }
예제 #10
0
파일: Loader.cs 프로젝트: mgladilov/Cas
 /// <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));
 }
예제 #11
0
파일: Loader.cs 프로젝트: mgladilov/Cas
 /// <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));
 }
예제 #12
0
파일: Loader.cs 프로젝트: mgladilov/Cas
 /// <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));
 }