コード例 #1
0
        }//if we got any result

        public static void getImageProp(ICswResources CswResources, NodePropImageReturn Return, BlobDataParams Request)
        {
            CswNbtResources NbtResources = (CswNbtResources)CswResources;

            CswPropIdAttr PropIdAttr = new CswPropIdAttr(Request.propid);
            CswNbtNode    node       = NbtResources.Nodes[PropIdAttr.NodeId];

            if (null != node)
            {
                CswNbtMetaDataNodeType NodeType = node.getNodeType();
                CswNbtNodePropWrapper  prop     = node.Properties[PropIdAttr.NodeTypePropId];

                if (NbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.View, NodeType, NbtResources.CurrentNbtUser))
                {
                    if (Int32.MinValue == prop.JctNodePropId)
                    {
                        prop.makePropRow(); //if we don't have a jct_node_prop row for this prop, we do now
                        node.postChanges(true);
                    }
                    prop.AsImage.SetImages(Request.date);
                    if (null != prop)
                    {
                        Return.Data = prop;
                    }
                }
                else
                {
                    throw new CswDniException(CswEnumErrorType.Warning, "You do not have sufficient priviledges to get this image property", "User " + NbtResources.CurrentNbtUser.UserId + " attempted to call getImageProp on prop " + prop.JctNodePropId);
                }
            }
        }
コード例 #2
0
        public override void update()
        {
            CswNbtMetaDataNodeType ReportNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType("Report");

            if (null != ReportNT)
            {
                CswNbtObjClassReport ReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(ReportNT.NodeTypeId, OnAfterMakeNode : delegate(CswNbtNode newNode)
                {
                    CswNbtObjClassReport report = newNode;
                    report.ReportName.Text      = "Custom Text Barcode";
                    report.Category.Text        = "System Reports";
                    report.SQL.Text             = "select UPPER('{text}') as text from dual";

                    CswNbtMetaDataObjectClass ReportGroupOC     = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportGroupClass);
                    CswNbtObjClassReportGroup SystemReportGroup = ReportGroupOC.getNodes(forceReInit: false, includeSystemNodes: true)
                                                                  .FirstOrDefault(ReportGroup => ((CswNbtObjClassReportGroup)ReportGroup).Name.Text == "System Reports");
                    if (null != SystemReportGroup)
                    {
                        report.ReportGroup.RelatedNodeId = SystemReportGroup.NodeId;
                    }
                });

                // upload .RPT
                string        Filename   = "customtextbarcode.rpt";
                CswPropIdAttr PropId     = new CswPropIdAttr(ReportNode.Node, ReportNode.RPTFile.NodeTypeProp);
                string        Filepath   = CswFilePath.getConfigurationFilePath(CswEnumSetupMode.NbtExe) + "\\" + Filename;
                byte[]        ReportFile = File.ReadAllBytes(Filepath);

                const string     ContentType = "application/octet-stream";
                string           Href;
                CswNbtSdBlobData SdBlobData = _CswNbtSchemaModTrnsctn.CswNbtSdBlobData;
                SdBlobData.saveFile(PropId.ToString(), ReportFile, ContentType, Filename, out Href);
            } // if( null != ReportNT )
        }     // update()
コード例 #3
0
        public static void clearBlob(ICswResources CswResources, BlobDataReturn Return, BlobDataParams Request)
        {
            CswNbtResources NbtResources = (CswNbtResources)CswResources;
            CswPropIdAttr   PropId       = new CswPropIdAttr(Request.propid);
            CswNbtNode      Node         = NbtResources.Nodes[PropId.NodeId];

            if (null != Node)
            {
                CswNbtMetaDataNodeTypeProp MetaDataProp = NbtResources.MetaData.getNodeTypeProp(PropId.NodeTypePropId);
                if (null != MetaDataProp)
                {
                    CswNbtNodePropWrapper FileProp = Node.Properties[MetaDataProp];
                    if (NbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Edit, MetaDataProp.getNodeType(), NbtResources.CurrentNbtUser) &&
                        NbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, MetaDataProp, null, FileProp))
                    {
                        CswNbtSdTabsAndProps tabsandprops = new CswNbtSdTabsAndProps(NbtResources);
                        tabsandprops.ClearPropValue(Request.propid, true);

                        Request.Blob    = new CswNbtSdBlobData.CswNbtBlob();
                        Request.success = true;

                        Return.Data = Request;
                    }
                    else
                    {
                        throw new CswDniException(CswEnumErrorType.Warning, "You do not have sufficient priveledges to clear this File property", "User " + NbtResources.CurrentNbtUser.UserId + " attempted to call clearBlob without sufficient priviledges.");
                    }
                }
            }
        }
