예제 #1
0
        public IList <NonRoutineJobDTO> GetNonRoutineJobDTOsFromAircraftWorkPackages(int aircraftId)
        {
            //Строка запроса, выдающая идентификаторы Рабочих пакетов данного ВС
            var wpParentId = BaseQueries.GetSelectQueryColumnOnly <WorkPackage>
                                 (BaseEntityObject.ItemIdProperty,
                                 new ICommonFilter[] { new CommonFilter <int>(WorkPackage.ParentIdProperty, aircraftId) }
                                 );

            //Строка запроса, выдающая идентификаторы Записей рабочих пакетов данного ВС
            var wprParentId = BaseQueries.GetSelectQueryColumnOnly <WorkPackageRecord>
                                  (WorkPackageRecord.DirectiveIdProperty,
                                  new ICommonFilter[]
            {
                new CommonFilter <string>(WorkPackageRecord.WorkPakageIdProperty, FilterType.In, new[] { wpParentId }),
                new CommonFilter <int>(WorkPackageRecord.WorkPackageItemTypeProperty, SmartCoreType.NonRoutineJob.ItemId)
            }
                                  );

            //Фильтр по ключевому полю таблицы обозначающий
            //что значения ключевого поля таблицы должны быть
            //среди идентификаторов родительских задач записей в рабочих пакетах данного ВС
            ICommonFilter idFilter = new CommonFilter <string>(BaseEntityObject.ItemIdProperty,
                                                               FilterType.In,
                                                               new[] { wprParentId });


            return(_loader.GetObjectListAll <NonRoutineJobDTO>(new[] { idFilter }, true));
        }
예제 #2
0
        public IList <NonRoutineJobDTO> GetNonRoutineJobDTOsWithKitsByWorkPackageId(int workPackageId)
        {
            var accessoryParentId = BaseQueries.GetSelectQueryColumnOnly <KitDTO>
                                        (AccessoryRequired.ParentIdProperty,
                                        new ICommonFilter[]
                                        { new CommonFilter <int>(AccessoryRequired.ParentTypeIdProperty, SmartCoreType.NonRoutineJob.ItemId) }
                                        );
            //Фильтр по ключевому полю таблицы обозначающий
            //что значения ключевого поля таблицы должны быть
            //среди идентификаторов родительских задач КИТов
            var idFilter = new CommonFilter <string>(BaseEntityObject.ItemIdProperty, FilterType.In, new[] { accessoryParentId });

            var directiveIn = BaseQueries.GetSelectQueryColumnOnly <WorkPackageRecord>(WorkPackageRecord.DirectiveIdProperty,
                                                                                       new ICommonFilter[]
            {
                new CommonFilter <int>(WorkPackageRecord.WorkPakageIdProperty, workPackageId),
                new CommonFilter <int>(WorkPackageRecord.WorkPackageItemTypeProperty, SmartCoreType.NonRoutineJob.ItemId)
            });

            //создаются запросы на выборку чеков с заданного рабочего пакета
            //дополнительно фильтрую ключевое поле. значение ключевого поля
            //чека рабочего пакета должно быть среди идентификатор родительских задач КИТов
            return(_loader.GetObjectListAll <NonRoutineJobDTO>(new ICommonFilter[]
            {
                new CommonFilter <string>(BaseEntityObject.ItemIdProperty, FilterType.In, new[] { directiveIn }),
                idFilter
            }, true));
        }
