Exemple #1
0
        private CswNbtSdInspectionsDataModels.InspectionData _iterateTree(ICswNbtTree Tree, CswNbtSdInspectionsDataModels.InspectionData Ret = null)
        {
            Ret = Ret ?? new CswNbtSdInspectionsDataModels.InspectionData();
            Int32 ChildNodeCount = Tree.getChildNodeCount();

            if (ChildNodeCount > 0)
            {
                for (Int32 I = 0; I < ChildNodeCount; I += 1)
                {
                    Tree.goToNthChild(I);
                    if (false == Tree.getNodeLockedForCurrentPosition())
                    {
                        CswNbtNode NodeForCurrentPosition = Tree.getNodeForCurrentPosition();
                        if (NodeForCurrentPosition.ObjClass.ObjectClass.ObjectClass == _InspectionDesignOc.ObjectClass)
                        {
                            CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspectionDesign Design = _addNodeTypeInspectionDesignToResponse(NodeForCurrentPosition);
                            if (null != Design)
                            {
                                Ret.Designs.Add(Design);
                            }
                            CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection Inspection = _addChecklistNodesToResponse(NodeForCurrentPosition);
                            if (null != Inspection)
                            {
                                Ret.Inspections.Add(Inspection);
                            }
                        }
                    }
                    if (Tree.getChildNodeCount() > 0)
                    {
                        _iterateTree(Tree, Ret);
                    }
                    Tree.goToParentNode();
                }
            }
            return(Ret);
        }
Exemple #2
0
        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);
                        }
                    }
                }
            }
        }
Exemple #3
0
        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);
        }