public List <vwRequestNodeStatus> GetRequestsByNodeId(int nodeid, out string errorStr) { errorStr = ""; PardisDBEntities db = new PardisDBEntities(); List <int> lstStatus = new List <int>(); lstStatus.Add(0); lstStatus.Add(1); IEnumerable <vwRequestNodeStatus> query = db.vwRequestNodeStatus.Where(w => w.ToNodeID == nodeid); query = query.Where(q => lstStatus.Contains(q.StatusId)); query = query.Where(q => q.LogicalDelete == false); try { List <vwRequestNodeStatus> lstrequests = query.ToList(); if (lstrequests != null) { lstrequests = lstrequests.GroupBy(q => q.RequestID).Select(grp => grp.First()).ToList(); } return(lstrequests); } catch (Exception ex) { errorStr = "در بدست آوردن درخواستهای نود جاری خطایی رخ داده است !"; return(null); } }
public bool CreateSupplyEquipmentRequest(SupplyEquipments objSupplyEquipment, short RequestTypeId, short WorkFlowID, int FromNodeID, short StatusCode, string FromUserAccount, string ToUserAccount, int GroupID, string Description, string ClientIP, bool isTransfer, out string error, out long requestId) { error = ""; requestId = 0; WorkFlowController workCtrl = new WorkFlowController(); if (workCtrl.CreateRequestActivity(RequestTypeId, WorkFlowID, FromNodeID, StatusCode, FromUserAccount, ToUserAccount, GroupID, Description, ClientIP, isTransfer, out error, out requestId) && requestId > 0) { try { PardisDBEntities db = new PardisDBEntities(); objSupplyEquipment.RequestID = requestId; db.SupplyEquipments.Add(objSupplyEquipment); int result = db.SaveChanges(); return(result > 0 ? true : false); } catch { error = "در ثبت اطلاعات خطایی رخ داده است !"; return(false); } } else { error = string.IsNullOrEmpty(error) ? "در ایجاد درخواست خطایی رخ داده است !" : error; return(false); } }
public Requests GeneratePureRequest(string UserAccount, short RequestType) { Requests objReq = new Requests(); objReq.RegDate = DateTime.Now; objReq.UserAccount = UserAccount; objReq.RequestTypeID = RequestType; try { PardisDBEntities db = new PardisDBEntities(); db.Requests.Add(objReq); int rs = db.SaveChanges(); if (rs > 0) { return(objReq); } else { return(null); } } catch { return(null); } }
public int GetToNodeIdtoTransferRequestByStatus(short workflow, int fromNodeId, short statusCode) { try { PardisDBEntities db = new PardisDBEntities(); switch (statusCode) { case (int)Enums.StatusCodeTypes.Confirm: WFAssignments objA = db.WFAssignments.Where(q => q.WorkFlowID == workflow && q.FromNodeID == fromNodeId && q.DoConfirm == true).FirstOrDefault(); if (objA == null) { return(0); } else { return(objA.ToNodeID); } case (int)Enums.StatusCodeTypes.Reject: WFAssignments objA2 = db.WFAssignments.Where(q => q.WorkFlowID == workflow && q.FromNodeID == fromNodeId && q.DoReject == true).FirstOrDefault(); if (objA2 == null) { return(0); } else { return(objA2.ToNodeID); } case (int)Enums.StatusCodeTypes.Return: WFAssignments objA3 = db.WFAssignments.Where(q => q.WorkFlowID == workflow && q.FromNodeID == fromNodeId && q.DoReturn == true).FirstOrDefault(); if (objA3 == null) { return(0); } else { return(objA3.ToNodeID); } default: return(0); } } catch (Exception ex) { return(0); } }
public bool IsExistsWay(short workFlow, int fromNodeId, int toNodeId, short statusCode) { PardisDBEntities db = new PardisDBEntities(); try { WFAssignments objAssignment = db.WFAssignments.Where(w => w.WorkFlowID == workFlow && w.FromNodeID == fromNodeId && w.ToNodeID == toNodeId).FirstOrDefault(); if (objAssignment != null) { bool flag = true; switch (statusCode) { case 2: if (!objAssignment.DoConfirm) { return(false); } return(true); case 3: if (!objAssignment.DoReject) { return(false); } return(true); case 4: if (!objAssignment.DoReturn) { return(false); } return(true); default: return(false); } } else { return(false); } } catch { return(false); } }
public bool isFirstWorkFlowNode(int nodeId, out string errorStr) { errorStr = ""; try { PardisDBEntities db = new PardisDBEntities(); Workflows objWorkflows = db.Workflows.Where(q => q.StartNodeID == nodeId).FirstOrDefault(); if (objWorkflows != null) { return(true); } return(false); } catch { errorStr = "سیستم قادر به بدست آوردن وضعیت گره جاری نمی باشد !"; return(false); } }
public Menus GetMenuInfoByID(int id, out string error) { error = ""; try { PardisDBEntities db = new PardisDBEntities(); Menus objMenu = db.Menus.Where(w => w.ID == id).SingleOrDefault(); if (objMenu != null) { return(objMenu); } return(null); } catch { error = "در بدست آوردن اطلاعات منو خطایی رخ داده است !"; return(null); } }
public int GetWorkFlowTypeByNodeId(int nodeId, out string errorStr) { try { errorStr = ""; PardisDBEntities db = new PardisDBEntities(); WFAssignments objAssgnment = db.WFAssignments.Where(w => w.FromNodeID == nodeId || w.ToNodeID == nodeId).FirstOrDefault(); if (objAssgnment != null) { return(objAssgnment.WorkFlowID); } return(0); } catch { errorStr = "سیستم قادر به بدست آوردن نوع گردش کار نمی باشد !"; return(0); } }
public Boolean CreateRequestActivity(short RequestTypeId, short WorkFlowID, int FromNodeID, short StatusCode, string FromUserAccount, string ToUserAccount, int GroupID, string Description, string ClientIP, bool isTransfer, out string error, out long requestId) { error = ""; requestId = 0; PardisDBEntities db = new PardisDBEntities(); int StartNode = 0; #region 'تعیین نود شروع' try { Workflows objWorkFlow = db.Workflows.Where(q => q.ID == WorkFlowID).SingleOrDefault(); if (objWorkFlow == null) { error = "گردش کار معتبر نمی باشد !"; return(false); } else if (objWorkFlow.StartNodeID == 0) { error = "نود شروع گردش کار جاری مشخص نشده است !"; return(false); } else if (objWorkFlow.StartNodeID != FromNodeID) { error = "نود شروع گردش کار با نود اقدام کننده یکی نمی باشد !"; return(false); } StartNode = objWorkFlow.StartNodeID; } catch (Exception ex) { error = "در بدست آوردن نود شروع گردش کار جاری خطایی رخ داده است !"; return(false); } #endregion Requests objRequest = GeneratePureRequest(FromUserAccount, RequestTypeId); if (objRequest == null) { error = "در ایجاد درخواست خطایی رخ داده است !"; return(false); } WFActivity objSourceActivity = new WFActivity(); objSourceActivity.WorkFlowID = WorkFlowID; objSourceActivity.RequestID = objRequest.ID; objSourceActivity.PreActivityID = 0; objSourceActivity.FromNodeID = StartNode; objSourceActivity.ToNodeID = FromNodeID; objSourceActivity.StatusId = (short)Enums.StatusCodeTypes.Waiting; objSourceActivity.GroupID = GroupID; objSourceActivity.LogicalDelete = false; objSourceActivity.ToUserAccount = ""; objSourceActivity.UserAccount = FromUserAccount; objSourceActivity.ActivityDate = System.DateTime.Now; objSourceActivity.ActivityDescription = Description; try { db.WFActivity.Add(objSourceActivity); db.SaveChanges(); if (isTransfer) { #region 'Transfer' int toNodeId = GetToNodeIdtoTransferRequestByStatus(WorkFlowID, FromNodeID, StatusCode); if (toNodeId > 0) { try { #region WFActivity objConfirmActivity = new WFActivity(); objConfirmActivity.WorkFlowID = WorkFlowID; objConfirmActivity.RequestID = objRequest.ID; objConfirmActivity.PreActivityID = objSourceActivity.ID; objConfirmActivity.FromNodeID = objSourceActivity.FromNodeID; objConfirmActivity.ToNodeID = objSourceActivity.ToNodeID; objConfirmActivity.StatusId = (short)Enums.StatusCodeTypes.Confirm; objConfirmActivity.GroupID = GroupID; objConfirmActivity.LogicalDelete = false; objConfirmActivity.ToUserAccount = ""; objConfirmActivity.UserAccount = FromUserAccount; objConfirmActivity.ActivityDate = System.DateTime.Now; objConfirmActivity.ActivityDescription = Description; db.WFActivity.Add(objConfirmActivity); db.SaveChanges(); WFActivity objNextActivity = new WFActivity(); objNextActivity.WorkFlowID = WorkFlowID; objNextActivity.RequestID = objRequest.ID; objNextActivity.PreActivityID = objConfirmActivity.ID; objNextActivity.FromNodeID = objSourceActivity.ToNodeID; objNextActivity.ToNodeID = toNodeId; objNextActivity.StatusId = (short)Enums.StatusCodeTypes.Waiting; objNextActivity.GroupID = GroupID; objNextActivity.LogicalDelete = false; objNextActivity.ToUserAccount = ToUserAccount; objNextActivity.UserAccount = FromUserAccount; objNextActivity.ActivityDate = System.DateTime.Now; objNextActivity.ActivityDescription = Description; db.WFActivity.Add(objNextActivity); db.SaveChanges(); #endregion return(true); } catch { error = "در ارسال درخواست خطایی رخ داده است !"; return(false); } } else { error = "از گره جاری مسیری جهت ارسال درخواست وجود ندارد ! "; return(false); } #endregion } requestId = objRequest.ID; return(true); } catch (Exception ex) { error = "در ثبت درخواست خطایی رخ داده است !"; return(false); } }