예제 #3
0
        /// <summary>
        /// Возвращает строку запроса на получение компонентов склада
        /// </summary>
        /// <param name="aircraftId">Id ВС, которому пренадлежат компоненты</param>
        /// <param name="filters">Фильтры для Компонентов</param>
        /// <param name="loadChild">Загружать дочерние элементы</param>
        /// <param name="getDeleted">Загружать недействительные записи</param>
        /// <returns></returns>
        public static string GetSelectQuery(int aircraftId,
                                            ICommonFilter[] filters = null,
                                            bool loadChild          = false,
                                            bool getDeleted         = false)
        {
            List <ICommonFilter> allFilters = new List <ICommonFilter>();

            if (filters != null && filters.Length > 0)
            {
                allFilters.AddRange(filters);
            }
            allFilters.Add(GetWhereState(aircraftId));
            string qrs = BaseQueries.GetSelectQueryWithWhere <Entities.General.Accessory.Component>(allFilters.ToArray(), loadChild, getDeleted);


            var search = "[dbo].Components";
            var index  = qrs.LastIndexOf(search) + search.Length;

            qrs = qrs.Insert(index, $@" CROSS APPLY
			(
				Select DestinationObjectId from dbo.TransferRecords 
				Where ParentType = {SmartCoreType.Component.ItemId}  and ParentId = Components.ItemId
			) A "            );

            return(qrs);
        }
예제 #4
0
        public List <FlightTrackRecord> GetAllFlightScheduleRecordsForPeriod(DateTime from, DateTime to, bool loadChild = false)
        {
            var fl          = _newLoader.GetObjectList <FlightNumberDTO, FlightNumber>(new Filter("FlightType", FlightType.Schedule.ItemId));
            var flNumberIds = fl.Select(i => i.ItemId);

            var query = BaseQueries.GetSelectQueryColumnOnly <FlightNumberPeriod>(BaseEntityObject.ItemIdProperty);

            query = $"{query} and FlightNumberId in ({string.Join(",", flNumberIds)}) " +
                    $"and (DepartureDate <= {from.ToSqlDate()} or DepartureDate <= {to.ToSqlDate()}) " +
                    $"and (ArrivalDate >= {from.ToSqlDate()} or ArrivalDate >= {to.ToSqlDate()})";

            var res = _environment.Execute(query);
            var ids = new List <int>();

            foreach (DataRow row in res.Tables[0].Rows)
            {
                ids.Add(Convert.ToInt32(row[0].ToString()));
            }

            var tripRecords = _newLoader.GetObjectListAll <FlightTrackRecordDTO, FlightTrackRecord>(new Filter("FlightPeriodId", ids), loadChild).ToList();

            if (loadChild)
            {
                loadChildTrackRecords(tripRecords);
            }

            return(tripRecords);
        }
예제 #5
0
파일: KitsCore.cs 프로젝트: mgladilov/Cas
        public List <AbstractAccessory> GetMpdKits(int aircraftId, IEnumerable <int> mpdIds)
        {
            var resultKits = new List <AbstractAccessory>();

            //Строка запроса, выдающая идентификаторы родительских задач КИТов
            var accessoryParentId = BaseQueries.GetSelectQueryColumnOnly <AccessoryRequired>
                                        (AccessoryRequired.ParentIdProperty,
                                        new ICommonFilter[] { new CommonFilter <int>(AccessoryRequired.ParentTypeIdProperty, SmartCoreType.MaintenanceDirective.ItemId) }
                                        );
            //Фильтр по ключевому полю таблицы обозначающий
            //что значения ключевого поля таблицы должны быть
            //среди идентификаторов родительских задач КИТов
            var idFilter = new CommonFilter <string>(BaseEntityObject.ItemIdProperty,
                                                     FilterType.In,
                                                     new[] { accessoryParentId });
            //создаются запросы на выборку задач с заданного ВС
            //дополнительно фильтруя ключевое поле. значение ключевого поля
            //задач по компонентам ВС должно быть среди идентификатор родительских задач КИТов
            var qrs = MaintenanceDirectiveQueries.GetAircraftDirectivesSelectQuery(aircraftId,
                                                                                   new[] { idFilter },
                                                                                   true);

            var maintenanceDirectives = _loader.GetObjectListAll <MaintenanceDirective>(qrs, true);

            //связь КИТов с родительскими деталями
            foreach (var mpd in maintenanceDirectives)
            {
                resultKits.AddRange(mpd.Kits.ToArray());
            }

            return(resultKits);
        }
예제 #6
0
파일: Keeper.cs 프로젝트: mgladilov/Cas
        /*
         * Сохранение данных
         */

        #region public void Save(BaseSmartCoreObject obj)

        /// <summary>
        /// Сохраняет <see cref="BaseEntityObject"/> в БД сохраняет если такой уже есть или создает новый если такой объект появляется первый раз
        /// </summary>
        /// <param name="obj">Принимает <see cref="BaseEntityObject"/></param>
        /// <param name="saveAttachedFile">Сохранять прикрепленные файлы</param>
        public void Save(BaseEntityObject obj, bool saveAttachedFile = true)
        {
            if (_casEnvironment.IdentityUser.UserType == UsetType.ReadOnly)
            {
                return;
            }

            obj.CorrectorId = _casEnvironment.IdentityUser.ItemId;
            obj.Updated     = DateTime.Now;

            if (obj.ItemId <= 0)
            {
                var qr = BaseQueries.GetInsertQuery(obj);
                var ds = _casEnvironment.Execute(qr, BaseQueries.GetParameters(obj));
                obj.ItemId = DbTypes.ToInt32(ds.Tables[0].Rows[0][0]);
                _auditRepository.WriteAsync(obj, AuditOperation.Created, _casEnvironment.IdentityUser);
            }
            else
            {
                // update уже существующей записи
                var qr = BaseQueries.GetUpdateQuery(obj);
                _casEnvironment.Execute(qr, BaseQueries.GetParameters(obj));
                _auditRepository.WriteAsync(obj, AuditOperation.Changed, _casEnvironment.IdentityUser);
            }

            if (obj is IFileContainer && saveAttachedFile)
            {
                SaveAttachedFile(obj as IFileContainer);
            }

            if (obj is IFileDTOContainer && saveAttachedFile)
            {
                SaveAttachedFileDTO(obj as IFileDTOContainer);
            }
        }
예제 #7
0
        /// <summary>
        /// Возвращает строку запроса на получение всех облуживания рабочего пакета
        /// </summary>
        /// <param name="workPackageId"></param>
        /// <param name="directiveType"></param>
        /// <param name="filters"></param>
        /// <param name="loadChild"></param>
        /// <returns></returns>
        public static List <DbQuery> GetSelectQueryForWp(int workPackageId, DirectiveType directiveType,
                                                         ICommonFilter[] filters = null,
                                                         bool loadChild          = false)
        {
            var directiveIn = BaseQueries.GetSelectQueryColumnOnly <WorkPackageRecord>(WorkPackageRecord.DirectiveIdProperty,
                                                                                       new ICommonFilter[]
            {
                new CommonFilter <int>(WorkPackageRecord.WorkPakageIdProperty, workPackageId),
                new CommonFilter <int>(WorkPackageRecord.WorkPackageItemTypeProperty, SmartCoreType.Directive.ItemId)
            });

            List <ICommonFilter> allFilters =
                new List <ICommonFilter>
            {
                new CommonFilter <string>(BaseEntityObject.ItemIdProperty, FilterType.In, new[] { directiveIn })
            };

            if (filters != null && filters.Length > 0)
            {
                allFilters.AddRange(filters);
            }
            allFilters.Add(GetWhereStatement(directiveType));

            return(BaseQueries.GetSelectQueryWithWhereAll <Directive>(allFilters.ToArray(), loadChild, true));
        }
예제 #8
0
파일: Loader.cs 프로젝트: mgladilov/Cas
        /// <summary>
        ///
        /// </summary>
        /// <param name="type">Тип, объекты которого нужно загрузить</param>
        /// <param name="filters">Фильтрация по определенным полям</param>
        /// <param name="loadChild">Производить загрузку дочерних объектов (помеченных атрибутом Child). По умолчанию FALSE</param>
        /// <param name="getDeleted">Загружать недействительные записи</param>
        /// <param name="getForced">Загружать поля помеченные как принудительные</param>
        /// <param name="ignoreConditions">Задает значение, нежно ли игнорировать состояния объектов по умолчанию</param>
        /// <returns></returns>
        public ICommonCollection GetObjectCollection(Type type, ICommonFilter[] filters = null,
                                                     bool loadChild        = false, bool getDeleted = false, bool getForced = false,
                                                     bool ignoreConditions = false)
        {
            if (type == null)
            {
                throw new ArgumentNullException("type", "не должен быть null");
            }

            //Проверка, является ли переданный тип наследником BaseSmartCoreObject
            if (!type.IsSubclassOf(typeof(BaseEntityObject)))
            {
                throw new ArgumentException("type", "не является наследником " + typeof(BaseEntityObject).Name);
            }
            if (type.GetCustomAttributes(typeof(TableAttribute), false).Length <= 0)
            {
                throw new ArgumentException("не определен атрибут таблицы для хранения в БД", "type");
            }

            List <ExecutionResultArgs> resultArgses;
            var qrs = BaseQueries.GetSelectQueryWithWhereAll(type, filters, loadChild, false, getDeleted, ignoreConditions: ignoreConditions);
            var ds  = _casEnvironment.Execute(qrs, out resultArgses);

            if (resultArgses.Count(r => r.Exception != null) > 0)
            {
                throw resultArgses.First(r => r.Exception != null).Exception;
            }
            var result = BaseQueries.GetObjectCollection(ds, loadChild, true, getForced);

            // возвращаем результат
            return(result);
        }
예제 #9
0
        public List <Product> GetProducts(Supplier supplier)
        {
            var accessories = new List <Product>();

            #region Поиск Продуктов

            //Строка запроса, выдающая отношения поставщиков с продуктами
            //где идентификатор поставщика равен идентфикатору переданного поставщика
            var accessoriesRelations = BaseQueries.GetSelectQueryColumnOnly <KitSuppliersRelation>
                                           (KitSuppliersRelation.KitIdProperty,
                                           new ICommonFilter[]
            {
                new CommonFilter <int>(KitSuppliersRelation.SupplierProperty, supplier.ItemId),
                new CommonFilter <int>(KitSuppliersRelation.ParentTypeIdProperty, SmartCoreType.Product.ItemId)
            }
                                           );
            //Фильтр по ключевому полю таблицы обозначающий
            //что значения ключевого поля таблицы должны быть
            //среди идентификаторов родительских задач КИТов
            ICommonFilter idFilter = new CommonFilter <string>(BaseEntityObject.ItemIdProperty,
                                                               FilterType.In,
                                                               new[] { accessoriesRelations });
            //создаются запросы на выборку задач по компонентам с заданного ВС
            //дополнительно фильтрую ключевое поле. значение ключевого поля
            //задач по компонентам ВС должно быть среди идентификатор родительских задач КИТов
            accessories.AddRange(_loader.GetObjectListAll <Product>(idFilter, true, ignoreConditions: true).ToArray());

            #endregion

            return(accessories);
        }
예제 #10
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));
        }