コード例 #4
0
        private void _uploadBlobData( CswNbtObjClassReport ReportNode, string Filename )
        {
            CswPropIdAttr PropId = new CswPropIdAttr( ReportNode.Node, ReportNode.RPTFile.NodeTypeProp );
            string Filepath = CswFilePath.getConfigurationFilePath( CswEnumSetupMode.NbtExe ) + "\\" + Filename;
            byte[] ReportFile = File.ReadAllBytes( Filepath );
            const string ContentType = "application/octet-stream";
            string Href;

            CswNbtSdBlobData SdBlobData = _CswNbtSchemaModTrnsctn.CswNbtSdBlobData;
            SdBlobData.saveFile( PropId.ToString(), ReportFile, ContentType, Filename, out Href );

        }
コード例 #5
0
        public CswNbtPropertyReturn GetButtonMode(string propid)
        {
            CswPropIdAttr PropIdAttr = new CswPropIdAttr(propid);

            CswNbtPropertyReturn ret = new CswNbtPropertyReturn();
            var SvcDriver            = new CswWebSvcDriver <CswNbtPropertyReturn, CswPropIdAttr>(
                CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null),
                ReturnObj: ret,
                WebSvcMethodPtr: CswNbtWebServiceProperties.GetButtonMode,
                ParamObj: PropIdAttr
                );

            SvcDriver.run();

            return(ret);
        }
コード例 #6
0
ファイル: CswNbtSdC3.cs プロジェクト: crfroehlich/legacy
        /// <summary>
        /// Add values to the NodeType Properties of a Node.
        /// </summary>
        /// <param name="Node">The Node whose properties are being filled in.</param>
        /// <param name="CurrentIndex">The current index in the ProductSize array in a CswC3Product object. This is ONLY needed for Size Nodes.</param>
        public void addNodeTypeProps(CswNbtNode Node, int CurrentIndex = 0)
        {
            CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(Node.NodeTypeId);

            foreach (CswNbtMetaDataNodeTypeProp NTP in NodeType.getNodeTypeProps())
            {
                if (null != Node.Properties[NTP] && _Mappings.ContainsKey(NTP.PropName))
                {
                    C3Mapping C3Mapping = _Mappings[NTP.PropName];
                    switch (Node.Properties[NTP].getFieldTypeValue())
                    {
                    case CswEnumNbtFieldType.MOL:
                        if (false == string.IsNullOrEmpty(C3Mapping.C3ProductPropertyValue))
                        {
                            string propAttr = new CswPropIdAttr(Node, NTP).ToString();
                            string molData  = C3Mapping.C3ProductPropertyValue;

                            CswNbtSdBlobData SdBlobData = new CswNbtSdBlobData(_CswNbtResources);

                            MolecularGraph Mol = MoleculeBuilder.CreateMolFromString(molData);
                            if (false == Mol.ContainsInvalidAtom())
                            {
                                string Href;
                                string FormattedMolString;
                                string errorMsg;
                                SdBlobData.saveMol(molData, propAttr, out Href, out FormattedMolString, out errorMsg, Node: Node);
                            }
                            else
                            {
                                _CswNbtResources.logMessage("Failed to save the MOL file for product with ProductId " + _ProductToImport.ProductId + " during the C3 import process because it contained an invalid atom.");
                            }
                        }
                        break;

                    default:
                        CswNbtSubField SubField = NTP.getFieldTypeRule().SubFields[(CswEnumNbtPropColumn)C3Mapping.NBTSubFieldPropColName];
                        if (null != SubField)
                        {
                            Node.Properties[NTP].SetSubFieldValue(SubField, C3Mapping.C3ProductPropertyValue);
                        }
                        break;
                    }
                } //if( null != Node.Properties[NTP] && _Mappings.ContainsKey( NTP.PropName ) )
            }     //foreach( CswNbtMetaDataNodeTypeProp NTP in NodeType.getNodeTypeProps() )
        }         //addNodeTypeProps()
