}//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); } } }
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()
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."); } } } }
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 ); }
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); }
/// <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()
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); }
} // 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()
/// <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; }
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."); } }
} // 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 ); } } } }
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()
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 ) } } }
public JObject doObjectClassButtonClick(CswPropIdAttr PropId, string SelectedText, string TabIds, JObject ReturnProps, string NodeIds, string PropIds) { return(_NodeSd.doObjectClassButtonClick(PropId, SelectedText, TabIds, ReturnProps, NodeIds, PropIds)); }
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); } }
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; } }
}//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); }
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); }