예제 #11
0
        public List <MaintenanceDirective> GetMaintenanceDirectives(string text)
        {
            var qrs = MaintenanceDirectiveQueries.GetSelectQuery(text, true);
            List <ExecutionResultArgs> resultArgses;
            var ds = _casEnvironment.Execute(qrs, out resultArgses);

            if (resultArgses.Count(r => r.Exception != null) > 0)
            {
                throw resultArgses.First(r => r.Exception != null).Exception;
            }
            var directives = BaseQueries.GetObjectList <MaintenanceDirective>(ds, true);

            if (directives.Count == 0)
            {
                return(directives);
            }

            var directiveIds = directives.Select(d => d.ItemId).ToList();

            //Загрузка задач по компонентам привязанных к задачам из MPD
            //Компонент, для которого привязаны задачи должен находится на том ВС что и задачи MPD
            var itemsRelations = _itemsRelationsDataAccess.GetRelations(directiveIds, SmartCoreType.MaintenanceDirective.ItemId);

            if (itemsRelations.Count > 0)
            {
                foreach (var mpd in directives)
                {
                    mpd.ItemRelations.AddRange(itemsRelations.Where(i => i.FirstItemId == mpd.ItemId || i.SecondItemId == mpd.ItemId));
                }
            }

            return(directives);
        }