コード例 #7
0
        public string getCustomerAccessId(string LoginButtonPropId)
        {
            if (string.IsNullOrEmpty(LoginButtonPropId))
            {
                throw new CswDniException(CswEnumErrorType.Error, "Authentication in this context is not possible.", "Authentication in this context is not possible.");
            }
            CswPropIdAttr PropAttr = new CswPropIdAttr(LoginButtonPropId);

            if (null == PropAttr ||
                null == PropAttr.NodeId ||
                Int32.MinValue == PropAttr.NodeId.PrimaryKey)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Authentication in this context is not possible.", "Authentication in this context is not possible.");
            }
            CswNbtObjClassCustomer CustomerNode = _NbtManagerResources.Nodes.GetNode(PropAttr.NodeId);

            return(CustomerNode.CompanyID.Text);
        }
コード例 #8
0
        } // deleteSearch

        #endregion UniversalSearch

        #region ListOptions Search

        public static void doListOptionsSearch(ICswResources CswResources, CswNbtSearchReturn Return, CswNbtSearchRequest Request)
        {
            CswNbtResources _CswNbtResources = (CswNbtResources)CswResources;

            CswPropIdAttr PropIdAttr     = new CswPropIdAttr(Request.NodeTypePropId);
            Int32         NodeTypePropId = CswConvert.ToInt32(PropIdAttr.NodeTypePropId);

            if (NodeTypePropId != Int32.MinValue)
            {
                CswNbtMetaDataNodeTypeProp ThisNTP = _CswNbtResources.MetaData.getNodeTypeProp(NodeTypePropId);
                CswNbtNode Node = _CswNbtResources.Nodes.GetNode(PropIdAttr.NodeId);
                if (null != ThisNTP && null != Node)
                {
                    // Note: We are assuming that this property is a list!
                    // Todo: Handle the above condition
                    Node.Properties[ThisNTP].AsList.filterOptions(Request.SearchTerm);

                    Return.Data.Options = Node.Properties[ThisNTP].AsList.Options.Options;
                }
            } //if( NodeTypePropId != Int32.MinValue )
        }     //doListOptionsSearch()
コード例 #9
0
        /// <summary>
        /// WCF method to create a favorite
        /// </summary>
        public static void createFavorite(ICswResources CswResources, CswNbtRequestDataModel.CswRequestReturn Ret, CswNbtRequestDataModel.CswRequestReturn.Ret Request)
        {
            CswNbtResources NbtResources = _validate(CswResources);
            bool            Succeeded    = false;

            //This webservice is being called in the webclient twice - once to create the temp, and again to save the changes
            //this is really awkward - all this webservice should really do is return the Nodetypeid needed to do a traditional add
            //...oh, but wait, we need to make sure Favorite is checked in this case (and ONLY in this case) - *sigh*
            if (null != Request && false == string.IsNullOrEmpty(Request.RequestId))
            {
                CswNbtObjClassRequest Favorite = NbtResources.Nodes[Request.RequestId];
                if (null != Favorite)
                {
                    Succeeded = true;
                    Favorite.PromoteTempToReal();
                }
            }
            else
            {
                CswNbtMetaDataObjectClass RequestOc = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestClass);
                CswNbtMetaDataNodeType    RequestNt = RequestOc.getLatestVersionNodeTypes().FirstOrDefault();
                if (null != RequestNt)
                {
                    CswNbtObjClassRequest Favorite = NbtResources.Nodes.makeNodeFromNodeTypeId(RequestNt.NodeTypeId, IsTemp: true);
                    if (null != Favorite)
                    {
                        Favorite.IsFavorite.Checked = CswEnumTristate.True;
                        Favorite.Name.Text          = string.Empty;
                        Favorite.postChanges(ForceUpdate: false);
                        Succeeded = true;
                        CswPropIdAttr NameIdAttr = new CswPropIdAttr(Favorite.Node, Favorite.Name.NodeTypeProp);
                        Ret.Data.CswRequestId   = Favorite.NodeId;
                        Ret.Data.CswRequestName = NameIdAttr;
                    }
                }
            }
            Ret.Data.Succeeded = Succeeded;
        }
