Пример #1
0
        // If your activity returns a value, derive from CodeActivity<TResult>
        // and return the value from the Execute method.
        protected override void Execute(CodeActivityContext context)
        {
            //var approver = context.GetValue(this.Approver);
            var approverType = context.GetValue(this.ApproverType);
            var quoteId      = context.GetValue(this.QuoteId);
            var levelNum     = context.GetValue(this.LevelNum);
            var url          = context.GetValue(this.Url);
            var viewGP       = context.GetValue(this.ViewGp);

            foreach (var approver in context.GetValue(this.Approvers))
            {
                if (!string.IsNullOrEmpty(approver))
                {
                    // Obtain the runtime value of the Text input argument
                    var approvalList = context.GetValue(this.ApprovalList);

                    if (approvalList == null)
                    {
                        approvalList = new List <WorkFlowApproval>();
                    }

                    var existApproval = approvalList
                                        .SingleOrDefault(p => p.TypeID == quoteId && p.Approver == approver &&
                                                         p.LevelNum == (decimal)levelNum);

                    if (existApproval == null)
                    {
                        var approval = new WorkFlowApproval();
                        approval.UID          = System.Guid.NewGuid().ToString();
                        approval.Approver     = approver;
                        approval.ApproverType = approverType;
                        approval.TypeID       = quoteId;
                        approval.LevelNum     = (decimal)levelNum;
                        approval.Url          = url;
                        approval.ViewGP       = viewGP ? 1 : 0;
                        approvalList.Add(approval);

                        this.ApprovalList.Set(context, approvalList);
                    }
                }
            }
        }
Пример #2
0
        public static void ResumeFlow(string quoteId, List <WorkFlowApproval> addtionlApprovals)
        {
            relatedQuoteId = quoteId;
            WorkFlowApproval approval = eQuotationContext.Current.WorkFlowApproval.OrderByDescending(q => q.LevelNum).FirstOrDefault(q => q.TypeID == quoteId && q.WorkFlowID != "");

            if (approval != null)
            {
                string strSqlCmd =
                    String.Format(
                        "select top 1 Id,BlockingBookmarks from [System.Activities.DurableInstancing].[InstancesTable] where id='{0}'",
                        approval.WorkFlowID);
                DataTable dt = dbGetDataTable("WFDB", strSqlCmd);
                if (dt.Rows.Count == 1)
                {
                    string bookmark     = dt.Rows[0]["BlockingBookmarks"].ToString();
                    string bookmarkName = bookmark.Substring(1, bookmark.IndexOf(":") - 1);

                    AutoResetEvent      syncEvent = new AutoResetEvent(false);
                    WorkflowApplication wfApp     = GetWorkFlowApplication(null, syncEvent);
                    Guid instanceId = new Guid(approval.WorkFlowID);
                    wfApp.Load(instanceId);
                    wfApp.ResumeBookmark(bookmarkName, addtionlApprovals);
                    wfApp.Run();
                    syncEvent.WaitOne();
                }
                else
                {
                    SendErrorMail("Bookmark is not found in InstancesTable, resume flow fail!");
                    ApprovalResult = ApprovalResult.ApprovalBookmarkNotFound;
                }
            }
            else
            {
                SendErrorMail("Approval is not found in WorkFlowApproval Table, resume flow fail!");
                ApprovalResult = ApprovalResult.WaitingApproverNotFound;
            }
        }
Пример #3
0
        public static void CreateQuoteApprover(string quoteID, double approveLevel, string workFlowID, string url, string approver, string approverType, bool viewGP, string mailBody, string finalMailBody)
        {
            if (!string.IsNullOrEmpty(approver))
            {
                WorkFlowApproval existApproval = eQuotationContext.Current.WorkFlowApproval.Where(p => p.TypeID == quoteID && p.Approver == approver && p.LevelNum == (decimal)approveLevel && p.WorkFlowID == workFlowID).FirstOrDefault();
                if (existApproval == null)
                {
                    WorkFlowApproval QA = new WorkFlowApproval();
                    QA.UID                = System.Guid.NewGuid().ToString();
                    QA.Type               = "Quote";
                    QA.TypeID             = quoteID;
                    QA.ApproverType       = approverType;
                    QA.LevelNum           = (decimal)approveLevel;
                    QA.Approver           = approver;
                    QA.Status             = (int)QuoteApprovalStatus.Wait_for_review;
                    QA.WorkFlowID         = workFlowID;
                    QA.IsSendSuccessfully = 0;
                    QA.MobileYes          = "MY" + System.Guid.NewGuid().ToString();
                    QA.MobileNo           = "MN" + System.Guid.NewGuid().ToString();
                    QA.CreatedDate        = DateTime.Now;
                    QA.LastUpdatedDate    = DateTime.Now;
                    //QA.Mailbody = getGPmailBodyForInterconApprover(quoteID);


                    if (mailBody == null)
                    {
                        var maxLevelApproved = eQuotationContext.Current.WorkFlowApproval.Where(p => p.TypeID == quoteID && p.WorkFlowID == workFlowID && p.Status == (int)QuoteApprovalStatus.Approved).OrderByDescending(p => p.LevelNum).FirstOrDefault();
                        if (maxLevelApproved != null)
                        {
                            QA.Mailbody = maxLevelApproved.Mailbody;
                        }
                        else
                        {
                            QA.Mailbody = "";
                        }
                    }
                    else
                    {
                        QA.Mailbody = mailBody;
                    }


                    if (finalMailBody == null)
                    {
                        var maxLevelApproved = eQuotationContext.Current.WorkFlowApproval.Where(p => p.TypeID == quoteID && p.WorkFlowID == workFlowID && p.Status == (int)QuoteApprovalStatus.Approved).OrderByDescending(p => p.LevelNum).FirstOrDefault();
                        if (maxLevelApproved != null)
                        {
                            QA.FinalMailBody = maxLevelApproved.FinalMailBody;
                        }
                        else
                        {
                            QA.FinalMailBody = "";
                        }
                    }
                    else
                    {
                        QA.FinalMailBody = finalMailBody;
                    }


                    QA.Url    = url;
                    QA.ViewGP = viewGP ? 1 : 0;
                    QA.Add();
                }
            }
        }