예제 #12
0
        /// <summary>
        /// Возвращает все директивы базового агрегата, или самолета
        /// </summary>
        /// <returns></returns>
        public MaintenanceDirective GetMaintenanceDirective(Int32 itemId, int?parentAircraftId = null)
        {
            List <DbQuery> qrs;

            if (parentAircraftId != null)
            {
                //Если задано родительское ВС, то директиву с заданный ID нужно искать среди директив ВС
                qrs =
                    MaintenanceDirectiveQueries.GetAircraftDirectivesSelectQuery
                        (parentAircraftId.Value,
                        new ICommonFilter[] { new CommonFilter <int>(BaseEntityObject.ItemIdProperty, itemId) },
                        true,
                        true);
            }
            else
            {
                qrs =
                    BaseQueries.GetSelectQueryWithWhereAll <MaintenanceDirective>
                        (new ICommonFilter[] { new CommonFilter <int>(BaseEntityObject.ItemIdProperty, itemId) },
                        true,
                        true);
            }
            List <ExecutionResultArgs> resultArgses;
            var ds = _casEnvironment.Execute(qrs, out resultArgses);

            if (resultArgses.Count(r => r.Exception != null) > 0)
            {
                throw resultArgses.First(r => r.Exception != null).Exception;
            }
            var directive = BaseQueries.GetObjectList <MaintenanceDirective>(ds, true).FirstOrDefault();

            if (directive == null)
            {
                return(null);
            }

            var itemRelation = _itemsRelationsDataAccess.GetRelations(directive.ItemId, directive.SmartCoreObjectType.ItemId);

            directive.ItemRelations.AddRange(itemRelation);

            var fileIds = directive.Files.Where(i => i.FileId.HasValue).Select(i => i.FileId.Value);

            if (fileIds.Any())
            {
                var files = _newLoader.GetObjectList <AttachedFileDTO, AttachedFile>(new Filter("ItemId", values: fileIds));
                foreach (var file in directive.Files)
                {
                    var f = files.FirstOrDefault(i => i.ItemId == file.FileId)?.GetCopyUnsaved(false);
                    if (f == null)
                    {
                        continue;
                    }
                    f.ItemId  = file.FileId.Value;
                    file.File = (AttachedFile)f;
                }
            }

            return(directive);
        }