コード例 #10
0
        public static void clearImage(ICswResources CswResources, NodePropImageReturn Return, BlobDataParams Request)
        {
            CswNbtResources NbtResources = (CswNbtResources)CswResources;
            CswPropIdAttr   PropId       = new CswPropIdAttr(Request.propid);
            CswNbtNode      Node         = NbtResources.Nodes[PropId.NodeId];

            if (null != Node)
            {
                CswNbtMetaDataNodeTypeProp MetaDataProp = NbtResources.MetaData.getNodeTypeProp(PropId.NodeTypePropId);
                if (null != MetaDataProp)
                {
                    CswNbtNodePropWrapper FileProp = Node.Properties[MetaDataProp];
                    if (NbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Edit, MetaDataProp.getNodeType(), NbtResources.CurrentNbtUser) &&
                        NbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, MetaDataProp, null, FileProp))
                    {
                        int BlobDataId = Request.Blob.BlobDataId;

                        CswTableUpdate blobDataTS  = NbtResources.makeCswTableUpdate("clearImage", "blob_data");
                        DataTable      blobDataTbl = blobDataTS.getTable("where blobdataid = " + BlobDataId);
                        foreach (DataRow row in blobDataTbl.Rows)
                        {
                            row.Delete();
                        }
                        blobDataTS.update(blobDataTbl);

                        Request.Blob    = new CswNbtSdBlobData.CswNbtBlob();
                        Request.success = true;

                        getImageProp(CswResources, Return, Request);
                    }
                }
            }
            else
            {
                throw new CswDniException(CswEnumErrorType.Warning, "You do not have sufficient priveledges to clear this Image property", "User " + NbtResources.CurrentNbtUser.UserId + " attempted to call clearImg without sufficient priviledges.");
            }
        }
コード例 #11
0
        } // update()

        private void _moveBlobData( CswNbtNodePropWrapper PropWrapper, CswNbtNode Node )
        {
            if( Int32.MinValue != PropWrapper.JctNodePropId )
            {
                CswNbtSdBlobData SdBlobData = _CswNbtSchemaModTrnsctn.CswNbtSdBlobData;

                CswPropIdAttr PropId = new CswPropIdAttr( Node.NodeId, PropWrapper.NodeTypePropId );
                byte[] BlobData = new byte[0];
                string ContentType = string.Empty;
                string FileName = string.Empty;

                CswTableSelect JctTS = _CswNbtSchemaModTrnsctn.makeCswTableSelect( "getBlobData", "jct_nodes_props" );
                {
                    DataTable JctDT = JctTS.getTable( "jctnodepropid", PropWrapper.JctNodePropId );
                    foreach( DataRow Row in JctDT.Rows ) //should only be one
                    {
                        if( _CswNbtSchemaModTrnsctn.isColumnDefined( "jct_nodes_props", "blobdata" ) )
                        {
                            BlobData = Row["blobdata"] as byte[];
                        }
                        else
                        {
                            BlobData = new byte[0];
                        }
                        FileName = Row["field1"].ToString();
                        ContentType = Row["field2"].ToString();
                    }

                    if( null != BlobData )
                    {
                        string Href;
                        SdBlobData.saveFile( PropId.ToString(), BlobData, ContentType, FileName, out Href );
                    }
                }
            }
        }
