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);
        }
예제 #3
0
 /// <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));
     }
 }
예제 #4
0
 /// <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);
     }
 }
예제 #5
0
        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;
        }
예제 #6
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);
        }
예제 #7
0
        /// <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);
        }
예제 #8
0
        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());
        }
예제 #10
0
 ///<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();
 }
예제 #11
0
        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);
        }
예제 #12
0
 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;
         }
     }
 }
예제 #13
0
        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);
     }
 }
예제 #16
0
        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");
        }
예제 #17
0
        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");
        }
예제 #18
0
        ///// <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());
        }
예제 #19
0
    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);
예제 #20
0
    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));
    }
예제 #21
0
 /// <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);
 }
예제 #23
0
파일: DirectiveCore.cs 프로젝트: jecus/Cas
        /// <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);
        }