예제 #13
0
        public List <Product> GetProducts(PurchaseOrder po)
        {
            #region Поиск Продуктов

            //Строка запроса, производящая выборку идентификаторов Продуктов среди записей котировочных ордеров
            //пренадлежащих переданному котировочному ордеру и указывающих на котировки КИТов
            var accessoryParentId =
                BaseQueries.GetSelectQueryColumnOnly <PurchaseRequestRecord>
                    (BasePackageRecord.PackageItemIdProperty,
                    new ICommonFilter[]
            {
                new CommonFilter <int>(BasePackageRecord.ParentPackageIdProperty, po.ItemId),
                new CommonFilter <int>(BasePackageRecord.PackageItemTypeProperty, SmartCoreType.Product.ItemId)
            });
            //Фильтр по ключевому полю таблицы обозначающий
            //что значения ключевого поля таблицы должны быть
            //среди идентификаторов КИТов
            ICommonFilter idFilter = new CommonFilter <string>(BaseEntityObject.ItemIdProperty,
                                                               FilterType.In,
                                                               new[] { accessoryParentId });
            //создаются запросы на выборку задач по компонентам с заданного ВС
            //дополнительно фильтрую ключевое поле. значение ключевого поля
            //задач по компонентам ВС должно быть среди идентификатор родительских задач КИТов
            var kits = _loader.GetObjectListAll <Product>(idFilter, true, true, true);

            #endregion

            #region загрузка деталей
            //Строка запроса, производящая выборку идентификаторов Продуктов среди записей котировочных ордеров
            //пренадлежащих переданному котировочному ордеру и указывающих на котировки КИТов
            accessoryParentId =
                BaseQueries.GetSelectQueryColumnOnly <RequestForQuotationRecord>
                    (BasePackageRecord.PackageItemIdProperty,
                    new ICommonFilter[]
            {
                new CommonFilter <int>(BasePackageRecord.ParentPackageIdProperty, po.ItemId),
                new CommonFilter <int>(BasePackageRecord.PackageItemTypeProperty, SmartCoreType.Product.ItemId)
            });
            //Фильтр по ключевому полю таблицы обозначающий
            //что значения ключевого поля таблицы должны быть
            //среди идентификаторов КИТов
            idFilter = new CommonFilter <string>(BaseEntityObject.ItemIdProperty,
                                                 FilterType.In,
                                                 new[] { accessoryParentId });
            //создаются запросы на выборку задач по компонентам с заданного ВС
            //дополнительно фильтрую ключевое поле. значение ключевого поля
            //задач по компонентам ВС должно быть среди идентификатор родительских задач КИТов
            var componentModels = _loader.GetObjectListAll <ComponentModel>(idFilter, true, true);
            #endregion

            var accessories = new List <Product>();

            accessories.AddRange(kits.ToArray());
            //accessories.AddRange(baseDetails.ToArray());
            accessories.AddRange(componentModels.ToArray());

            return(accessories);
        }
예제 #14
0
        /// <summary>
        /// Возвращает все директивы базового агрегата, или самолета
        /// </summary>
        /// <returns></returns>
        public IList <MaintenanceDirective> GetMaintenanceDirectiveList(IList <int> maintenanceDirectiveIds, int?parentAircraftId = null)
        {
            var directives = new List <MaintenanceDirective>();

            if (maintenanceDirectiveIds.Count == 0)
            {
                return(directives);
            }

            List <DbQuery> qrs;

            if (parentAircraftId != null)
            {
                //Если задано родительское ВС, то директиву с заданный ID нужно искать среди директив ВС
                qrs =
                    MaintenanceDirectiveQueries.GetAircraftDirectivesSelectQuery
                        (parentAircraftId.Value,
                        new ICommonFilter[]
                {
                    new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, maintenanceDirectiveIds.ToArray())
                }, true, true);
            }
            else
            {
                qrs =
                    BaseQueries.GetSelectQueryWithWhereAll <MaintenanceDirective>
                        (new ICommonFilter[]
                {
                    new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, maintenanceDirectiveIds.ToArray())
                }, true, true);
            }
            List <ExecutionResultArgs> resultArgses;
            var ds = _casEnvironment.Execute(qrs, out resultArgses);

            if (resultArgses.Count(r => r.Exception != null) > 0)
            {
                throw resultArgses.First(r => r.Exception != null).Exception;
            }
            directives.AddRange(BaseQueries.GetObjectList <MaintenanceDirective>(ds, true));

            if (directives.Count == 0)
            {
                return(directives);
            }

            var itemsRelations = _itemsRelationsDataAccess.GetRelations(maintenanceDirectiveIds, SmartCoreType.MaintenanceDirective.ItemId);

            if (itemsRelations.Count > 0)
            {
                foreach (var directive in directives)
                {
                    directive.ItemRelations.AddRange(itemsRelations.Where(i => i.FirstItemId == directive.ItemId || i.SecondItemId == directive.ItemId));
                }
            }

            return(directives);
        }