コード例 #12
0
        public static void wAddAuthenticationStatus(CswNbtResources CswNbtResources, CswSessionResourcesNbt CswSessionResources, CswWebSvcReturn SvcReturn, CswEnumAuthenticationStatus AuthenticationStatusIn, HttpContext HttpContext)
        {
            // ******************************************
            // IT IS VERY IMPORTANT for this function not to require the use of database resources,
            // since it occurs AFTER the call to _deInitResources(), and thus will leak Oracle connections
            // (see case 26273)
            // ******************************************
            if (null != SvcReturn)
            {
                SvcReturn.Authentication = SvcReturn.Authentication ?? new CswWebSvcSessionAuthenticateData.Authentication.Response();
                SvcReturn.Authentication.AuthenticationStatus = AuthenticationStatusIn;
                if (null != CswNbtResources)
                {
                    if (null != CswNbtResources.CswSessionManager)
                    {
                        SvcReturn.Authentication.TimeOut = CswDateTime.ToClientAsJavascriptString(CswNbtResources.CswSessionManager.TimeoutDate);
                    }
                    if (SvcReturn.Authentication.AuthenticationStatus == CswEnumAuthenticationStatus.ExpiredPassword)
                    {
                        SvcReturn.Authentication.ExpirationReset = new CswWebSvcSessionAuthenticateData.Authentication.Response.Expired();

                        ICswNbtUser CurrentUser = CswNbtResources.CurrentNbtUser;
                        SvcReturn.Authentication.ExpirationReset.UserId = CurrentUser.UserId.ToString();
                        CswNbtNodeKey FakeKey = new CswNbtNodeKey()
                        {
                            NodeId        = CurrentUser.UserId,
                            NodeSpecies   = CswEnumNbtNodeSpecies.Plain,
                            NodeTypeId    = CurrentUser.UserNodeTypeId,
                            ObjectClassId = CurrentUser.UserObjectClassId
                        };
                        SvcReturn.Authentication.ExpirationReset.UserKey = FakeKey.ToString();
                        CswPropIdAttr PasswordPropIdAttr = new CswPropIdAttr(CurrentUser.UserId, CurrentUser.PasswordPropertyId);
                        SvcReturn.Authentication.ExpirationReset.PasswordId = PasswordPropIdAttr.ToString();
                    }

                    SvcReturn.Performance               = SvcReturn.Performance ?? new CswWebSvcReturnBase.Performance();
                    SvcReturn.Performance.ServerInit    = Math.Round(CswNbtResources.ServerInitTime, 3);
                    SvcReturn.Performance.DbDeinit      = Math.Round(CswNbtResources.CswLogger.DbInitTime, 3);
                    SvcReturn.Performance.DbQuery       = Math.Round(CswNbtResources.CswLogger.DbQueryTime, 3);
                    SvcReturn.Performance.DbCommit      = Math.Round(CswNbtResources.CswLogger.DbCommitTime, 3);
                    SvcReturn.Performance.DbDeinit      = Math.Round(CswNbtResources.CswLogger.DbDeInitTime, 3);
                    SvcReturn.Performance.TreeLoaderSql = Math.Round(CswNbtResources.CswLogger.TreeLoaderSQLTime, 3);
                    SvcReturn.Performance.ServerTotal   = Math.Round(CswNbtResources.TotalServerTime, 3);

                    SvcReturn.Logging            = SvcReturn.Logging ?? new CswWebSvcReturnBase.Logging();
                    SvcReturn.Logging.CustomerId = CswNbtResources.AccessId;
                    SvcReturn.Logging.Server     = Environment.MachineName;
                    CswEnumLogLevels LogLevel = CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumConfigurationVariableNames.Logging_Level);

                    if (LogLevel == CswNbtResources.UnknownEnum)
                    {
                        LogLevel = CswEnumLogLevels.Error;
                    }
                    SvcReturn.Logging.LogLevel = LogLevel;

                    // Return any messages acquired along the way
                    if (null != CswNbtResources.Messages && CswNbtResources.Messages.Count > 0)
                    {
                        SvcReturn.Status.Messages = CswNbtResources.Messages;
                    }
                }
            }
            HttpCookie AuthStatusCookie = HttpContext.Request.Cookies["CswAuthStatus"];

            if (null == AuthStatusCookie)
            {
                AuthStatusCookie = new HttpCookie("CswAuthStatus")
                {
                    HttpOnly = true
                };
            }
            if (AuthStatusCookie.Value != AuthenticationStatusIn.ToString())
            {
                AuthStatusCookie.Value = AuthenticationStatusIn;
                HttpContext.Response.Cookies.Add(AuthStatusCookie);
            }
        } // wAddAuthenticationStatus()
