/// <summary> /// WCF method to get current User's cart data /// </summary> public static void getCart(ICswResources CswResources, CswNbtRequestDataModel.RequestCart Ret, object Request) { CswNbtResources NbtResources = _validate(CswResources); CswNbtActRequesting ActRequesting = new CswNbtActRequesting(NbtResources); ActRequesting.getCart(Ret.Data); }
protected override bool onButtonClick(NbtButtonData ButtonData) { if (null != ButtonData.NodeTypeProp) { string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName(); switch (OCPPropName) { case PropertyName.Request: if (_CswNbtResources.Permit.can(CswEnumNbtActionName.Submit_Request)) { ButtonData.Action = CswEnumNbtButtonAction.request; CswNbtActRequesting RequestAct = new CswNbtActRequesting(_CswNbtResources); CswNbtObjClassRequestItem RequestItem = RequestAct.makeEnterprisePartRequestItem(this, ButtonData); ButtonData.Data["titleText"] = "Add to Cart: " + RequestItem.Type.Value; ButtonData.Data["requestItemProps"] = RequestAct.getRequestItemAddProps(RequestItem.Node); ButtonData.Data["requestItemNodeTypeId"] = RequestItem.NodeTypeId; } else { throw new CswDniException(CswEnumErrorType.Warning, "You do not have permission to the Submit Request action.", "You do not have permission to the Submit Request action."); } break; } } return(true); }
public static void submitRequest(ICswResources CswResources, CswNbtRequestDataModel.CswRequestReturn Ret, CswNbtNode.Node Request) { CswNbtResources NbtResources = _validate(CswResources); CswNbtActRequesting ActRequesting = new CswNbtActRequesting(NbtResources); Ret.Data.Succeeded = ActRequesting.submitRequest(Request.NodeId, Request.NodeName); }
/// <summary> /// WCF method to get current User's tab counts /// </summary> public static void getCartCounts(ICswResources CswResources, CswNbtRequestDataModel.RequestCart Ret, string Request) { CswNbtResources NbtResources = _validate(CswResources); CswNbtActRequesting ActRequesting = new CswNbtActRequesting(NbtResources); ActRequesting.getCart(Ret.Data, CalculateCounts: true); }
public void resetCartCounts(string CartId) { //delegate has to be static because you can't create an instance yet: you don't have resources until the delegate is actually called CswNbtRequestDataModel.CswRequestReturn Ret = new CswNbtRequestDataModel.CswRequestReturn(); var InitDriverType = new CswWebSvcDriver <CswNbtRequestDataModel.CswRequestReturn, string>( CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null), ReturnObj: Ret, WebSvcMethodPtr: (Resources, Obj, ParamObj) => CswNbtActRequesting.resetCartCounts(Resources), ParamObj: null ); InitDriverType.run(); }
/// <summary> /// WCF method to get the NodeTypeId of the Request Material Create /// </summary> public static void getRequestItemNodeType(ICswResources CswResources, CswNbtRequestDataModel.CswNbtRequestMaterialCreateReturn Ret, object Request) { CswNbtResources NbtResources = _validate(CswResources); CswNbtActRequesting.checkForCentralInventoryGroups(NbtResources); CswNbtMetaDataObjectClass RequestItemOC = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass); CswNbtMetaDataNodeType FirstNodeType = RequestItemOC.getLatestVersionNodeTypes().FirstOrDefault(); if (null != FirstNodeType) { Ret.Data.NodeTypeId = FirstNodeType.NodeTypeId; } }
//Determine the number of recurring requests that need to be processed and return that value public Int32 getLoadCount(ICswResources CswResources) { Int32 LoadCount = 0; CswNbtResources NbtResources = (CswNbtResources)CswResources; if (NbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Containers)) { CswNbtActRequesting ActRequesting = new CswNbtActRequesting(NbtResources); CswNbtView AllRecurringRequests = ActRequesting.getDueRecurringRequestItemsView(); ICswNbtTree Tree = NbtResources.Trees.getTreeFromView(AllRecurringRequests, RequireViewPermissions: false, IncludeSystemNodes: false, IncludeHiddenNodes: false); LoadCount = Tree.getChildNodeCount(); } return(LoadCount); }
public override void update() { CswNbtMetaDataObjectClass UserOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.UserClass ); CswNbtMetaDataObjectClassProp CachedDataOcp = UserOc.getObjectClassProp( CswNbtObjClassUser.PropertyName.CachedData ); foreach( CswNbtMetaDataNodeTypeProp Prop in CachedDataOcp.getNodeTypeProps() ) { Prop.removeFromAllLayouts(); } CswNbtActRequesting ActRequesting = new CswNbtActRequesting( _CswNbtSchemaModTrnsctn.MetaData._CswNbtMetaDataResources.CswNbtResources ); foreach( CswNbtObjClassUser User in UserOc.getNodes( forceReInit: true, includeSystemNodes: false, IncludeDefaultFilters: false, IncludeHiddenNodes: true ) ) { ActRequesting.resetCartCounts( User: User ); } } // update()
/// <summary> /// WCF method to copy request items to recurring /// </summary> public static void copyRecurring(ICswResources CswResources, CswNbtRequestDataModel.CswRequestReturn Ret, CswNbtRequestDataModel.CswRequestReturn.Ret Request) { CswNbtResources NbtResources = _validate(CswResources); bool Succeeded = false; if (Request.RequestItems.Any()) { CswNbtWebServiceRequesting ws = new CswNbtWebServiceRequesting(NbtResources); CswNbtActRequesting act = new CswNbtActRequesting(NbtResources); //So here we're getting the "Recurring" Request and copying the request items from the current request into there CswNbtObjClassRequest RequestNode = act.getRecurringRequestNode(); applyCopyLogic SetRequest = (Item) => { Item.Request.RelatedNodeId = RequestNode.NodeId; Item.IsRecurring.Checked = CswEnumTristate.True; }; Succeeded = ws.copyRequestItems(Request, SetRequest); } Ret.Data.Succeeded = Succeeded; }
private void _setDefaultValues() { if (false == CswTools.IsPrimaryKey(Request.RelatedNodeId)) { CswNbtActRequesting RequestAct = new CswNbtActRequesting(_CswNbtResources); CswNbtObjClassRequest CurrentRequest = RequestAct.getCurrentRequestNode(); if (null != CurrentRequest) { // In sched rule(s), no Current Cart will exist Request.RelatedNodeId = CurrentRequest.NodeId; } Request.setReadOnly(value: true, SaveToDb: true); Request.setHidden(value: true, SaveToDb: false); } if (false == CswTools.IsPrimaryKey(Requestor.RelatedNodeId)) { CswNbtObjClassRequest ThisRequest = _CswNbtResources.Nodes[Request.RelatedNodeId]; if (null != ThisRequest) { Requestor.RelatedNodeId = ThisRequest.Requestor.RelatedNodeId; RequestedFor.RelatedNodeId = ThisRequest.Requestor.RelatedNodeId; } } }
public JObject getHeaderMenu(CswSessionResourcesNbt CswSessionResources) { JObject Ret = new JObject(); Ret["Home"] = new JObject(new JProperty("action", "Home")); if (_CswNbtResources.CurrentNbtUser.IsAdministrator() || CswSessionResources.CswSessionManager.isImpersonating()) { Ret["Admin"] = new JObject(); Ret["Admin"]["haschildren"] = true; if (_CswNbtResources.CurrentNbtUser.IsAdministrator()) { Ret["Admin"]["Current User List"] = new JObject(); Ret["Admin"]["Current User List"]["action"] = "Sessions"; Ret["Admin"]["Edit Config Vars"] = new JObject(); Ret["Admin"]["Edit Config Vars"]["action"] = "Config Vars"; //Ret["Admin"]["Statistics"] = new JObject(); //Ret["Admin"]["Statistics"]["href"] = "Statistics.aspx"; Ret["Admin"]["Quotas"] = new JObject(); Ret["Admin"]["Quotas"]["action"] = "Quotas"; Ret["Admin"]["Login Data"] = new JObject(); Ret["Admin"]["Login Data"]["action"] = "Login Data"; //Removed condition for Case 29185 Ret["Admin"]["Impersonate"] = new JObject(); Ret["Admin"]["Impersonate"]["action"] = "Impersonate"; if (_CswNbtResources.CurrentNbtUser.Username == CswNbtObjClassUser.ChemSWAdminUsername) { //Ret["Admin"]["View Log"] = new JObject(); //Ret["Admin"]["View Log"]["href"] = "DisplayLog.aspx"; Ret["Admin"]["Modules"] = new JObject(); Ret["Admin"]["Modules"]["action"] = "Modules"; } //if( _CswNbtResources.CurrentNbtUser.IsAdministrator() ) //{ // Int32 DemoCount = _getSchemaDemoDataCount(); // if( DemoCount > 0 ) // { // Ret["Admin"]["Delete Demo Data (" + DemoCount + ")"] = new JObject(); // Ret["Admin"]["Delete Demo Data (" + DemoCount + ")"]["action"] = "DeleteDemoNodes"; // } //} } // if( _CswNbtResources.CurrentNbtUser.IsAdministrator() ) if (CswSessionResources.CswSessionManager.isImpersonating()) { Ret["Admin"]["End Impersonation"] = new JObject(); Ret["Admin"]["End Impersonation"]["action"] = "EndImpersonation"; } if ((CswSessionResources.CswSessionManager.didChangeSchema())) { if (_CswNbtResources.CurrentNbtUser.Username == CswNbtObjClassUser.ChemSWAdminUsername || _isChemSWAdminImpersonating(CswSessionResources)) { Ret["Admin"]["Return to NbtManager"] = new JObject(); Ret["Admin"]["Return to NbtManager"]["action"] = "NbtManager"; } } } // if( _CswNbtResources.CurrentNbtUser.IsAdministrator() || CswSessionResources.CswSessionManager.isImpersonating() ) Ret["Preferences"] = new JObject( new JProperty("haschildren", true), new JProperty("Profile", new JObject( new JProperty("action", "Profile"), new JProperty("userid", _CswNbtResources.CurrentNbtUser.UserId.ToString()) )), new JProperty("Subscriptions", new JObject( new JProperty("action", "Subscriptions") )) ); if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Requesting) && _CswNbtResources.Permit.can(CswEnumNbtActionName.Submit_Request)) { CswNbtActRequesting RequestAction = new CswNbtActRequesting(_CswNbtResources); Int32 CartCount = RequestAction.getCartContentCount(); Ret["Cart (" + CartCount + ")"] = new JObject(); Ret["Cart (" + CartCount + ")"]["action"] = "Submit_Request"; } Ret["Help"] = new JObject(); Ret["Help"]["haschildren"] = true; Ret["Help"]["Help"] = new JObject(); Ret["Help"]["Help"]["popup"] = "help/index.htm"; Ret["Help"]["Clear Cache"] = new JObject(); Ret["Help"]["Clear Cache"]["action"] = "Clear Cache"; CswNbtMetaDataObjectClass feedbackOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.FeedbackClass); IEnumerable <CswNbtMetaDataNodeType> feedbackNodeTypes = feedbackOC.getNodeTypes(); if (feedbackNodeTypes.Any()) { if (_CswNbtResources.Permit.canNodeType(Security.CswEnumNbtNodeTypePermission.Create, feedbackNodeTypes.First())) { Ret["Help"]["Give Feedback"] = new JObject(); //Ret["Help"]["Give Feedback"]["action"] = "AddNode"; Ret["Help"]["Give Feedback"]["action"] = "AddFeedback"; CswNbtMetaDataNodeType feedbackNodeType = feedbackNodeTypes.First(); Ret["Help"]["Give Feedback"]["nodetypeid"] = feedbackNodeType.NodeTypeId; } } Ret["Help"]["Printing Labels"] = new JObject(); Ret["Help"]["Printing Labels"]["popup"] = "PrintingLabels.html"; Ret["Help"]["Reading Balances"] = new JObject(); Ret["Help"]["Reading Balances"]["popup"] = "ReadingBalances.html"; Ret["Help"]["About"] = new JObject(); Ret["Help"]["About"]["action"] = "About"; Ret["Logout"] = new JObject(new JProperty("action", "Logout")); return(Ret); }
protected override bool onButtonClick( NbtButtonData ButtonData ) { if( null != ButtonData.NodeTypeProp ) { bool HasPermission = false; string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName(); switch( OCPPropName ) { case PropertyName.Request: if( _CswNbtResources.Permit.can( CswEnumNbtActionName.Submit_Request ) ) { // Case CIS-52280 if( Obsolete.Checked == CswEnumTristate.True ) { throw new CswDniException( CswEnumErrorType.Warning, "Can't request Material " + TradeName + " because it is obsolete.", "Material is obsolete" ); } HasPermission = true; CswNbtActRequesting RequestAct = new CswNbtActRequesting( _CswNbtResources ); CswNbtObjClassRequestItem RequestItem = RequestAct.makeMaterialRequestItem( this, ButtonData ); ButtonData.Data["requestaction"] = ButtonData.SelectedText; //ButtonData.Data["requestaction"] = OCPPropName; //Case 31298: Default Option Text "Request" != "Request By Bulk" if( ButtonData.SelectedText == "Request" ) { ButtonData.SelectedText = CswEnumRequestOption.Bulk; } ButtonData.Data["titleText"] = ButtonData.SelectedText + " for " + TradeName.Text; ButtonData.Data["requestItemProps"] = RequestAct.getRequestItemAddProps( RequestItem.Node ); ButtonData.Data["requestItemNodeTypeId"] = RequestItem.NodeTypeId; ButtonData.Data["relatednodeid"] = NodeId.ToString(); ButtonData.Action = CswEnumNbtButtonAction.request; } break; case PropertyName.Receive: if( _CswNbtResources.Permit.can( CswEnumNbtActionName.Receiving ) ) { // Case CIS-52280 if( Obsolete.Checked == CswEnumTristate.True ) { throw new CswDniException( CswEnumErrorType.Warning, "Can't receive Material " + TradeName + " because it is obsolete.", "Material is obsolete" ); } HasPermission = true; CswNbtActReceiving Act = new CswNbtActReceiving( _CswNbtResources, NodeId ); _CswNbtResources.setAuditActionContext( CswEnumNbtActionName.Receiving ); Action<CswNbtNode> After = delegate( CswNbtNode NewNode ) { CswNbtObjClassContainer newContainer = NewNode; //Case 29436 if( newContainer.isLocationInAccessibleInventoryGroup( _CswNbtResources.CurrentNbtUser.DefaultLocationId ) ) { newContainer.Location.SelectedNodeId = _CswNbtResources.CurrentNbtUser.DefaultLocationId; } newContainer.Owner.RelatedNodeId = _CswNbtResources.CurrentNbtUser.UserId; DateTime ExpirationDate = getDefaultExpirationDate( DateTime.Now ); if( DateTime.MinValue != ExpirationDate ) { newContainer.ExpirationDate.DateTimeValue = ExpirationDate; } //Container.postChanges( false ); }; CswNbtObjClassContainer Container = Act.makeContainer( After ); ButtonData.Data["state"] = new JObject(); ButtonData.Data["state"]["materialId"] = NodeId.ToString(); ButtonData.Data["state"]["materialNodeTypeId"] = NodeTypeId; ButtonData.Data["state"]["tradeName"] = TradeName.Text; ButtonData.Data["state"]["nodeName"] = NodeName; Int32 ContainerLimit = CswConvert.ToInt32( _CswNbtResources.ConfigVbls.getConfigVariableValue( CswEnumNbtConfigurationVariables.container_receipt_limit.ToString() ) ); ButtonData.Data["state"]["containerlimit"] = ContainerLimit; ButtonData.Data["state"]["containerNodeId"] = Container.NodeId.ToString(); ButtonData.Data["state"]["containerNodeTypeId"] = Container.NodeTypeId; bool customBarcodes = CswConvert.ToBoolean( _CswNbtResources.ConfigVbls.getConfigVariableValue( CswEnumNbtConfigurationVariables.custom_barcodes.ToString() ) ); ButtonData.Data["state"]["customBarcodes"] = customBarcodes; ButtonData.Data["state"]["nodetypename"] = this.NodeType.NodeTypeName; ButtonData.Data["state"]["containerAddLayout"] = Act.getContainerAddProps( Container ); onReceiveButtonClick( ButtonData ); _setCofAData( ButtonData ); ButtonData.Action = CswEnumNbtButtonAction.receive; } break; case CswNbtObjClass.PropertyName.Save: HasPermission = true; break; } HasPermission = HasPermission || onPropertySetButtonClick( ButtonData ); if( false == HasPermission ) { throw new CswDniException( CswEnumErrorType.Warning, "You do not have permission to the " + OCPPropName + " action.", "You do not have permission to the " + OCPPropName + " action." ); } } return true; }
}//initScheduleLogicDetail() public void threadCallBack(ICswResources CswResources) { _LogicRunStatus = CswEnumScheduleLogicRunStatus.Running; CswNbtResources _CswNbtResources = (CswNbtResources)CswResources; _CswNbtResources.AuditContext = "Scheduler Task: " + RuleName; if (CswEnumScheduleLogicRunStatus.Stopping != _LogicRunStatus) { try { if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Containers)) { Int32 RequestsLimit = CswConvert.ToInt32(_CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumNbtConfigurationVariables.generatorlimit.ToString())); if (RequestsLimit <= 0) { RequestsLimit = 1; } CswNbtActRequesting ActRequesting = new CswNbtActRequesting(_CswNbtResources); CswNbtView AllRecurringRequests = ActRequesting.getDueRecurringRequestItemsView(); ICswNbtTree Tree = _CswNbtResources.Trees.getTreeFromView(AllRecurringRequests, RequireViewPermissions: false, IncludeSystemNodes: false, IncludeHiddenNodes: false); Int32 TotalRequestsProcessed = 0; string RequestDescriptions = string.Empty; Int32 TotatRequests = Tree.getChildNodeCount(); for (Int32 ChildN = 0; (ChildN < TotatRequests && TotalRequestsProcessed < RequestsLimit) && (CswEnumScheduleLogicRunStatus.Stopping != _LogicRunStatus); ChildN++) { string Description = ""; try { Tree.goToNthChild(ChildN); CswNbtObjClassRequestItem CurrentRequestItem = Tree.getNodeForCurrentPosition(); if (_doesRequestItemCopyNow(CurrentRequestItem)) { Description = CurrentRequestItem.Description.StaticText; CswNbtObjClassRequest RecurringRequest = _CswNbtResources.Nodes[CurrentRequestItem.Request.RelatedNodeId]; if (null != RecurringRequest) { CswNbtObjClassUser Requestor = _CswNbtResources.Nodes[RecurringRequest.Requestor.RelatedNodeId]; if (null != Requestor) { CswNbtObjClassRequestItem CopiedRequestItem = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(CurrentRequestItem.NodeTypeId, delegate(CswNbtNode NewNode) { // We'd get all of this for free if we used copyNode, // but then we'd have to manually do as much work in the other direction: // un-hiding properties, etc. CswNbtActRequesting ThisUserAct = new CswNbtActRequesting(_CswNbtResources, Requestor); CswNbtObjClassRequest UsersCartNode = ThisUserAct.getCurrentRequestNode(); if (null != UsersCartNode) { CswNbtObjClassRequestItem NewRequestItem = NewNode; // Most importantly, put the new request item in the current cart NewRequestItem.Request.RelatedNodeId = UsersCartNode.NodeId; NewRequestItem.Requestor.RelatedNodeId = CurrentRequestItem.Requestor.RelatedNodeId; NewRequestItem.Material.RelatedNodeId = CurrentRequestItem.Material.RelatedNodeId; NewRequestItem.Material.CachedNodeName = CurrentRequestItem.Material.CachedNodeName; NewRequestItem.InventoryGroup.RelatedNodeId = CurrentRequestItem.InventoryGroup.RelatedNodeId; NewRequestItem.Location.SelectedNodeId = CurrentRequestItem.Location.SelectedNodeId; NewRequestItem.Location.CachedPath = CurrentRequestItem.Location.CachedPath; NewRequestItem.Comments.CommentsJson = CurrentRequestItem.Comments.CommentsJson; NewRequestItem.Type.Value = CurrentRequestItem.Type.Value; if (CurrentRequestItem.Type.Value == CswNbtObjClassRequestItem.Types.MaterialSize) { NewRequestItem.Size.RelatedNodeId = CurrentRequestItem.Size.RelatedNodeId; NewRequestItem.Size.CachedNodeName = CurrentRequestItem.Size.CachedNodeName; NewRequestItem.SizeCount.Value = CurrentRequestItem.SizeCount.Value; } else { NewRequestItem.Quantity.Quantity = CurrentRequestItem.Quantity.Quantity; NewRequestItem.Quantity.CachedUnitName = CurrentRequestItem.Quantity.CachedUnitName; NewRequestItem.Quantity.UnitId = CurrentRequestItem.Quantity.UnitId; } NewRequestItem.Status.Value = CswNbtObjClassRequestItem.Statuses.Pending; NewRequestItem.postChanges(ForceUpdate: false); CurrentRequestItem.NextReorderDate.DateTimeValue = CswNbtPropertySetSchedulerImpl.getNextDueDate(CurrentRequestItem.Node, CurrentRequestItem.NextReorderDate, CurrentRequestItem.RecurringFrequency, ForceUpdate: true); CurrentRequestItem.postChanges(ForceUpdate: false); } }); } RequestDescriptions += CurrentRequestItem.Description + "; "; } } Tree.goToParentNode(); } // if ~( not null, is recurring and is due) catch (Exception Exception) { string Message = "Unable to create recurring request " + Description + ", due to the following exception: " + Exception.Message; RequestDescriptions += Message; _CswNbtResources.logError(new CswDniException(Message)); } //catch finally { TotalRequestsProcessed += 1; } } //iterate requests string StatusMessage = "No Recurring Requests found to process"; if (TotalRequestsProcessed > 0) { StatusMessage = TotalRequestsProcessed.ToString() + " requests processed: " + RequestDescriptions; } _CswScheduleLogicDetail.StatusMessage = StatusMessage; _LogicRunStatus = CswEnumScheduleLogicRunStatus.Succeeded; //last line } }//try catch (Exception Exception) { _CswScheduleLogicDetail.StatusMessage = "CswScheduleLogicNbtGenRequests::threadCallBack() exception: " + Exception.Message + "; " + Exception.StackTrace; _CswNbtResources.logError(new CswDniException(_CswScheduleLogicDetail.StatusMessage)); _LogicRunStatus = CswEnumScheduleLogicRunStatus.Failed; } //catch } //if we're not shutting down } //threadCallBack()