예제 #15
0
파일: Loader.cs 프로젝트: mgladilov/Cas
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T">Тип записей (DirectiveRecord, MaintenanceCheckRecord и т.д.)</typeparam>
        /// <param name="parentType">Тип родителя (Directive, ComponentDirective, MaintenanceCheck и т.д.)</param>
        /// <param name="parentId">Идентификатор родителя</param>
        /// <param name="lastOnly">True - грузится только последняя запись о выполнении</param>
        /// <returns></returns>
        public T GetPerformances <T>(SmartCoreType parentType, int parentId, bool lastOnly = false) where T : AbstractPerformanceRecord, new()
        {
            var qr     = BaseQueries.GetPerformancesQuery <T>(parentType, parentId, lastOnly);
            var ds     = _casEnvironment.Execute(qr);
            var result = BaseQueries.GetObjectList <T>(ds.Tables[0])[0];

            // возвращаем результат
            return(result);
        }
예제 #16
0
파일: Loader.cs 프로젝트: mgladilov/Cas
        /// <summary>
        /// Делает запрос к БД и возвращает список объектов переданного типа
        /// </summary>
        /// <typeparam name="T">Тип объетов, которые необходимо вернуть из БД</typeparam>
        /// <param name="filters">Фильтрация по определенным полям</param>
        /// <param name="loadChild">Производить загрузку дочерних объектов (помеченных атрибутом Child). По умолчанию FALSE</param>
        /// <param name="getDeleted">Загружать недействительные записи. По умолчанию FALSE</param>
        /// <returns>Список объектов переданного типа</returns>
        public List <T> GetObjectList <T>(ICommonFilter[] filters = null, bool loadChild = false, bool getDeleted = false) where T : BaseEntityObject, new()
        {
            var qr     = BaseQueries.GetSelectQueryWithWhere <T>(filters, loadChild, getDeleted);
            var ds     = _casEnvironment.Execute(qr);
            var result = BaseQueries.GetObjectList <T>(ds.Tables[0], loadChild);

            // возвращаем результат
            return(result);
        }
예제 #17
0
파일: Loader.cs 프로젝트: mgladilov/Cas
        /// <summary>
        /// Возвращает количество записей о выполнении
        /// </summary>
        /// <typeparam name="T">Тип записей (DirectiveRecord, MaintenanceCheckRecord и т.д.)</typeparam>
        /// <param name="parentType">Тип родителя (Directive, ComponentDirective, MaintenanceCheck)</param>
        /// <param name="parentId"></param>
        /// <returns></returns>
        public int GetCountPerformanceRecords <T>(SmartCoreType parentType, int parentId) where T : AbstractPerformanceRecord
        {
            var qr     = BaseQueries.GetCountPerformancesQuery <T>(parentType, parentId);
            var ds     = _casEnvironment.Execute(qr);
            var result = (int)ds.Tables[0].Rows[0][0];

            // возвращаем результат
            return(result);
        }
예제 #18
0
        /// <summary>
        /// Возвращает условие того деталь принадлежит базовому агрегату
        /// </summary>
        /// <param name="aircraftId"></param>
        /// <returns></returns>
        public static string GetSelectQueryPrimaryColumnOnly(int aircraftId)
        {
            return(BaseQueries.GetSelectQueryColumnOnly <BaseComponent>(BaseEntityObject.ItemIdProperty) +
                   $@" and ( Select top 1 DestinationObjectId 
                                           from dbo.TransferRecords 
                                           Where ParentType = {SmartCoreType.BaseComponent.ItemId}
                                           and DestinationObjectType = {SmartCoreType.Aircraft.ItemId} 
				                           and ParentId = dbo.Components.ItemId 
					                       and IsDeleted = 0) = {aircraftId}"                    );
        }
예제 #19
0
        public static string GetSelectQueryAll(
            string text,
            bool loadChild  = false,
            bool getDeleted = false)
        {
            List <ICommonFilter> allFilters = new List <ICommonFilter>();
            string qrs = BaseQueries.GetSelectQueryWithWhere <Entities.General.Accessory.Component>(allFilters.ToArray(), loadChild, getDeleted);

            return(qrs + $" and (Components.PartNumber like '%{text}%' or Components.SerialNumber like '%{text}%' or Components.Description like '%{text}%')");
        }