コード例 #13
0
        public static void jAddAuthenticationStatus(CswNbtResources CswNbtResources, CswSessionResourcesNbt CswSessionResources, JObject SvcReturn, CswEnumAuthenticationStatus AuthenticationStatusIn, bool IsMobile = false)
        {
            if (SvcReturn != null)
            {
                SvcReturn["AuthenticationStatus"]     = AuthenticationStatusIn.ToString();
                SvcReturn["AuthenticationStatusText"] = CswEnumAuthenticationStatus.EuphamizedText[AuthenticationStatusIn];
                if (false == IsMobile)
                {
                    SvcReturn["server"] = Environment.MachineName;
                    if (null != CswNbtResources)
                    {
                        if (null != CswNbtResources.CswSessionManager)
                        {
                            SvcReturn["timeout"] = CswDateTime.ToClientAsJavascriptString(CswNbtResources.CswSessionManager.TimeoutDate);
                        }
                        if (AuthenticationStatusIn == CswEnumAuthenticationStatus.ExpiredPassword)
                        {
                            ICswNbtUser CurrentUser = CswNbtResources.CurrentNbtUser;
                            SvcReturn.Add(new JProperty("nodeid", CurrentUser.UserId.ToString()));
                            CswNbtNodeKey FakeKey = new CswNbtNodeKey()
                            {
                                NodeId        = CurrentUser.UserId,
                                NodeSpecies   = CswEnumNbtNodeSpecies.Plain,
                                NodeTypeId    = CurrentUser.UserNodeTypeId,
                                ObjectClassId = CurrentUser.UserObjectClassId
                            };
                            SvcReturn.Add(new JProperty("nodekey", FakeKey.ToString()));
                            CswPropIdAttr PasswordPropIdAttr = new CswPropIdAttr(CurrentUser.UserId, CurrentUser.PasswordPropertyId);
                            SvcReturn.Add(new JProperty("passwordpropid", PasswordPropIdAttr.ToString()));
                        }

                        SvcReturn["timer"] = new JObject();

                        SvcReturn["timer"]["serverinit"] = Math.Round(CswNbtResources.ServerInitTime, 3);
                        CswEnumLogLevels LogLevel = CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumConfigurationVariableNames.Logging_Level);
                        if (LogLevel == CswNbtResources.UnknownEnum)
                        {
                            LogLevel = CswEnumLogLevels.Error;
                        }
                        SvcReturn["LogLevel"] = LogLevel.ToString().ToLower();

                        SvcReturn["timer"]["customerid"]    = CswNbtResources.AccessId;
                        SvcReturn["timer"]["dbinit"]        = Math.Round(CswNbtResources.CswLogger.DbInitTime, 3);
                        SvcReturn["timer"]["dbquery"]       = Math.Round(CswNbtResources.CswLogger.DbQueryTime, 3);
                        SvcReturn["timer"]["dbcommit"]      = Math.Round(CswNbtResources.CswLogger.DbCommitTime, 3);
                        SvcReturn["timer"]["dbdeinit"]      = Math.Round(CswNbtResources.CswLogger.DbDeInitTime, 3);
                        SvcReturn["timer"]["treeloadersql"] = Math.Round(CswNbtResources.CswLogger.TreeLoaderSQLTime, 3);
                        SvcReturn["timer"]["servertotal"]   = Math.Round(CswNbtResources.TotalServerTime, 3);

                        // Return any messages acquired along the way
                        if (null != CswNbtResources.Messages && CswNbtResources.Messages.Count > 0)
                        {
                            JArray Messages = new JArray();
                            SvcReturn["messages"] = Messages;
                            foreach (CswWebSvcReturnBase.ErrorMessage Message in CswNbtResources.Messages)
                            {
                                Messages.Add(Message.ToJObject());
                            }
                        }
                    }//if( null != CswNbtResources )
                }
            }
        }
コード例 #14
0
 public JObject doObjectClassButtonClick(CswPropIdAttr PropId, string SelectedText, string TabIds, JObject ReturnProps, string NodeIds, string PropIds)
 {
     return(_NodeSd.doObjectClassButtonClick(PropId, SelectedText, TabIds, ReturnProps, NodeIds, PropIds));
 }
コード例 #15
0
        public static void GetButtonOpts(ICswResources Resources, CswNbtPropertyReturn Return, CswPropIdAttr PropId)
        {
            CswNbtResources            NbtResources = (CswNbtResources)Resources;
            CswNbtMetaDataNodeTypeProp BtnNTP       = NbtResources.MetaData.getNodeTypeProp(PropId.NodeTypePropId);
            CswNbtNode Node = NbtResources.Nodes.GetNode(PropId.NodeId);
            CswCommaDelimitedString MenuOpts = new CswCommaDelimitedString();

            MenuOpts.FromString(Node.Properties[BtnNTP].AsButton.MenuOptions);
            foreach (string Opt in MenuOpts)
            {
                Return.Data.Opts.Add(Opt);
            }
        }
コード例 #16
0
        public static void GetButtonMode(ICswResources Resources, CswNbtPropertyReturn Return, CswPropIdAttr PropId)
        {
            CswNbtResources            NbtResources = (CswNbtResources)Resources;
            CswNbtMetaDataNodeTypeProp BtnNTP       = NbtResources.MetaData.getNodeTypeProp(PropId.NodeTypePropId);
            CswNbtNode           Node    = NbtResources.Nodes.GetNode(PropId.NodeId);
            CswNbtNodePropButton btnProp = Node.Properties[BtnNTP].AsButton;

            if (false == string.IsNullOrEmpty(btnProp.Mode))
            {
                Return.Data.Mode = Node.Properties[BtnNTP].AsButton.Mode;
            }
        }
