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)); }
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)); }
/// <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); }
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); }
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); }
/* * Сохранение данных */ #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); } }
/// <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)); }
/// <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); }
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); }
/// <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)); }
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); }
/// <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); }
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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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}" ); }
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}%')"); }
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])); }
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])); }
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); }
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); }
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])); }
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); }
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); }
/// <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); }
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])); }
/// <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}" ); }
/// <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)); }