예제 #20
0
        public IList <Relation.ItemsRelation> GetRelations(int directiveId, int typeId)
        {
            //TODO:(Evgenii Babak) не использовать рукописные запросы
            var qr = BaseQueries.GetSelectQuery <Relation.ItemsRelation>(true) +
                     $" WHERE (FirstItemId = {directiveId} AND FirtsItemTypeId = {typeId} OR SecondItemId = {directiveId} AND SecondItemTypeId = {typeId}) AND IsDeleted = 0";

            var ds = _casEnvironment.Execute(qr);

            return(BaseQueries.GetObjectList <Relation.ItemsRelation>(ds.Tables[0]));
        }
예제 #21
0
        public IList <Relation.ItemsRelation> CheckRelations(BaseEntityObject first, BaseEntityObject second)
        {
            var qr = BaseQueries.GetSelectQuery <Relation.ItemsRelation>(true) +
                     $" WHERE (FirstItemId = {first.ItemId} AND FirtsItemTypeId = {first.SmartCoreObjectType.ItemId} AND SecondItemTypeId = {second.SmartCoreObjectType.ItemId}) " +
                     $" OR (SecondItemId = {first.ItemId} AND SecondItemTypeId = {first.SmartCoreObjectType.ItemId} AND FirtsItemTypeId = {second.SmartCoreObjectType.ItemId}) " +
                     $"AND (SecondItemTypeId != FirtsItemTypeId) AND IsDeleted = 0";

            var ds = _casEnvironment.Execute(qr);

            return(BaseQueries.GetObjectList <Relation.ItemsRelation>(ds.Tables[0]));
        }
예제 #22
0
파일: Keeper.cs 프로젝트: mgladilov/Cas
        public void MarkAsDeleted <T>(ICommonFilter[] filters) where T : BaseEntityObject
        {
            if (_casEnvironment.IdentityUser.UserType == UsetType.ReadOnly || _casEnvironment.IdentityUser.UserType == UsetType.SaveOnly)
            {
                return;
            }

            var query = BaseQueries.GetMarkAsDeletedQuery <T>(filters);

            _casEnvironment.Execute(query);
        }
예제 #23
0
        public static List <DbQuery> GetSelectQuery(string text,
                                                    bool loadChild  = false,
                                                    bool getDeleted = false)
        {
            List <ICommonFilter> allFilters = new List <ICommonFilter>();

            allFilters.Add(GetWhereStatementForAll(text));
            List <DbQuery> qrs = BaseQueries.GetSelectQueryWithWhereAll <MaintenanceDirective>(allFilters.ToArray(), loadChild, getDeleted);

            return(qrs);
        }
예제 #24
0
        public IList <Relation.ItemsRelation> GetRelations(IEnumerable <int> directiveIds, int typeId)
        {
            var idsString = string.Join(",", directiveIds.Select(d => d.ToString(CultureInfo.InvariantCulture)).ToArray());

            //TODO:(Evgenii Babak) не использовать рукописные запросы
            var qr = BaseQueries.GetSelectQuery <Relation.ItemsRelation>(true) +
                     $" WHERE FirstItemId in ({idsString}) AND FirtsItemTypeId = {typeId} OR SecondItemId in ({idsString}) AND SecondItemTypeId = {typeId}";

            var ds = _casEnvironment.Execute(qr);

            return(BaseQueries.GetObjectList <Relation.ItemsRelation>(ds.Tables[0]));
        }
예제 #25
0
        public static List <DbQuery> GetSelectQuery(DirectiveType directiveType, string text,
                                                    string paragraph,
                                                    bool loadChild  = false,
                                                    bool getDeleted = false)
        {
            List <ICommonFilter> allFilters = new List <ICommonFilter> ();

            allFilters.Add(GetWhereStatementForAll(directiveType, text, paragraph));
            List <DbQuery> qrs = BaseQueries.GetSelectQueryWithWhereAll <Directive>(allFilters.ToArray(), loadChild, getDeleted);

            return(qrs);
        }
예제 #26
0
        public void GetMarkAsDeletedQueryTest()
        {
            var query = BaseQueries.GetMarkAsDeletedQuery <DirectiveRecord>(new ICommonFilter[]
            {
                new CommonFilter <int>(DirectiveRecord.MaintenanceDirectiveRecordIdProperty, 15)
            });

            var forCheck = "Set dateformat dmy; Update [dbo].DirectivesRecords Set IsDeleted = 1 where DirectivesRecords.MaintenanceDirectiveRecordId = 15";

            Assert.AreEqual(query, forCheck);
            Trace.WriteLine(query);
            Trace.WriteLine(forCheck);
        }