コード例 #17
0
        }//afterPopulateProps()

        /// <summary>
        ///
        /// </summary>
        public override bool onPropertySetButtonClick(NbtButtonData ButtonData)
        {
            if (null != ButtonData.NodeTypeProp)
            {
                //Remember: Save is an OCP too
                switch (ButtonData.NodeTypeProp.getObjectClassPropName())
                {
                case PropertyName.Fulfill:
                    switch (ButtonData.SelectedText)
                    {
                    case FulfillMenu.Order:
                        ButtonData.Action         = CswEnumNbtButtonAction.editprop;
                        ButtonData.Data["nodeid"] = NodeId.ToString();
                        CswPropIdAttr OrdIdAttr = new CswPropIdAttr(Node, ExternalOrderNumber.NodeTypeProp);
                        ButtonData.Data["propidattr"] = OrdIdAttr.ToString();
                        ButtonData.Data["title"]      = "Enter the External Order Number";
                        break;

                    case FulfillMenu.Receive:
                        CswNbtPropertySetMaterial NodeAsMaterial = _CswNbtResources.Nodes.GetNode(Material.RelatedNodeId);
                        if (null != NodeAsMaterial)
                        {
                            if (null != NodeAsMaterial.Receive.NodeTypeProp)
                            {
                                NbtButtonData ReceiveData = new NbtButtonData(NodeAsMaterial.Receive.NodeTypeProp);
                                NodeAsMaterial.triggerOnButtonClick(ReceiveData);
                                ButtonData.clone(ReceiveData);
                                if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.SDS))
                                {
                                    CswNbtMetaDataObjectClass SDSDocOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.SDSDocumentClass);
                                    Int32 SDSNodeTypeId = SDSDocOC.FirstNodeType.NodeTypeId;
                                    if (Int32.MinValue != SDSNodeTypeId)
                                    {
                                        ButtonData.Data["documenttypeid"] = SDSNodeTypeId;
                                    }
                                }
                            }
                        }
                        break;

                    case FulfillMenu.Dispense:
                        JObject InitialQuantity = null;
                        if (false == Quantity.Empty)
                        {
                            InitialQuantity = new JObject();
                            Quantity.ToJSON(InitialQuantity);
                        }
                        if (null != InitialQuantity)
                        {
                            ButtonData.Data["initialQuantity"] = InitialQuantity;
                        }
                        string Title = "Fulfill Request for " + Quantity.Gestalt + " of " + Material.Gestalt;
                        if (TotalDispensed.Quantity > 0)
                        {
                            Title += " (" + TotalDispensed.Gestalt + ") dispensed.";
                        }
                        ButtonData.Data["title"] = Title;
                        ButtonData.Action        = CswEnumNbtButtonAction.dispense;
                        break;

                    case FulfillMenu.Move:
                        ButtonData.Data["title"]    = "Fulfill Request for " + Count.Value + " x " + Size.Gestalt + " of " + Material.Gestalt;
                        ButtonData.Data["sizeid"]   = Size.RelatedNodeId.ToString();
                        ButtonData.Data["location"] = Location.Gestalt;
                        ButtonData.Action           = CswEnumNbtButtonAction.move;
                        break;
                    }     //switch( ButtonData.SelectedText )

                    _getNextStatus(ButtonData.SelectedText);
                    ButtonData.Data["requestitem"] = ButtonData.Data["requestitem"] ?? new JObject();
                    ButtonData.Data["requestitem"]["requestMode"]      = Type.Value.ToLower();
                    ButtonData.Data["requestitem"]["requestitemid"]    = NodeId.ToString();
                    ButtonData.Data["requestitem"]["inventorygroupid"] = (InventoryGroup.RelatedNodeId ?? new CswPrimaryKey()).ToString();
                    ButtonData.Data["requestitem"]["materialid"]       = (Material.RelatedNodeId ?? new CswPrimaryKey()).ToString();
                    ButtonData.Data["requestitem"]["locationid"]       = (Location.SelectedNodeId ?? new CswPrimaryKey()).ToString();
                    break;     //case PropertyName.Fulfill:
                }
            }
            return(true);
        }
