public override void update() { CswNbtView TargetView = _getInvalidTargetsView(); ICswNbtTree TargetTree = _CswNbtSchemaModTrnsctn.getTreeFromView(TargetView, false); Int32 ContainerCount = TargetTree.getChildNodeCount(); for (int j = 0; j < ContainerCount; j++) //Target Nodes { TargetTree.goToNthChild(j); if (TargetTree.getChildNodeCount() == 0) //No valid inspection exists - status needs to change { CswNbtObjClassInspectionTarget TargetNode = _CswNbtSchemaModTrnsctn.Nodes[TargetTree.getNodeIdForCurrentPosition()]; TargetNode.Status.Value = CswNbtObjClassInspectionDesign.TargetStatusAsString(CswNbtObjClassInspectionDesign.TargetStatus.Not_Inspected); TargetNode.postChanges(false); } TargetTree.goToParentNode(); } } //Update()
public void threadCallBack(ICswResources CswResources) { _LogicRunStatus = CswEnumScheduleLogicRunStatus.Running; CswNbtResources CswNbtResources = (CswNbtResources)CswResources; _CswScheduleLogicNodes = new CswScheduleLogicNodes(CswNbtResources); CswNbtResources.AuditContext = "Scheduler Task: " + RuleName; if (CswEnumScheduleLogicRunStatus.Stopping != _LogicRunStatus) { try { Int32 TotalProcessed = 0; string Names = string.Empty; Collection <CswNbtObjClassInspectionDesign> InspectionDesigns = _CswScheduleLogicNodes.getInspectonDesigns(); for (Int32 idx = 0; (idx < InspectionDesigns.Count) && (CswEnumScheduleLogicRunStatus.Stopping != _LogicRunStatus); idx++) { CswNbtObjClassInspectionDesign CurrentInspectionDesign = InspectionDesigns[idx]; CurrentInspectionDesign.Status.Value = _Overdue; CurrentInspectionDesign.postChanges(ForceUpdate: true); TotalProcessed++; Names += CurrentInspectionDesign.Name + "; "; } _CswScheduleLogicDetail.StatusMessage = TotalProcessed.ToString() + " inspections processed: " + Names; _LogicRunStatus = CswEnumScheduleLogicRunStatus.Succeeded; //last line }//try catch (Exception Exception) { _CswScheduleLogicDetail.StatusMessage = "CswScheduleLogicNbtUpdtInspection::threadCallBack() exception: " + Exception.Message + "; " + Exception.StackTrace; CswNbtResources.logError(new CswDniException(_CswScheduleLogicDetail.StatusMessage)); _LogicRunStatus = CswEnumScheduleLogicRunStatus.Failed; } //catch } //if we're not shutting down _CswScheduleLogicDetail.StatusMessage = "Completed without error"; }//threadCallBack()
private void _updateInspectionNode(CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection Inspection, CswNbtSdInspectionsDataModels.InspectionUpdateData UpdateCollection) { if (Int32.MinValue != Inspection.InspectionId) { CswPrimaryKey InspectionPk = new CswPrimaryKey("nodes", Inspection.InspectionId); CswNbtNode InspectionNode = _CswNbtResources.Nodes.GetNode(InspectionPk, Inspection.DesignId); if (null != InspectionNode) { CswNbtObjClassInspectionDesign NodeAsDesign = (CswNbtObjClassInspectionDesign)InspectionNode; if (NodeAsDesign.Status.Value == Completed || NodeAsDesign.Status.Value == CompletedLate) { UpdateCollection.Completed.Add(Inspection); } else if (NodeAsDesign.Status.Value == Cancelled) { UpdateCollection.Cancelled.Add(Inspection); } else if (NodeAsDesign.Status.Value == Missed) { UpdateCollection.Missed.Add(Inspection); } else { Inspection.Counts = new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection.QuestionCounts(); /* We loop once to set the property values */ CswNbtMetaDataNodeType InspectionNt = InspectionNode.getNodeType(); if (null != InspectionNt) { //Can edit the nodetype if (_CswNbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Edit, InspectionNt)) { foreach (CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection.QuestionAnswer Question in Inspection.Questions) { CswNbtMetaDataNodeTypeProp Ntp = InspectionNt.getNodeTypeProp(Question.QuestionId); if (null != Ntp && null != Ntp.FirstEditLayout) { CswNbtMetaDataNodeTypeTab Tab = InspectionNt.getNodeTypeTab(Ntp.FirstEditLayout.TabId); if (null != Tab) { bool CanEdit = ( _CswNbtResources.Permit.canTab(CswEnumNbtNodeTypePermission.Edit, InspectionNt, Tab) || _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, Ntp, Tab) ); CswNbtNodePropQuestion PropAsQuestion = InspectionNode.Properties[Ntp]; if (CanEdit) { PropAsQuestion.Answer = Question.Answer; PropAsQuestion.CorrectiveAction = Question.CorrectiveAction; DateTime DateAnswered = CswConvert.ToDateTime(Question.DateAnswered); if (DateTime.MinValue != DateAnswered) { PropAsQuestion.DateAnswered = DateAnswered; } DateTime DateCorrected = CswConvert.ToDateTime(Question.DateCorrected); if (DateTime.MinValue != DateCorrected) { PropAsQuestion.DateCorrected = DateCorrected; } PropAsQuestion.Comments = Question.Comments; } if (false == string.IsNullOrEmpty(Question.Answer)) { Inspection.Counts.Answered += 1; } else { Inspection.Counts.UnAnswered += 1; } if (false == PropAsQuestion.IsCompliant) { Inspection.Counts.Ooc += 1; } Inspection.Counts.Total += 1; } } } InspectionNode.postChanges(true); if (false == string.IsNullOrEmpty(Inspection.Action) && (Inspection.Action.ToLower() == "finish" || Inspection.Action.ToLower() == "cancel")) { CswNbtMetaDataNodeTypeProp ButtonNtp = null; if (Inspection.Action.ToLower() == "finish") { ButtonNtp = InspectionNode.getNodeType().getNodeTypeProp(CswNbtObjClassInspectionDesign.PropertyName.Finish); } else if (Inspection.Action.ToLower() == "cancel") { ButtonNtp = InspectionNode.getNodeType().getNodeTypeProp(CswNbtObjClassInspectionDesign.PropertyName.Cancel); } if (null != ButtonNtp && null != ButtonNtp.FirstEditLayout) { CswNbtMetaDataNodeTypeTab ButtonTab = _CswNbtResources.MetaData.getNodeTypeTab(ButtonNtp.FirstEditLayout.TabId); if (null != ButtonTab && ( _CswNbtResources.Permit.canTab(CswEnumNbtNodeTypePermission.Edit, InspectionNt, NodeTypeTab: ButtonTab) || _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, ButtonNtp, ButtonTab) ) ) { _InspectionDesignOc = _InspectionDesignOc ?? _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.InspectionDesignClass); CswNbtObjClass NbtObjClass = CswNbtObjClassFactory.makeObjClass(_CswNbtResources, _InspectionDesignOc, InspectionNode); CswNbtObjClass.NbtButtonData ButtonData = new CswNbtObjClass.NbtButtonData(ButtonNtp); NbtObjClass.triggerOnButtonClick(ButtonData); } } } } } /* Reinit since state has changed. */ NodeAsDesign = InspectionNode; if (NodeAsDesign.Status.Value == Completed || NodeAsDesign.Status.Value == CompletedLate) { /* Nothing to do */ } else if (NodeAsDesign.Status.Value == ActionRequired) { Inspection.Status = NodeAsDesign.Status.Value; /* We loop again to modify the return with the status of the Inspection per QuestionAnswer */ foreach (CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection.QuestionAnswer Question in Inspection.Questions) { Question.Status = NodeAsDesign.Status.Value; } /* In case the Inspection has been modified by someone else */ Inspection.DueDateAsDate = NodeAsDesign.InspectionDate.DateTimeValue; Inspection.InspectionPointName = NodeAsDesign.Target.CachedNodeName; Inspection.LocationPath = NodeAsDesign.Location.CachedValue; UpdateCollection.ActionRequired.Add(Inspection); } else { UpdateCollection.InComplete.Add(Inspection); } } } } }
private CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection _addChecklistNodesToResponse(CswNbtNode InspectionNode) { CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection Ret = null; if (false == InspectionDesignNodeIds.Contains(InspectionNode.NodeId) && false == InspectionNode.ReadOnly) { InspectionDesignNodeIds.Add(InspectionNode.NodeId); CswNbtObjClassInspectionDesign NodeAsInspectionDesign = InspectionNode; Ret = new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection { DesignId = InspectionNode.NodeTypeId, DueDateAsDate = NodeAsInspectionDesign.DueDate.DateTimeValue, InspectionId = NodeAsInspectionDesign.NodeId.PrimaryKey, InspectionPointName = NodeAsInspectionDesign.Target.CachedNodeName, LocationPath = NodeAsInspectionDesign.Location.Gestalt, RouteName = default(string), Status = NodeAsInspectionDesign.Status.Value, Counts = new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection.QuestionCounts(), ReadOnly = InspectionNode.ReadOnly }; foreach (CswNbtNodePropWrapper Prop in InspectionNode.Properties) { if (Prop.getFieldTypeValue() == CswEnumNbtFieldType.Question && false == Prop.ReadOnly && _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, Prop.NodeTypeProp, null)) { CswNbtNodePropQuestion PropAsQuestion = Prop.AsQuestion; Ret.Counts.Total += 1; if (false == string.IsNullOrEmpty(PropAsQuestion.Answer) || PropAsQuestion.DateAnswered != DateTime.MinValue) { if (PropAsQuestion.IsCompliant) { Ret.Counts.Answered += 1; } else { Ret.Counts.Ooc += 1; } } else { Ret.Counts.UnAnswered += 1; } var ResponseQuestion = new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection.QuestionAnswer { Answer = PropAsQuestion.Answer, AnswerId = PropAsQuestion.JctNodePropId, IsAnswerEditable = PropAsQuestion.IsAnswerEditable, Comments = PropAsQuestion.Comments, CorrectiveAction = PropAsQuestion.CorrectiveAction, DateAnswered = PropAsQuestion.DateAnswered, QuestionId = PropAsQuestion.NodeTypePropId, Status = NodeAsInspectionDesign.Status.Value, DateCorrected = PropAsQuestion.DateCorrected }; Ret.Questions.Add(ResponseQuestion); } else if (Prop.getFieldTypeValue() == CswEnumNbtFieldType.Image && _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, Prop.NodeTypeProp, null)) { CswNbtNodePropImage PropAsImage = Prop.AsImage; CswNbtSdBlobData sdBlobData = new CswNbtSdBlobData(_CswNbtResources); Ret.Images = sdBlobData.GetImages(NodeAsInspectionDesign.NodeId, PropAsImage.JctNodePropId); Ret.MaxImages = PropAsImage.MaxFiles >= 1 ? PropAsImage.MaxFiles : 10; //if no value set for MaxFiles, default to 10 Ret.ImagePropId = new CswPropIdAttr(InspectionNode, PropAsImage.NodeTypeProp).ToString(); } } } return(Ret); }