예제 #27
0
        /// <summary>
        /// Возвращает все директивы базового агрегата, самолета, или задачи созданные в рамках страницы бортжурнала
        /// </summary>
        /// <returns></returns>
        public DirectiveCollection GetDeferredItems(BaseComponent parentBaseComponent   = null,
                                                    Aircraft parentAircraft             = null,
                                                    AircraftFlight parentFlight         = null,
                                                    IEnumerable <ICommonFilter> filters = null)
        {
            if (parentAircraft == null && parentBaseComponent == null && parentFlight == null && filters == null)
            {
                throw new ArgumentNullException();
            }

            List <DbQuery> qrs;

            if (parentBaseComponent != null)
            {
                qrs = DeferredItemQueries.GetSelectQuery(parentBaseComponent, filters, true);
            }
            else if (parentAircraft != null)
            {
                qrs = DeferredItemQueries.GetSelectQuery(parentAircraft.ItemId, filters, true);
            }
            else if (parentFlight != null)
            {
                qrs = DeferredItemQueries.GetSelectQuery(parentFlight, filters, true);
            }
            else
            {
                qrs = BaseQueries.GetSelectQueryWithWhereAll <DeferredItem>(filters.ToArray(), true);
            }

            var directives = new DirectiveCollection();

            directives.AddRange(_loader.GetObjectListAll <DeferredItem>(qrs, true).ToArray());

            if (directives.Count == 0)
            {
                return(directives);
            }

            var directiveIds   = directives.Select(d => d.ItemId).ToList();
            var itemsRelations = _itemsRelationsDataAccess.GetRelations(directiveIds, SmartCoreType.Directive.ItemId);

            if (itemsRelations.Count > 0)
            {
                foreach (var directive in directives)
                {
                    directive.ItemRelations.AddRange(itemsRelations.Where(i => i.FirstItemId == directive.ItemId || i.SecondItemId == directive.ItemId));
                }
            }

            return(directives);
        }
예제 #28
0
        public IList <Relation.ItemsRelation> GetCustomRelations(IEnumerable <int> directiveIds, params int[] type)
        {
            if (!directiveIds.Any())
            {
                return(new List <Relation.ItemsRelation>());
            }
            //TODO:(Evgenii Babak) не использовать рукописные запросы
            var qr = BaseQueries.GetSelectQuery <Relation.ItemsRelation>(true) +
                     $" WHERE (FirstItemId IN ({string.Join(",", directiveIds)}) or SecondItemId In ({string.Join(",", directiveIds)})) and (FirtsItemTypeId in ({string.Join(",", type)}) or SecondItemTypeId in ({string.Join(",", type)})) AND IsDeleted = 0";

            var ds = _casEnvironment.Execute(qr);

            return(BaseQueries.GetObjectList <Relation.ItemsRelation>(ds.Tables[0]));
        }
예제 #29
0
        /// <summary>
        /// Возвращает условие того деталь принадлежит базовому агрегату
        /// </summary>
        /// <param name="aircraft"></param>
        /// <returns></returns>
        public static string GetSelectQueryPrimaryColumnOnly(Aircraft aircraft)
        {
            if (aircraft == null)
            {
                throw new ArgumentNullException("aircraft", "must be not null");
            }
            return(BaseQueries.GetSelectQueryColumnOnly <BaseComponent>(BaseEntityObject.ItemIdProperty) +
                   $@" and ( Select top 1 DestinationObjectId 
                                           from dbo.TransferRecords 
                                           Where ParentType = {SmartCoreType.BaseComponent.ItemId}
                                           and DestinationObjectType = {aircraft.SmartCoreObjectType.ItemId} 
				                           and ParentId = dbo.Components.ItemId 
					                       and IsDeleted = 0) = {aircraft.ItemId}"                    );
        }
예제 #30
0
        /// <summary>
        /// Возвращает строку запроса на получение всех облуживания воздушного судна
        /// </summary>
        /// <param name="baseComponent">Базоввй агрегат, диретивы которого необходимо получить</param>
        /// <param name="filters">Фильтры для Maintenance Directives</param>
        /// <param name="loadChild">Загружать дочерние элементы</param>
        /// <param name="getDeleted">Загружать недействительные записи</param>
        /// <returns></returns>
        public static List <DbQuery> GetSelectQuery(BaseComponent baseComponent, IEnumerable <ICommonFilter> filters = null, bool loadChild = false, bool getDeleted = false)
        {
            List <ICommonFilter> allFilters =
                new List <ICommonFilter> {
                new CommonFilter <int>(MaintenanceDirective.ParentBaseComponentProperty, baseComponent.ItemId)
            };

            if (filters != null && filters.Count() > 0)
            {
                allFilters.AddRange(filters);
            }

            return(BaseQueries.GetSelectQueryWithWhereAll <MaintenanceDirective>(allFilters.ToArray(), loadChild, getDeleted));
        }