protected bool BuildTemplateFromPresentationData(IEnumerable<PresentationData> presentation, string theme, StringBuilder output, CursorCollection placeHolders, DirectiveCollection directives, RequestContext context) { RootTemplate result = new RootTemplate(); foreach (PresentationData item in presentation) { if (item.DataType == Presentation.HtmlDocument) { var key = item.Theme ?? "Default"; if (key.Equals(theme, StringComparison.OrdinalIgnoreCase)) { result = result.FromString(item.Data); break; } if (string.IsNullOrEmpty(result.Template)) result = result.FromString(item.Data); } } result = this.GetRootTemplate(result, context, theme); if (!String.IsNullOrEmpty(result.Template)) { this.ProcessStringTemplate(result.Template, output, placeHolders, directives); return true; } return false; }
protected override void BuildPageTemplateRecursive(IPageTemplate pageTemplate, string theme, RequestContext context, StringBuilder output, CursorCollection placeHolders, DirectiveCollection directives, List<IControlsContainer> controlConatiners) { controlConatiners.Add(pageTemplate); if (!String.IsNullOrEmpty(pageTemplate.MasterPage)) { this.BuildWithMasterPage(pageTemplate.MasterPage, context, output, placeHolders, directives); return; } if (!String.IsNullOrEmpty(pageTemplate.ExternalPage)) { this.BuildWithExternalPage(pageTemplate.ExternalPage, context, output, placeHolders, directives); return; } if (this.BuildTemplateFromPresentationData(pageTemplate.Presentation, theme, output, placeHolders, directives, context)) return; if (pageTemplate.ParentTemplate != null) { BuildPageTemplateRecursive(pageTemplate.ParentTemplate, theme, context, output, placeHolders, directives, controlConatiners); return; } var defaultRootTemplate = new RootTemplate(); defaultRootTemplate.FromString(ControlUtilities.GetSitefinityTextResource(Constants.DefaultFrontendPageTemplate)); RootTemplate result = this.GetRootTemplate(defaultRootTemplate, context, theme); this.ProcessStringTemplate(result.Template, output, placeHolders, directives); }
/// <summary> /// Appends the layout. /// </summary> /// <remarks> /// If the layout is not found error message will be rendered instead. /// </remarks> /// <param name="layoutTemplate">The layout template.</param> /// <param name="assemblyInfo">The assembly information.</param> /// <param name="parentPlaceHolder">The parent place holder.</param> /// <param name="placeHolders">The place holders.</param> /// <param name="layoutId">The layout identifier.</param> /// <param name="directives">The directives.</param> protected override void AppendLayout(string layoutTemplate, string assemblyInfo, PlaceHolderCursor parentPlaceHolder, CursorCollection placeHolders, string layoutId, DirectiveCollection directives) { try { base.AppendLayout(layoutTemplate, assemblyInfo, parentPlaceHolder, placeHolders, layoutId, directives); } catch (FileNotFoundException) { parentPlaceHolder.Output.Append(Res.Get<ErrorMessages>("CannotFindTemplate", layoutTemplate)); } }
/// <summary> /// Appends markup to the virtual page file depending on the current master page. /// </summary> /// <param name="virtualPath">The master page virtual path.</param> /// <param name="context">The context.</param> /// <param name="output">The output.</param> /// <param name="placeHolders">The place holders.</param> /// <param name="directives">The directives.</param> protected override void BuildWithMasterPage(string virtualPath, RequestContext context, StringBuilder output, CursorCollection placeHolders, DirectiveCollection directives) { if (LayoutMvcPageResolver.IsLayoutPath(virtualPath)) { var httpContext = new HttpContextWrapper(new HttpContext(HttpContext.Current.Request, HttpContext.Current.Response)); httpContext.Items[PackageManager.CurrentPackageKey] = context.HttpContext.Items[PackageManager.CurrentPackageKey]; SystemManager.RunWithHttpContext(httpContext, () => base.BuildWithMasterPage(virtualPath, context, output, placeHolders, directives)); } else { base.BuildWithMasterPage(virtualPath, context, output, placeHolders, directives); } }
protected override void OnCompleteType( ICompletionContext context, SchemaTypeDefinition definition) { base.OnCompleteType(context, definition); var directives = new DirectiveCollection( this, definition.Directives); directives.CompleteCollection(context); Directives = directives; Services = context.Services; }
/// <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); }
/// <summary> /// Возвращает все директивы базового агрегата, самолета, или задачи созданные в рамках страницы бортжурнала /// </summary> /// <returns></returns> private DirectiveCollection GetDirectives(BaseComponent parentBaseComponent, Aircraft parentAircraft, AircraftFlight parentFlight, DirectiveType directiveType) { if (parentAircraft == null && parentBaseComponent == null && parentFlight == null) { throw new ArgumentNullException(); } if (directiveType == null) { directiveType = DirectiveType.AirworthenessDirectives; } List <DbQuery> qrs; if (parentBaseComponent != null) { qrs = DirectiveQueries.GetSelectQuery(parentBaseComponent, directiveType, loadChild: true); } else if (parentAircraft != null) { qrs = DirectiveQueries.GetAircraftDirectivesSelectQuery(parentAircraft.ItemId, directiveType, loadChild: true); } else { qrs = DirectiveQueries.GetSelectQuery(parentFlight, directiveType, loadChild: true); } var directives = new DirectiveCollection(); directives.AddRange(_loader.GetObjectListAll <Directive>(qrs, true)); 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); }
private void SetContextMenuParameters(int count) { bool temp = DirectiveCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Create) && (count == 1); toolStripMenuItemInspection.Enabled = temp; toolStripMenuItemHotSectionInspection.Enabled = temp; toolStripMenuItemOverhaul.Enabled = temp; toolStripMenuItemShopVisit.Enabled = temp; toolStripMenuItemTitle.Enabled = count > 0; headerControl1.ActionControl.ButtonEdit.Enabled = (count == 1); buttonDeleteSelected.Enabled = DetailCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Remove) && (count > 0); toolStripMenuItemDelete.Enabled = buttonDeleteSelected.Enabled; }
public void ObtainRootTemplateFromRegisteredWebFormsTemplateResolver_WhenBuildPageTemplateRecursiveMethodIsCalledForWebFormsPages() { PowerTools.Instance .RootTemplates .RegisterWebFormsTemplateResolver<TestRootTemplateResolver>(); IPageTemplate pageTemplate = new PageTemplateMock(); string theme = null; RequestContext context = new RequestContext(); StringBuilder output = new StringBuilder(); CursorCollection placeHolders = new CursorCollection(); DirectiveCollection directives = new DirectiveCollection(); List<IControlsContainer> controlContainers = new List<IControlsContainer>(); var mvcPageResolver = new ExtendedWebFormsPageResolverWrapper(); mvcPageResolver.InvokeBuildPageTemplateRecursive(pageTemplate, theme, context, output, placeHolders, directives, controlContainers); Assert.AreEqual("This is test root template", output.ToString()); }
///<summary> /// Создаёт элемент управления для работы со списком директив <see cref="EngineeringOrderDirective"/> ///</summary> ///<param name="parentBaseDetail">Базовый агрегат, к которому принадлежат директивы</param> public EngineeringOrdersDirectiveListScreen(BaseDetail parentBaseDetail) { if (parentBaseDetail == null) { throw new ArgumentNullException("parentBaseDetail"); } ((DispatcheredEngeneeringOrdersDirectiveListScreen)this).InitComplition += EngineeringOrdersDirectiveListScreen_InitComplition; CASClipboard.Instance.ClipboardContentsChanged += ClipboardContentsChanged; permissionForCreate = DirectiveCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Create); permissionForDelete = DirectiveCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Remove); permissionForUpdate = DirectiveCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Update); this.parentBaseDetail = parentBaseDetail; directiveFilter = new DirectiveCollectionFilter(new DirectiveFilter[1] { new EngeneeringOrderFilter() }); InitializeComponent(); SetToolStripMenuItems(); HookWorkPackageEvents(); UpdateScreen(); }
public SortEnumValue( ITypeCompletionContext completionContext, SortEnumValueDefinition enumValueDefinition) { if (completionContext == null) { throw new ArgumentNullException(nameof(completionContext)); } if (enumValueDefinition is null) { throw new ArgumentNullException(nameof(enumValueDefinition)); } if (enumValueDefinition.Value is null) { throw new ArgumentException( DataResources.SortEnumValue_ValueIsNull, nameof(enumValueDefinition)); } SyntaxNode = enumValueDefinition.SyntaxNode; Name = enumValueDefinition.Name.HasValue ? enumValueDefinition.Name : (NameString)enumValueDefinition.Value.ToString(); Description = enumValueDefinition.Description; DeprecationReason = enumValueDefinition.DeprecationReason; IsDeprecated = !string.IsNullOrEmpty( enumValueDefinition.DeprecationReason); Value = enumValueDefinition.Value; ContextData = enumValueDefinition.ContextData; Handler = enumValueDefinition.Handler; Operation = enumValueDefinition.Operation; _directives = new DirectiveCollection(this, enumValueDefinition !.GetDirectives()); _directives.CompleteCollection(completionContext); }
private void InitializeComponent() { splitContainer = new SplitContainer(); contentPanel = new BaseDetailLinksFlowLayoutPanel(currentBaseDetail); contextMenuStrip1 = new ContextMenuStrip(); titleToolStripMenuItem = new ToolStripMenuItem(); registerToolStripMenuItem = new ToolStripMenuItem(); overhaulToolStripMenuItem = new ToolStripMenuItem(); inspectionToolStripMenuItem = new ToolStripMenuItem(); shopVisitToolStripMenuItem = new ToolStripMenuItem(); hotSectionInspectionToolStripMenuItem = new ToolStripMenuItem(); logBookToolStripMenuItem = new ToolStripMenuItem(); addComponentToolStripMenuItem1 = new ToolStripMenuItem(); aDStatusToolStripMenuItem = new ToolStripMenuItem(); ToolStripMenuItemLLPDiskSheet = new ToolStripMenuItem(); deleteToolStripMenuItem = new ToolStripMenuItem(); discrepanciesToolStripMenuItem = new ToolStripMenuItem(); sBStatusToolStripMenuItem = new ToolStripMenuItem(); engeneeringOrdersToolStripMenuItem = new ToolStripMenuItem(); toolStripMenuItemMoveToStore = new ToolStripMenuItem(); toolStripSeparator1 = new ToolStripSeparator(); toolStripSeparator2 = new ToolStripSeparator(); toolStripSeparator3 = new ToolStripSeparator(); toolStripSeparator4 = new ToolStripSeparator(); // // titleToolStripMenuItem // titleToolStripMenuItem.Text = "[Title]"; titleToolStripMenuItem.Click += titleToolStripMenuItem_Click; // // registerToolStripMenuItem // registerToolStripMenuItem.Text = "Register"; // // overhaulToolStripMenuItem // overhaulToolStripMenuItem.Text = "Overhaul"; overhaulToolStripMenuItem.Click += overhaulToolStripMenuItem_Click; // // inspectionToolStripMenuItem // inspectionToolStripMenuItem.Text = "Inspection"; inspectionToolStripMenuItem.Click += inspectionToolStripMenuItem_Click; // // shopVisitToolStripMenuItem // shopVisitToolStripMenuItem.Text = "Shop visit"; shopVisitToolStripMenuItem.Click += shopVisitToolStripMenuItem_Click; // // hotSectionInspectionToolStripMenuItem // hotSectionInspectionToolStripMenuItem.Text = "Hot section inspection"; hotSectionInspectionToolStripMenuItem.Click += hotSectionInspectionToolStripMenuItem_Click; // // logBookToolStripMenuItem // logBookToolStripMenuItem.Text = "Log book"; logBookToolStripMenuItem.Click += logBookToolStripMenuItem_Click; // // addComponentToolStripMenuItem1 // addComponentToolStripMenuItem1.Text = "Add component"; addComponentToolStripMenuItem1.Click += addComponentToolStripMenuItem1_Click; // // aDStatusToolStripMenuItem // aDStatusToolStripMenuItem.Text = "AD Status"; aDStatusToolStripMenuItem.Click += aDStatusToolStripMenuItem_Click; // // ToolStripMenuItemLLPDiskSheet // ToolStripMenuItemLLPDiskSheet.Text = "LLP Disk Sheet Status"; ToolStripMenuItemLLPDiskSheet.Click += toolStripMenuItemLLPDiskSheet_Click; // // deleteToolStripMenuItem // deleteToolStripMenuItem.Text = "Delete"; deleteToolStripMenuItem.Click += deleteToolStripMenuItem_Click; // // discrepanciesToolStripMenuItem // discrepanciesToolStripMenuItem.Text = "Discrepancies"; discrepanciesToolStripMenuItem.Click += discrepanciesToolStripMenuItem_Click; // // sBStatusToolStripMenuItem // sBStatusToolStripMenuItem.Text = "SB Status"; sBStatusToolStripMenuItem.Click += sBStatusToolStripMenuItem_Click; // // engeneeringOrdersToolStripMenuItem // engeneeringOrdersToolStripMenuItem.Text = "Engineering Orders Status"; engeneeringOrdersToolStripMenuItem.Click += engeneeringOrdersToolStripMenuItem_Click; // // engeneeringOrdersToolStripMenuItem // toolStripMenuItemMoveToStore.Text = "Move to Store"; toolStripMenuItemMoveToStore.Click += toolStripMenuItemMoveToStore_Click; // // baseDetailButton // baseDetailButton.ActiveColor = Css.BaseDetailInfoControl.Colors.InactiveTopColorHovered; baseDetailButton.ExtendedColor = Css.BaseDetailInfoControl.Colors.InactiveBottomColor; baseDetailButton.Font = Css.BaseDetailInfoControl.Fonts.PrimaryFont; baseDetailButton.ForeColor = Css.BaseDetailInfoControl.Colors.PrimaryForeColor; baseDetailButton.Icon = new Icons().GrayArrow; baseDetailButton.MouseDownColor = Css.BaseDetailInfoControl.Colors.InactiveTopColorPressed; baseDetailButton.NormalColor = Css.BaseDetailInfoControl.Colors.InactiveTopColor; baseDetailButton.ReflectionType = ReflectionTypes.DisplayInNew; baseDetailButton.SecondFont = Css.BaseDetailInfoControl.Fonts.SecondaryFont; baseDetailButton.SecondForeColor = Css.BaseDetailInfoControl.Colors.SecondaryForeColor; baseDetailButton.SecondTextAlign = ContentAlignment.TopLeft; baseDetailButton.SecondTextPadding = new Padding(10, 0, 0, 0); baseDetailButton.Size = new Size(235, 90); baseDetailButton.TextAlign = ContentAlignment.TopLeft; baseDetailButton.TextPadding = new Padding(0, 6, 0, 0); baseDetailButton.SecondaryTextPosition = 44; baseDetailButton.DisplayerRequested += aircraftButton_DisplayerRequested; baseDetailButton.ContextMenuStrip = contextMenuStrip1; // // splitter // splitContainer.Dock = DockStyle.Fill; splitContainer.Location = new Point(0, 0); splitContainer.Name = "splitter"; splitContainer.IsSplitterFixed = true; splitContainer.SplitterDistance = 230; // // paddingPanel // paddingPanel = new Panel(); paddingPanel.Size = new Size(0, 0); paddingPanel.Dock = DockStyle.Top; paddingPanel.BringToFront(); // // splitter.Panel1 // splitContainer.Panel1.Controls.Add(baseDetailButton); splitContainer.Panel2.BackColor = Color.Transparent; // // splitter.Panel2 // splitContainer.Panel2.Controls.Add(contentPanel); splitContainer.Panel2.Controls.Add(paddingPanel); splitContainer.Panel2.BackColor = Color.Transparent; //this.splitContainer.Size = new System.Drawing.Size(641, 100); splitContainer.TabIndex = 0; // // contentPanel // contentPanel.AutoSize = true; contentPanel.Dock = DockStyle.Top; contentPanel.Location = new Point(0, 0); contentPanel.Name = "contentPanel"; contentPanel.TabIndex = 0; contentPanel.SizeChanged += contentPanel_SizeChanged; // // BaseDetailControl // Controls.Add(splitContainer); Size = defaultSize; registerToolStripMenuItem.Enabled = DirectiveCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Create); addComponentToolStripMenuItem1.Enabled = DetailCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Create); deleteToolStripMenuItem.Enabled = BaseDetailCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Remove); // // BaseDetailControl // registerToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { overhaulToolStripMenuItem, inspectionToolStripMenuItem, shopVisitToolStripMenuItem, hotSectionInspectionToolStripMenuItem }); contextMenuStrip1.Items.AddRange(new ToolStripItem[] { titleToolStripMenuItem, toolStripSeparator1, logBookToolStripMenuItem, registerToolStripMenuItem, toolStripSeparator3, aDStatusToolStripMenuItem, discrepanciesToolStripMenuItem, engeneeringOrdersToolStripMenuItem, ToolStripMenuItemLLPDiskSheet, sBStatusToolStripMenuItem, toolStripSeparator2, toolStripMenuItemMoveToStore, toolStripSeparator4, addComponentToolStripMenuItem1, deleteToolStripMenuItem }); baseDetailButton.ContextMenuStrip = contextMenuStrip1; if (currentBaseDetail is Engine) { baseDetailButton.Text = currentBaseDetail.DetailType.ShortName + " " + currentBaseDetail.PositionNumber; } else { hotSectionInspectionToolStripMenuItem.Visible = false; ToolStripMenuItemLLPDiskSheet.Visible = false; baseDetailButton.Text = currentBaseDetail.DetailType.ShortName; if (currentBaseDetail is AircraftFrame) { toolStripSeparator4.Visible = false; toolStripMenuItemMoveToStore.Visible = false; } } }
private ContextMenuStrip CreateContextMenuToLandingGear(GearAssembly gearAssembly) { ContextMenuStrip contextMenuStrip = new ContextMenuStrip(); ToolStripMenuItem titleToolStripMenuItem = new ToolStripMenuItem(); ToolStripMenuItem registerToolStripMenuItem = new ToolStripMenuItem(); ToolStripMenuItem inspectionToolStripMenuItem = new ToolStripMenuItem(); ToolStripMenuItem logBookToolStripMenuItem = new ToolStripMenuItem(); ToolStripMenuItem addComponentToolStripMenuItem1 = new ToolStripMenuItem(); ToolStripMenuItem deleteToolStripMenuItem = new ToolStripMenuItem(); ToolStripMenuItem toolStripMenuItemMoveToStore = new ToolStripMenuItem(); ToolStripSeparator toolStripSeparator1 = new ToolStripSeparator(); ToolStripSeparator toolStripSeparator2 = new ToolStripSeparator(); ToolStripSeparator toolStripSeparator3 = new ToolStripSeparator(); // // titleToolStripMenuItem // titleToolStripMenuItem.Text = gearAssembly.ToString(); titleToolStripMenuItem.Click += titleToolStripMenuItem_Click; // // registerToolStripMenuItem // registerToolStripMenuItem.Text = "Register"; // // inspectionToolStripMenuItem // inspectionToolStripMenuItem.Text = "Inspection"; inspectionToolStripMenuItem.Tag = gearAssembly; inspectionToolStripMenuItem.Click += inspectionToolStripMenuItem_Click; // // logBookToolStripMenuItem // logBookToolStripMenuItem.Text = "Log book"; logBookToolStripMenuItem.Click += logBookToolStripMenuItem_Click; // // addComponentToolStripMenuItem1 // addComponentToolStripMenuItem1.Text = "Add component"; addComponentToolStripMenuItem1.Click += addComponentToolStripMenuItem1_Click; // // deleteToolStripMenuItem // deleteToolStripMenuItem.Text = "Delete"; deleteToolStripMenuItem.Click += deleteToolStripMenuItem_Click; // // engeneeringOrdersToolStripMenuItem // toolStripMenuItemMoveToStore.Text = "Move to Store"; toolStripMenuItemMoveToStore.Click += toolStripMenuItemMoveToStore_Click; // // LandingGearsButtonsControl // registerToolStripMenuItem.Enabled = DirectiveCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Create); addComponentToolStripMenuItem1.Enabled = DetailCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Create); deleteToolStripMenuItem.Enabled = BaseDetailCollection.HasAccess(Users.CurrentUser.Role, DataEvent.Remove); registerToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { inspectionToolStripMenuItem, }); contextMenuStrip.Items.AddRange(new ToolStripItem[] { titleToolStripMenuItem, toolStripSeparator1, logBookToolStripMenuItem, registerToolStripMenuItem, toolStripSeparator2, toolStripMenuItemMoveToStore, toolStripSeparator3, addComponentToolStripMenuItem1, deleteToolStripMenuItem }); return(contextMenuStrip); }
/// <summary> /// Appends the layout. /// </summary> /// <remarks> /// If the layout is not found error message will be rendered instead. /// </remarks> /// <param name="layoutTemplate">The layout template.</param> /// <param name="assemblyInfo">The assembly information.</param> /// <param name="parentPlaceHolder">The parent place holder.</param> /// <param name="placeHolders">The place holders.</param> /// <param name="layoutId">The layout identifier.</param> /// <param name="directives">The directives.</param> protected override void AppendLayout(string layoutTemplate, string assemblyInfo, PlaceHolderCursor parentPlaceHolder, CursorCollection placeHolders, string layoutId, DirectiveCollection directives) { try { base.AppendLayout(layoutTemplate, assemblyInfo, parentPlaceHolder, placeHolders, layoutId, directives); } catch (FileNotFoundException) { parentPlaceHolder.Output.Append(Res.Get <ErrorMessages>("CannotFindTemplate", layoutTemplate)); } }
/// <summary> /// Appends markup to the virtual page file depending on the current master page. /// </summary> /// <param name="virtualPath">The master page virtual path.</param> /// <param name="context">The context.</param> /// <param name="output">The output.</param> /// <param name="placeHolders">The place holders.</param> /// <param name="directives">The directives.</param> protected override void BuildWithMasterPage(string virtualPath, RequestContext context, StringBuilder output, CursorCollection placeHolders, DirectiveCollection directives) { if (LayoutMvcPageResolver.IsLayoutPath(virtualPath)) { SystemManager.RunWithElevatedPrivilege((args) => { HttpContext.Current.Items[PackageManager.CurrentPackageKey] = context.HttpContext.Items[PackageManager.CurrentPackageKey]; base.BuildWithMasterPage(virtualPath, context, output, placeHolders, directives); }); } else { base.BuildWithMasterPage(virtualPath, context, output, placeHolders, directives); } }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { _initialDirectiveArray.Clear(); _resultDirectiveArray.Clear(); AnimatedThreadWorker.ReportProgress(0, "load directives"); try { if (_currentForecast == null) { var aircrafts = GlobalObjects.AircraftsCore.GetAllAircrafts(); foreach (var aircraft in aircrafts) { _initialDirectiveArray.AddRange(GlobalObjects.DirectiveCore.GetDeferredItems(null, aircraft)); } } else { AnimatedThreadWorker.ReportProgress(20, "calculation directives"); GlobalObjects.AnalystCore.GetDirectives(_currentForecast, _currentPrimaryDirectiveType); DirectiveCollection dirC = _currentForecast.DirectiveCollections[_currentPrimaryDirectiveType]; foreach (Directive directive in dirC) { _initialDirectiveArray.Add(directive); } } } catch (Exception ex) { Program.Provider.Logger.Log("Error while loading directives", ex); } AnimatedThreadWorker.ReportProgress(40, "filter directives"); if (_adType != ADType.None) { List <Directive> forDeleting = _initialDirectiveArray.Where(primaryDirective => primaryDirective.ADType != _adType).ToList(); foreach (Directive directive in forDeleting) { _initialDirectiveArray.Remove(_initialDirectiveArray.GetItemById(directive.ItemId)); } } #region Калькуляция состояния директив AnimatedThreadWorker.ReportProgress(60, "calculation of directives"); foreach (Directive pd in _initialDirectiveArray) { //GlobalObjects.PerformanceCalculator.GetNextPerformance(pd); GlobalObjects.MTOPCalculator.CalculateDirectiveNew(pd); } AnimatedThreadWorker.ReportProgress(70, "filter directives"); FilterItems(_initialDirectiveArray, _resultDirectiveArray); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Сравнение с рабочими пакетами AnimatedThreadWorker.ReportProgress(90, "comparison with the Work Packages"); //загрузка рабочих пакетов для определения //перекрытых ими выполнений задач if (_openPubWorkPackages == null) { _openPubWorkPackages = new CommonCollection <WorkPackage>(); } _openPubWorkPackages.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackagesLite(CurrentAircraft, WorkPackageStatus.Opened)); _openPubWorkPackages.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackagesLite(CurrentAircraft, WorkPackageStatus.Published)); //сбор всех записей рабочих пакетов для удобства фильтрации List <WorkPackageRecord> openWPRecords = new List <WorkPackageRecord>(); foreach (WorkPackage openWorkPackage in _openPubWorkPackages) { openWPRecords.AddRange(openWorkPackage.WorkPakageRecords); } foreach (Directive task in _resultDirectiveArray) { if (task == null || task.NextPerformances == null || task.NextPerformances.Count <= 0) { continue; } //Проход по всем след. выполнениям чека и записям в рабочих пакетах //для поиска перекрывающихся выполнений List <NextPerformance> performances = task.NextPerformances; foreach (NextPerformance np in performances) { //поиск записи в рабочих пакетах по данному чеку //чей номер группы выполнения (по записи) совпадает с расчитанным WorkPackageRecord wpr = openWPRecords.Where(r => r.PerformanceNumFromStart == np.PerformanceNum && r.WorkPackageItemType == task.SmartCoreObjectType.ItemId && r.DirectiveId == task.ItemId).FirstOrDefault(); if (wpr != null) { np.BlockedByPackage = _openPubWorkPackages.GetItemById(wpr.WorkPakageId); } } } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Загрузка Котировочных ордеров AnimatedThreadWorker.ReportProgress(95, "Load Quotations"); //загрузка рабочих пакетов для определения //перекрытых ими выполнений задач if (_openPubQuotations == null) { _openPubQuotations = new CommonCollection <RequestForQuotation>(); } _openPubQuotations.Clear(); _openPubQuotations.AddRange(GlobalObjects.PurchaseCore.GetRequestForQuotation(CurrentAircraft, new[] { WorkPackageStatus.Opened, WorkPackageStatus.Published })); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion AnimatedThreadWorker.ReportProgress(100, "Complete"); }
protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e) { GlobalObjects.ComponentCore.ReloadActualStateRecordForBaseComponents(_currentComponent.ParentAircraftId); #region Загрузка элементов AnimatedThreadWorker.ReportProgress(0, "load component"); try { if (_currentComponent.ItemId > 0) { if (_currentComponent is BaseComponent) { if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } _currentComponent = GlobalObjects.ComponentCore.GetFullBaseComponent(_currentComponent.ItemId); var types = new[] { SmartCoreType.BaseComponent.ItemId, SmartCoreType.ComponentDirective.ItemId }; if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } //Загрузка документов var documents = GlobalObjects.CasEnvironment.Loader.GetObjectList <Document>(new ICommonFilter[] { new CommonFilter <int>(Document.ParentIdProperty, _currentComponent.ItemId), new CommonFilter <int>(Document.ParentTypeIdProperty, FilterType.In, types) }); _currentComponent.ChangeLLPCategoryRecords.Clear(); _currentComponent.ChangeLLPCategoryRecords .AddRange(GlobalObjects.CasEnvironment.NewLoader .GetObjectList <ComponentLLPCategoryChangeRecordDTO, ComponentLLPCategoryChangeRecord>( new Filter("ParentId", _currentComponent.ItemId), true)); _workParams = GlobalObjects.CasEnvironment.NewLoader .GetObjectList <ComponentWorkInRegimeParamDTO, ComponentWorkInRegimeParams>( new List <Filter>() { new Filter("ComponentId", _currentComponent.ItemId) }); if (documents.Count > 0) { var crs = GlobalObjects.CasEnvironment.GetDictionary <DocumentSubType>() .GetByFullName("Component CRS Form") as DocumentSubType; var shipping = GlobalObjects.CasEnvironment.GetDictionary <DocumentSubType>() .GetByFullName("Shipping document") as DocumentSubType; var docShipping = documents.FirstOrDefault(d => d.ParentId == _currentComponent.ItemId && d.ParentTypeId == SmartCoreType.BaseComponent.ItemId && d.DocumentSubType.ItemId == shipping.ItemId); if (docShipping != null) { _currentComponent.Document = docShipping; _currentComponent.Document.Parent = _currentComponent; } var docCrs = documents.FirstOrDefault(d => d.ParentId == _currentComponent.ItemId && d.ParentTypeId == SmartCoreType.BaseComponent.ItemId && d.DocumentSubType.ItemId == crs.ItemId); if (docCrs != null) { _currentComponent.DocumentCRS = docCrs; _currentComponent.DocumentCRS.Parent = _currentComponent; } } if (_currentComponent.ComponentDirectives.Count > 0) { var directivesIds = _currentComponent.ComponentDirectives.Select(d => d.ItemId); var itemsRelations = GlobalObjects.ItemsRelationsDataAccess.GetRelations(directivesIds, SmartCoreType.ComponentDirective.ItemId); foreach (var directive in _currentComponent.ComponentDirectives) { var docCd = documents.FirstOrDefault(d => d.ParentId == directive.ItemId && d.ParentTypeId == SmartCoreType.ComponentDirective.ItemId); if (docCd != null) { directive.Document = docCd; directive.Document.Parent = directive; } if (itemsRelations.Count > 0) { //Сделан такой костыль для того что был когда то баг что записи не грузились и создавалось несколько связок и вылетало предупреждение if (itemsRelations.Count > 1) { var max = itemsRelations.Max(i => i.Updated); var deleted = new List <ItemsRelation>(); foreach (var relation in itemsRelations) { if (max.Equals(relation.Updated)) { continue; } GlobalObjects.NewKeeper.Delete(relation); deleted.Add(relation); } foreach (var itemsRelation in deleted) { itemsRelations.Remove(itemsRelation); } } directive.ItemRelations.Clear(); directive.ItemRelations.AddRange(itemsRelations.Where(i => i.FirstItemId == directive.ItemId || i.SecondItemId == directive.ItemId)); //TODO:(Evgenii Babak)не использовать Where } } } } else { if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } _currentComponent = GlobalObjects.ComponentCore.GetComponentById(_currentComponent.ItemId); } } } catch (Exception ex) { Program.Provider.Logger.Log("Error while loading component", ex); } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Калькуляция состояния директив AnimatedThreadWorker.ReportProgress(40, "calculation of component"); var conditionState = GlobalObjects.PerformanceCalculator.GetConditionState(_currentComponent); foreach (var directive in _currentComponent.ComponentDirectives) { GlobalObjects.MTOPCalculator.CalculateDirectiveNew(directive); } Invoke(new Action <ConditionState>(cs => statusControl.ConditionState = cs), conditionState); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } if (_baseComponentHeaderControl != null && _currentComponent is BaseComponent) { #region Проверка состояния компонентов if (_baseComponentComponents != null) { _baseComponentComponents.Clear(); } _baseComponentComponents = GlobalObjects.ComponentCore.GetComponents((BaseComponent)_currentComponent); if (_baseComponentComponents.Count == 0) { _baseComponentHeaderControl.ComponentsStatus = Statuses.NotActive; _baseComponentHeaderControl.ComponentsLLPStatus = Statuses.NotActive; } else { #region проверка Component Status if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } AnimatedThreadWorker.ReportProgress(47, "Check Components: Component Status"); Statuses allComponentStatus = Statuses.NotActive; foreach (Component detail in _baseComponentComponents) { ConditionState directiveCond = GlobalObjects.PerformanceCalculator.GetConditionState(detail); if (directiveCond == ConditionState.NotEstimated && allComponentStatus == Statuses.NotActive) { allComponentStatus = Statuses.NotActive; } if (directiveCond == ConditionState.Satisfactory && allComponentStatus != Statuses.Notify) { allComponentStatus = Statuses.Satisfactory; } if (directiveCond == ConditionState.Notify) { allComponentStatus = Statuses.Notify; } if (directiveCond == ConditionState.Overdue) { allComponentStatus = Statuses.NotSatisfactory; break; } } _baseComponentHeaderControl.ComponentsStatus = allComponentStatus; #endregion #region проверка LLP Status if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } AnimatedThreadWorker.ReportProgress(51, "Check Components: LLP Status"); IEnumerable <Component> llp = _baseComponentComponents .Where(d => d.ParentBaseComponent != null && d.ParentBaseComponent.BaseComponentTypeId == BaseComponentType.Engine.ItemId);//TODO:(Evgenii Babak) заменить на использование ComponentCore Statuses bdComponentLLPStatus = Statuses.NotActive; foreach (Component llpDetail in llp) { ConditionState directiveCond = GlobalObjects.PerformanceCalculator.GetConditionState(llpDetail); if (directiveCond == ConditionState.NotEstimated && bdComponentLLPStatus == Statuses.NotActive) { bdComponentLLPStatus = Statuses.NotActive; } if (directiveCond == ConditionState.Satisfactory && bdComponentLLPStatus != Statuses.Notify) { bdComponentLLPStatus = Statuses.Satisfactory; } if (directiveCond == ConditionState.Notify) { bdComponentLLPStatus = Statuses.Notify; } if (directiveCond == ConditionState.Overdue) { bdComponentLLPStatus = Statuses.NotSatisfactory; break; } } _baseComponentHeaderControl.ComponentsStatus = bdComponentLLPStatus; #endregion } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Проверка состояния директив AnimatedThreadWorker.ReportProgress(55, "Check Directives"); DirectiveCollection directives = GlobalObjects.DirectiveCore.GetDirectives((BaseComponent)_currentComponent, DirectiveType.All); if (directives.Count == 0) { _baseComponentHeaderControl.ADStatus = Statuses.NotActive; _baseComponentHeaderControl.EOStatus = Statuses.NotActive; _baseComponentHeaderControl.SBStatus = Statuses.NotActive; } else { #region проверка ADStatus if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } AnimatedThreadWorker.ReportProgress(55, "Check Directives: AD Status"); Statuses allADStatus = Statuses.NotActive; IEnumerable <Directive> ads = directives.Where(p => p.DirectiveType == DirectiveType.AirworthenessDirectives); foreach (Directive primaryDirective in ads) { ConditionState directiveCond = GlobalObjects.PerformanceCalculator.GetConditionState(primaryDirective); if (directiveCond == ConditionState.NotEstimated && allADStatus == Statuses.NotActive) { allADStatus = Statuses.NotActive; } if (directiveCond == ConditionState.Satisfactory && allADStatus != Statuses.Notify) { allADStatus = Statuses.Satisfactory; } if (directiveCond == ConditionState.Notify) { allADStatus = Statuses.Notify; } if (directiveCond == ConditionState.Overdue) { allADStatus = Statuses.NotSatisfactory; break; } } _baseComponentHeaderControl.ADStatus = allADStatus; #endregion #region проверка EO Status if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } AnimatedThreadWorker.ReportProgress(61, "Check Directives: Engineering order Status"); Statuses allEOStatus = Statuses.NotActive; IEnumerable <Directive> eos = directives.Where(p => p.DirectiveType == DirectiveType.EngineeringOrders || p.EngineeringOrders != "" || p.EngineeringOrderFile != null); foreach (Directive primaryDirective in eos) { ConditionState directiveCond = GlobalObjects.PerformanceCalculator.GetConditionState(primaryDirective); if (directiveCond == ConditionState.NotEstimated && allEOStatus == Statuses.NotActive) { allEOStatus = Statuses.NotActive; } if (directiveCond == ConditionState.Satisfactory && allEOStatus != Statuses.Notify) { allEOStatus = Statuses.Satisfactory; } if (directiveCond == ConditionState.Notify) { allEOStatus = Statuses.Notify; } if (directiveCond == ConditionState.Overdue) { allEOStatus = Statuses.NotSatisfactory; break; } } _baseComponentHeaderControl.EOStatus = allEOStatus; #endregion #region проверка SB Status if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } AnimatedThreadWorker.ReportProgress(66, "Check Directives: Service bulletins Status"); Statuses allSBStatus = Statuses.NotActive; IEnumerable <Directive> sbs = directives.Where(p => p.DirectiveType == DirectiveType.SB || p.ServiceBulletinNo != "" || p.ServiceBulletinFile != null); foreach (Directive primaryDirective in sbs) { ConditionState directiveCond = GlobalObjects.PerformanceCalculator.GetConditionState(primaryDirective); if (directiveCond == ConditionState.NotEstimated && allSBStatus == Statuses.NotActive) { allSBStatus = Statuses.NotActive; } if (directiveCond == ConditionState.Satisfactory && allSBStatus != Statuses.Notify) { allSBStatus = Statuses.Satisfactory; } if (directiveCond == ConditionState.Notify) { allSBStatus = Statuses.Notify; } if (directiveCond == ConditionState.Overdue) { allSBStatus = Statuses.NotSatisfactory; break; } } _baseComponentHeaderControl.SBStatus = allSBStatus; #endregion } //Очистка коллекции для предотвращения утечек памяти directives.Clear(); #endregion } if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion #region Сравнение с рабочими пакетами AnimatedThreadWorker.ReportProgress(90, "comparison with the Work Packages"); if (AnimatedThreadWorker.CancellationPending) { e.Cancel = true; return; } #endregion AnimatedThreadWorker.ReportProgress(100, "Complete"); }
///// <param name="status">Фильтр статуса рабочего пакета. (По умолчанию = WorkPackageStatus.All)</param> ///// <param name="loadWorkPackageItems">Флаг загрузки элементов рабочих пакетов</param> ///// <param name="includedTasks">Задачи, которые должны содержать пакеты (при передаче пустои коллекции запрос вернет 0 рабочих пакетов)</param> /// <returns></returns> public List <Discrepancy> GetDiscrepancies(Aircraft aircraft = null, DiscFilterType filterType = DiscFilterType.All, DateTime?from = null, DateTime?to = null) //TODO: Переделать на int? aircraftId = null { var resultList = new List <Discrepancy>(); var preResultList = new List <Discrepancy>(); var filters = new List <ICommonFilter>(); if (filterType == DiscFilterType.Defect) { filters.Add(new CommonFilter <bool>(Discrepancy.IsReliabilityProperty, true)); } else if (filterType == DiscFilterType.Occurrence) { filters.Add(new CommonFilter <bool>(Discrepancy.IsOccurrenceProperty, true)); } else if (from.HasValue && to.HasValue) { var flights = _loader.GetObjectList <AircraftFlight>(new ICommonFilter[] { new CommonFilter <DateTime>(AircraftFlight.FlightDateProperty, FilterType.GratherOrEqual, new [] { from.Value.Date }), new CommonFilter <DateTime>(AircraftFlight.FlightDateProperty, FilterType.LessOrEqual, new [] { to.Value.Date }), }); if (flights.Count > 0) { filters.Add(new CommonFilter <int>(Discrepancy.FlightIdProperty, FilterType.In, flights.Select(i => i.ItemId).ToArray())); } } if (aircraft != null) { preResultList.AddRange(_loader.GetObjectList <Discrepancy>(new[] { new CommonFilter <string>(Discrepancy.FlightIdProperty, FilterType.In, new [] { $"(Select ItemId from AircraftFlights where AircraftId = {aircraft.ItemId} and IsDeleted = 0)" }), })); //Строка запроса, выдающая идентификаторы родительских задач КИТов //Фильтр по ключевому полю таблицы обозначающий //что значения ключевого поля таблицы должны быть //среди идентификаторов родительских задач КИТов } else { if (filters.Count > 0) { preResultList.AddRange(_loader.GetObjectListAll <Discrepancy>(filters.ToArray(), loadChild: true)); } } #region //заполнение Discrepancies CorrectiveAction в Discrepancies нового полета// int[] deferredsIds = preResultList .Where(i => i.DirectiveId > 0) .Select(i => i.DirectiveId) .ToArray(); var deffereds = new DirectiveCollection(); if (deferredsIds.Length > 0) { deffereds = _directiveCore.GetDeferredItems(filters: new ICommonFilter[] { new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, deferredsIds) }); } var parentFlights = new List <AircraftFlight>(); var flightIds = preResultList.Select(i => i.FlightId).Distinct().ToArray(); if (aircraft != null) { foreach (var id in flightIds) { var fl = _aircraftFlightCore.GetAircraftFlightById(aircraft.ItemId, id); if (fl != null) { parentFlights.Add(fl); resultList.Add(preResultList.FirstOrDefault(i => i.FlightId == id)); } } } else { if (flightIds.Length > 0) { var flights = _newLoader.GetObjectList <AircraftFlightDTO, AircraftFlight>(new Filter("ItemId", flightIds)); foreach (var id in flightIds) { var fl = flights.FirstOrDefault(i => i.ItemId == id); if (fl != null) { parentFlights.Add(fl); resultList.Add(preResultList.FirstOrDefault(i => i.FlightId == id)); } } } } var atlbs = new List <ATLB>(); var atlbIds = parentFlights.Select(i => i.ATLBId).Distinct().ToArray(); if (atlbIds.Length > 0) { //atlbs.AddRange(_loader.GetObjectList<ATLB>(new CommonFilter<int>(BaseEntityObject.ItemIdProperty, FilterType.In, atlbIds))); atlbs.AddRange(_newLoader.GetObjectList <ATLBDTO, ATLB>(new Filter("ItemId", atlbIds))); } var correctiveActions = new List <CorrectiveAction>(); var discrepancyIds = resultList.Select(i => i.ItemId).Distinct().ToArray(); if (discrepancyIds.Length > 0) { //correctiveActions.AddRange(_loader.GetObjectList<CorrectiveAction>(new CommonFilter<int>(CorrectiveAction.DiscrepancyIdProperty, FilterType.In, discrepancyIds), true)); correctiveActions.AddRange(_newLoader.GetObjectList <CorrectiveActionDTO, CorrectiveAction>(new Filter("DiscrepancyID", discrepancyIds), true)); } var cetificates = new List <CertificateOfReleaseToService>(); var crsIds = correctiveActions.Select(i => i.CRSID).Distinct().ToArray(); if (crsIds.Length > 0) { cetificates.AddRange(_loader.GetObjectList <CertificateOfReleaseToService>(new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, crsIds), true)); } //cetificates.AddRange(_newLoader.GetObjectList<CertificateOfReleaseToServiceDTO, CertificateOfReleaseToService>(new Filter("ItemId", crsIds), true)); foreach (var t in resultList) { t.ParentFlight = parentFlights.FirstOrDefault(i => i.ItemId == t.FlightId); if (t.ParentFlight != null) { t.ParentFlight.ParentATLB = atlbs.FirstOrDefault(i => i.ItemId == t.ParentFlight.ATLBId); } t.DeferredItem = deffereds.GetDirectiveById(t.DirectiveId) as DeferredItem; t.CorrectiveActionCollection = new CorrectiveActionCollection(); t.CorrectiveActionCollection.AddRange(correctiveActions.Where(i => t.ItemId == i.DiscrepancyId)); t.CorrectiveAction.CertificateOfReleaseToService = cetificates.FirstOrDefault(i => i.ItemId == t.CorrectiveAction.CRSID); } #endregion return(resultList.Where(i => i.ParentFlight != null && i.ParentFlight.ParentATLB != null).ToList()); }
TryMatchRule(CommandRule rule, IEnumerable <Token> tokens, CommandResult commandResult, DirectiveCollection directives) { var entryItems = ImmutableArray.CreateBuilder <KeyValuePair <string, string> >(); entryItems.Add(new KeyValuePair <string, string>("verb", rule.CommandName)); // Filter out option tokens as we query the command result for them when processing a rule. var tokenQueue = new Queue <Token>(tokens.Where(x => x.Type != TokenType.Option)); Token NextToken() { return(tokenQueue.TryDequeue(out var firstToken) ? firstToken : default);
FilterCommand(string commandName, IEnumerable <Token> tokens, CommandResult commandResult, DirectiveCollection directives) { if (commandName is null || tokens is null) { return(null); } return(Rules .Select(rule => rule.CommandName == commandName ? TryMatchRule(rule, tokens, commandResult, directives) : null) .FirstOrDefault(x => x is not null)); }
/// <summary> /// Appends markup to the virtual page file depending on the current master page. /// </summary> /// <param name="virtualPath">The master page virtual path.</param> /// <param name="context">The context.</param> /// <param name="output">The output.</param> /// <param name="placeHolders">The place holders.</param> /// <param name="directives">The directives.</param> protected override void BuildWithMasterPage(string virtualPath, RequestContext context, StringBuilder output, CursorCollection placeHolders, DirectiveCollection directives) { if (LayoutMvcPageResolver.IsLayoutPath(virtualPath)) { var httpContext = new HttpContextWrapper(new HttpContext(HttpContext.Current.Request, HttpContext.Current.Response)); httpContext.Items[PackageManager.CurrentPackageKey] = context.HttpContext.Items[PackageManager.CurrentPackageKey]; SystemManager.RunWithHttpContext(httpContext, () => base.BuildWithMasterPage(virtualPath, context, output, placeHolders, directives)); } else { base.BuildWithMasterPage(virtualPath, context, output, placeHolders, directives); } }
public void InvokeBuildPageTemplateRecursive(IPageTemplate pageTemplate, string theme, RequestContext context, StringBuilder output, CursorCollection placeHolders, DirectiveCollection directives, List<IControlsContainer> controlConatiners) { this.BuildPageTemplateRecursive(pageTemplate, theme, context, output, placeHolders, directives, controlConatiners); }
/// <summary> /// Возвращает все директивы базового агрегата, самолета, или задачи созданные в рамках страницы бортжурнала /// </summary> /// <returns></returns> private DirectiveCollection GetDirectives(BaseComponent parentBaseComponent, Aircraft parentAircraft, AircraftFlight parentFlight, DirectiveType directiveType) { if (parentAircraft == null && parentBaseComponent == null && parentFlight == null) { throw new ArgumentNullException(); } if (directiveType == null) { directiveType = DirectiveType.AirworthenessDirectives; } List <DbQuery> qrs; if (parentBaseComponent != null) { qrs = DirectiveQueries.GetSelectQuery(parentBaseComponent, directiveType, loadChild: true); } else if (parentAircraft != null) { qrs = DirectiveQueries.GetAircraftDirectivesSelectQuery(parentAircraft.ItemId, directiveType, loadChild: true); } else { qrs = DirectiveQueries.GetSelectQuery(parentFlight, directiveType, loadChild: true); } var directives = new DirectiveCollection(); directives.AddRange(_loader.GetObjectListAll <Directive>(qrs, true)); if (directives.Count == 0) { return(directives); } var directiveIds = directives.Select(d => d.ItemId).ToList(); var itemsRelations = _itemsRelationsDataAccess.GetRelations(directiveIds, SmartCoreType.Directive.ItemId); var mpdCompRelations = _itemsRelationsDataAccess.GetCustomRelations(itemsRelations.Select(i => i.FirstItemId).Concat(itemsRelations.Select(i => i.SecondItemId)), SmartCoreType.ComponentDirective.ItemId); if (itemsRelations.Count > 0) { foreach (var directive in directives) { directive.ItemRelations.AddRange(itemsRelations.Where(i => i.FirstItemId == directive.ItemId || i.SecondItemId == directive.ItemId)); var mpdLink = directive.ItemRelations.FirstOrDefault(i => i.FirtsItemTypeId == SmartCoreType.MaintenanceDirective.ItemId || i.SecondItemTypeId == SmartCoreType.MaintenanceDirective.ItemId); if (mpdLink != null) { var mpdId = mpdLink.FirtsItemTypeId == SmartCoreType.MaintenanceDirective.ItemId ? mpdLink.FirstItemId : mpdLink.SecondItemId; var mpdComLink = mpdCompRelations.FirstOrDefault(i => i.FirstItemId == mpdId || i.SecondItemId == mpdId); directive.LinkComp = mpdComLink?.AdditionalInformation?.Component; } } } return(directives); }