コード例 #18
0
ファイル: CswNbtObjClass.cs プロジェクト: crfroehlich/legacy
        public bool triggerOnButtonClick(NbtButtonData ButtonData)
        {
            bool Ret = false;

            //1: We have Button Data
            if (null != ButtonData)
            {
                //2: Before the Button Click, Save the Node if any tabs and properties have been provided
                Collection <Int32> TabIds = new Collection <int>();
                if (null != ButtonData.TabIds)
                {
                    TabIds = ButtonData.TabIds.ToIntCollection(ExcludeMinVal: true, ExcludeDuplicates: true);
                }

                if (TabIds.Count > 0)
                {
                    foreach (Int32 TabId in TabIds)
                    {
                        _onBeforeButtonClickSaveProps(CswConvert.ToString(TabId), ButtonData);
                    }
                }
                else
                {
                    if (_CswNbtResources.EditMode == CswEnumNbtNodeEditMode.Add)
                    {
                        //Client-side, we are defining a tabid as EditMode + '_tab'. This isn't great, but it's what we've got right now.
                        _onBeforeButtonClickSaveProps(CswEnumNbtNodeEditMode.Add + "_tab", ButtonData);
                    }
                }

                //3: If we're adding, we're always refreshing on add as the default option
                if (_CswNbtResources.EditMode == CswEnumNbtNodeEditMode.Add)
                {
                    ButtonData.Action = CswEnumNbtButtonAction.refreshonadd;
                }

                //4: If this is the Save property, we're done; else execute the click event
                if (null != ButtonData.NodeTypeProp && ButtonData.NodeTypeProp.IsSaveProp)
                {
                    Ret = true;
                }
                else
                {
                    Ret = onButtonClick(ButtonData);
                }

                //5: If we had tabs or props coming in, we should get the current values to send back (they probably changed after the button click)
                if (TabIds.Count > 0)
                {
                    foreach (Int32 TabId in TabIds)
                    {
                        _onAfterButtonClickSaveProps(CswConvert.ToString(TabId), ButtonData);
                    }
                    if (ButtonData.NodeIds.Count > 1)
                    {
                        Collection <CswPrimaryKey> MultiNodePks = new Collection <CswPrimaryKey>();
                        foreach (string CopyToNodeId in ButtonData.NodeIds)
                        {
                            CswPrimaryKey MultiNodePk = CswConvert.ToPrimaryKey(CopyToNodeId);
                            if (null != MultiNodePk && MultiNodePk != NodeId)
                            {
                                MultiNodePks.Add(MultiNodePk);
                            }
                        }
                        if (ButtonData.NodeIds.Count >= CswNbtBatchManager.getBatchThreshold(_CswNbtResources))
                        {
                            if (ButtonData.PropIds.Count > 0)
                            {
                                Collection <Int32> NodeTypePropIds = new Collection <Int32>();
                                foreach (string PropIdAttrStr in ButtonData.PropIds)
                                {
                                    CswPropIdAttr PropIdAttr = new CswPropIdAttr(PropIdAttrStr);
                                    NodeTypePropIds.Add(PropIdAttr.NodeTypePropId);
                                }
                                CswNbtBatchOpMultiEdit op    = new CswNbtBatchOpMultiEdit(_CswNbtResources);
                                CswNbtObjClassBatchOp  Batch = op.makeBatchOp(Node, MultiNodePks, NodeTypePropIds);
                                ButtonData.Action        = CswEnumNbtButtonAction.batchop;
                                ButtonData.Data["batch"] = Batch.Node.NodeLink;
                            }
                            if (ButtonData.MultiClick && null != ButtonData.NodeTypeProp)
                            {
                                CswNbtBatchOpMultiButtonClick op    = new CswNbtBatchOpMultiButtonClick(_CswNbtResources);
                                CswNbtObjClassBatchOp         Batch = op.makeBatchOp(MultiNodePks, ButtonData.NodeTypeProp.PropId);
                                ButtonData.Action        = CswEnumNbtButtonAction.batchop;
                                ButtonData.Data["batch"] = Batch.Node.NodeLink;
                            }
                        }
                        else
                        {
                            if (ButtonData.PropIds.Count > 0)
                            {
                                CswNbtSdTabsAndProps Sd = new CswNbtSdTabsAndProps(_CswNbtResources);
                                Sd.copyPropValues(Node, ButtonData.NodeIds, ButtonData.PropIds);
                            }
                            if (ButtonData.MultiClick)
                            {
                                foreach (CswPrimaryKey MultiNodeId in MultiNodePks)
                                {
                                    CswNbtNode MultiNode = _CswNbtResources.Nodes[MultiNodeId];
                                    if (null != MultiNode)
                                    {
                                        MultiNode.ObjClass.onButtonClick(ButtonData);
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    if (_CswNbtResources.EditMode == CswEnumNbtNodeEditMode.Add)
                    {
                        _onAfterButtonClickSaveProps(CswEnumNbtNodeEditMode.Add + "_tab", ButtonData);
                    }
                }
            }
            return(Ret);
        }