示例#1
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            var btn = sender as StartWorkflowButton;
            var dpTaskUsers = new NameCollection();
            var isSave = string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase);
            if (isSave == false)
            {
                if (!this.DataForm1.Validate()){
                    DisplayMessage(this.DataForm1.msg.IsNotNullOrWhitespace() ?
                                   this.DataForm1.msg : "Please fill in all the necessary fields.");
                    e.Cancel = true;
                    return;
                }

                //获取审批人
                dpTaskUsers = GetNextApproveTaskUsers();
                if (dpTaskUsers == null){
                    DisplayMessage("The manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
            }

            //更新工作流变量
            UpdateWorkflowVariable(dpTaskUsers, isSave);
            //更新list相关变量
            UpdateWorkFlowDataFields(dpTaskUsers, isSave);

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
 /// <summary>
 /// Constructs a parse tree for an event declaration.
 /// </summary>
 /// <param name="attributes">The attributes for the parse tree.</param>
 /// <param name="modifiers">The modifiers for the parse tree.</param>
 /// <param name="keywordLocation">The location of the keyword.</param>
 /// <param name="name">The name of the declaration.</param>
 /// <param name="parameters">The parameters of the declaration.</param>
 /// <param name="asLocation">The location of the 'As', if any.</param>
 /// <param name="resultTypeAttributes">The attributes on the result type, if any.</param>
 /// <param name="resultType">The result type, if any.</param>
 /// <param name="implementsList">The list of implemented members.</param>
 /// <param name="span">The location of the parse tree.</param>
 /// <param name="comments">The comments for the parse tree.</param>
 public EventDeclaration(AttributeBlockCollection attributes, ModifierCollection modifiers, Location keywordLocation, SimpleName name, ParameterCollection parameters, Location asLocation, AttributeBlockCollection resultTypeAttributes, TypeName resultType, NameCollection implementsList, Span span,
                         IList <Comment> comments) : base(TreeType.EventDeclaration, attributes, modifiers, keywordLocation, name, null, parameters, asLocation, resultTypeAttributes, resultType,
                                                          span, comments)
 {
     SetParent(implementsList);
     _ImplementsList = implementsList;
 }
示例#3
0
            /// <summary>
            /// Creates the week days short.
            /// </summary>
            /// <returns></returns>
            public static NameCollection CreateWeekDaysShort()
            {
                var result = new NameCollection();

                result.names.AddRange(new[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" });
                return(result);
            }
示例#4
0
        /// <summary>
        /// 获取下一步审批人
        /// </summary>
        /// <returns></returns>
        private NameCollection GetNextApproveTaskUsers()
        {
            var nextApproveTaskUsers = new NameCollection();
            var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department);
            if (manager.IsNullOrWhitespace()){
                return null;
            }
            else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase))
            {
                var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee);
                if (managerEmp == null)
                {
                    return null;
                }
                manager = managerEmp.UserAccount;
            }

            nextApproveTaskUsers.Add(manager);
            //获取代理人员
            var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.InternalOrderCreation);
            if (deleman != null)
            {
                nextApproveTaskUsers.Add(deleman);
            }

            return nextApproveTaskUsers;
        }
示例#5
0
        private void Actions_ActionExecuting(object sender, CancelEventArgs e)
        {
            if (!this.DataForm1.Validate())
            {
                DisplayMessage(this.DataForm1.msg.IsNotNullOrWhitespace() ? this.DataForm1.msg : "Please fill in all the necessary fields.");
                e.Cancel = true;
                return;
            }

            //审批人
            var dpTaskUsers = new NameCollection();
            dpTaskUsers = GetNextApproveTaskUsers();
            if (dpTaskUsers == null)
            {
                DisplayMessage("The manager is not set in the system.");
                e.Cancel = true;
                return;
            }

            //更新工作流变量
            UpdateWorkflowVariable(dpTaskUsers, false);
            //更新list相关变量
            UpdateWorkFlowDataFields(dpTaskUsers, false);

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
示例#6
0
 /// <summary>
 /// Creates a new parse tree for a Sub declaration.
 /// </summary>
 /// <param name="attributes">The attributes for the parse tree.</param>
 /// <param name="modifiers">The modifiers for the parse tree.</param>
 /// <param name="keywordLocation">The location of the keyword.</param>
 /// <param name="name">The name of the declaration.</param>
 /// <param name="typeParameters">The type parameters on the declaration, if any.</param>
 /// <param name="parameters">The parameters of the declaration.</param>
 /// <param name="implementsList">The list of implemented members.</param>
 /// <param name="handlesList">The list of handled events.</param>
 /// <param name="statements">The statements in the declaration.</param>
 /// <param name="endDeclaration">The end block declaration, if any.</param>
 /// <param name="span">The location of the parse tree.</param>
 /// <param name="comments">The comments for the parse tree.</param>
 public SubDeclaration(
     AttributeBlockCollection attributes,
     ModifierCollection modifiers,
     Location keywordLocation,
     SimpleName name,
     TypeParameterCollection typeParameters,
     ParameterCollection parameters,
     NameCollection implementsList,
     NameCollection handlesList,
     StatementCollection statements,
     EndBlockDeclaration endDeclaration,
     Span span,
     IList <Comment> comments) :
     base(
         TreeType.SubDeclaration,
         attributes,
         modifiers,
         keywordLocation,
         name,
         typeParameters,
         parameters,
         Location.Empty,
         null,
         null,
         implementsList,
         handlesList,
         statements,
         endDeclaration,
         span,
         comments)
 {
 }
示例#7
0
        public void Initialize(NameCollection names, EntityBase parentEntity, string parentKey)
        {
            this.names        = names;
            this.parentEntity = parentEntity;
            this.parentKey    = parentKey;

            grid.Columns[1].Visible = true;
        }
示例#8
0
 //得到组里的用户
 public static NameCollection GetTaskUsers(string group)
 {
     NameCollection taskUsers = new NameCollection();
     List<string> groupUsers = null;
     groupUsers = WorkFlowUtil.UserListInGroup(group);
     taskUsers.AddRange(groupUsers.ToArray());
     return taskUsers;
 }
示例#9
0
        private void Delete(object _)
        {
            var item = SelectedName;

            if (item != null)
            {
                NameCollection.Remove(item);
            }
        }
示例#10
0
 public static Links AddQuery <T>(
     this Links links
     , string title
     , NameCollection rel     = null
     , NameCollection classes = null
     )
 {
     return(AddQuery <T>(links, null, title, rel, classes));
 }
示例#11
0
 public static List<string> ConvertToList(NameCollection coll)
 {
     List<string> list = new List<string>();
     foreach (var temp in coll)
     {
         list.Add(temp);
     }
     return list;
 }
示例#12
0
        /// <summary>
        /// 检查下一步审批
        /// </summary>
        /// <param name="cfoTaskUsers">CFO</param>
        /// <param name="faTaskUsers">财务</param>
        /// <param name="e">事件对象</param>
        /// <param name="manager">管理者</param>
        /// <param name="status">状态</param>
        /// <param name="orderNum"></param>
        /// <param name="isReject">是否拒绝</param>
        /// <param name="isToCfo">是否转向CFO审批</param>
        private void CheckNextApprove(int paymentTerm, ref NameCollection cfoTaskUsers, ref NameCollection faTaskUsers, ActionEventArgs e, string manager, ref string status, ref string vendorID, ref bool isReject, ref bool isToCfo)
        {
            if (WorkflowContext.Current.Step == "DepartmentManagerTask")
            {
                faTaskUsers = GetTaskUsers("wf_Finance_MDM");
                cfoTaskUsers = GetTaskUsers("wf_CFO");

                if (e.Action == "Approve")
                {
                    isToCfo = (paymentTerm >= 30) ? false : true;
                    status = CAWorkflowStatus.IODepartmentManagerApprove;
                }
                else if (e.Action == "Reject")
                {
                    isReject = true;
                    status = CAWorkflowStatus.IODepartmentManagerReject;
                }
                AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceApproverLoginName);
            }
            else if (WorkflowContext.Current.Step == "CfoTask")
            {
                if (e.Action == "Approve")
                {
                    faTaskUsers = GetTaskUsers("wf_Finance_MDM");
                    status = CAWorkflowStatus.IOCFOApprove;
                }
                else if (e.Action == "Reject")
                {
                    isReject = true;
                    status = CAWorkflowStatus.IOCFOReject;
                }
                AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceApproverLoginName);
            }
            else if (WorkflowContext.Current.Step == "MdmTask")
            {
                //不论财务是拒绝还是确认,工作流都结束
                if (e.Action == "Confirm")
                {
                    status = CAWorkflowStatus.Completed;
                }
                else if (e.Action == "Reject")
                {
                    vendorID = string.Empty;
                    status = CAWorkflowStatus.IOFinanceReject;
                }
                AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceApproverLoginName);
            }

            bool isCfo = CurrentManagerIsCfo(cfoTaskUsers, manager);
            //如果部门领导是CFO,当点击 “To CFO”,直接跳转到财务
            if (isCfo && isToCfo)
            {
                isToCfo = false;
                status = CAWorkflowStatus.IOCFOApprove;
                AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceApproverLoginName);
            }
        }
示例#13
0
        void Actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e)
        {
            if (e.Action.Equals("Approve"))//审批通过
            {
                WorkflowDataFields fields = WorkflowContext.Current.DataFields;
                decimal TotalCost = GetTotalCost();
                if (TotalCost == 0)
                {
                    DisplayMessage("Rate or Cost error!");
                    e.Cancel = true;
                    return;
                }

                string levelType = "Contract Approval Limits";
                string sCurrentManager = CurrentEmployee.UserAccount;
                var quota = WorkFlowUtil.GetQuota(CurrentEmployee.UserAccount, levelType);///得到当前审批人的审批金额

                WorkflowContext context = WorkflowContext.Current;
                if (TotalCost > quota)///当前审批者不够审批此金额。
                {
                    context.UpdateWorkflowVariable("IsApproveAgin", true);//

                    NameCollection manager = new NameCollection();
                    Employee managerEmp = WorkFlowUtil.GetNextApprover(sCurrentManager);
                    if (managerEmp == null && !WorkflowPerson.IsCEO(sCurrentManager))
                    {
                        DisplayMessage("The manager is not set in the system.");
                        e.Cancel = true;
                        return;
                    }
                    manager.Add(managerEmp.UserAccount);

                    string sDelePerson = WorkFlowUtil.GetDeleman(managerEmp.UserAccount, WorkFlowUtil.GetModuleIdByListName("PurchaseRequestGeneral")); //查找代理人
                    if (sDelePerson != null)
                    {
                        manager.Add(sDelePerson);
                    }
                    context.UpdateWorkflowVariable("ApproveUsers", manager);
                }
                else//进入到财务审批
                {
                    context.UpdateWorkflowVariable("IsApproveAgin", false);//
                }

                fields["Approvers"] = ReturnAllApprovers(sCurrentManager);
                fields["ApproversSPUser"] = ReturnAllApproversSP("ApproversSPUser", sCurrentManager);
            }
            else
            {
                WorkflowContext context = WorkflowContext.Current;
                WorkflowDataFields fields = WorkflowContext.Current.DataFields;
                string sWorkflowNo = fields["Title"].ToString();
                context.UpdateWorkflowVariable("EditTitle", "Please resubmit Purchase Ruequest-General:" + sWorkflowNo);//
            }
            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
示例#14
0
 public void AddName(String key, String name)
 {
     if (!m_nameCollections.ContainsKey(key))
     {
         NameCollection nc = new NameCollection(m_baseGameModel);
         nc.Key = key;
         m_nameCollections.Add(key, nc);
     }
     m_nameCollections[key].AddName(name);
 }
示例#15
0
 public static Links AddSelfQuery <T>(
     this Links links
     , string title           = null
     , NameCollection rel     = null
     , NameCollection classes = null
     )
 {
     (rel ?? (rel = new NameCollection())).Add(KnownRelations.Self);
     return(AddQuery <T>(links, null, title, rel, classes));
 }
示例#16
0
        /// <summary>
        /// 检查下一步审批
        /// </summary>
        /// <param name="cfoTaskUsers"> CFO</param>
        /// <param name="faTaskUsers">财务</param>
        /// <param name="e">事件对象</param>
        /// <param name="manager">管理者</param>
        /// <param name="status">状态</param>
        /// <param name="orderNum">订单号</param>
        /// <param name="isReject">是否拒绝</param>
        /// <param name="isToCfo">是否转向CFO审批</param>
        private void CheckNextApprove(ref NameCollection cfoTaskUsers, ref NameCollection faTaskUsers, ActionEventArgs e, string manager, ref string status, ref string orderNum, ref bool isReject, ref bool isToCfo)
        {
            if (WorkflowContext.Current.Step == "DepartmentManagerTask")
            {
                faTaskUsers = GetTaskUsers("wf_FinanceAnalyst_IO");
                cfoTaskUsers = GetTaskUsers("wf_CFO");

                if (e.Action == "Approve"){
                    status = CAWorkflowStatus.IODepartmentManagerApprove;
                }
                else if (e.Action == "To CFO")
                {
                    isToCfo = true;
                    status = CAWorkflowStatus.IOToCFO;
                }
                else if (e.Action == "Reject")
                {
                    isReject = true;
                    status = CAWorkflowStatus.IODepartmentManagerReject;
                }
            }
            else if (WorkflowContext.Current.Step == "CfoTask")
            {
                if (e.Action == "Approve")
                {
                    faTaskUsers = GetTaskUsers("wf_FinanceAnalyst_IO");
                    status = CAWorkflowStatus.IOCFOApprove;
                }
                else if (e.Action == "Reject")
                {
                    isReject = true;
                    status = CAWorkflowStatus.IOCFOReject;
                }
            }
            else if (WorkflowContext.Current.Step == "FinanceAnalystTask")
            {
                //不论财务是拒绝还是确认,工作流都结束
                if (e.Action == "Confirm"){
                    status = CAWorkflowStatus.Completed;
                }
                else if (e.Action == "Reject")
                {
                    orderNum = string.Empty;
                    status = CAWorkflowStatus.IOFinanceReject;
                }
            }

            bool isCfo = CurrentManagerIsCfo(cfoTaskUsers, manager);
            //如果部门领导是CFO或者CEO,当点击 “To CFO”,直接跳转到财务
            if (isCfo && isToCfo)
            {
                isToCfo = false;
                status = CAWorkflowStatus.IOCFOApprove;
            }
        }
示例#17
0
文件: Common.cs 项目: porter1130/C-A
 public static bool IsSameUser(NameCollection user1,NameCollection user2,NameCollection user3)
 {
     bool flag = false;
     if (user1.Count == 1 && user2.Count == 1 && user3.Count == 1)
     {
         if (user1[0].ToString() == user2[0].ToString() && user2[0].ToString() == user3[0].ToString())
         {
             flag = true;
         }
     }
     return flag;
 }
        /// <summary>
        /// Constructs a new parse tree for a custom property declaration.
        /// </summary>
        /// <param name="attributes">The attributes on the declaration.</param>
        /// <param name="modifiers">The modifiers on the declaration.</param>
        /// <param name="customLocation">The location of the 'Custom' keyword.</param>
        /// <param name="keywordLocation">The location of the keyword.</param>
        /// <param name="name">The name of the custom event.</param>
        /// <param name="asLocation">The location of the 'As', if any.</param>
        /// <param name="resultType">The result type, if any.</param>
        /// <param name="implementsList">The implements list.</param>
        /// <param name="accessors">The custom event accessors.</param>
        /// <param name="endDeclaration">The End Event declaration, if any.</param>
        /// <param name="span">The location of the parse tree.</param>
        /// <param name="comments">The comments for the parse tree.</param>
        public CustomEventDeclaration(AttributeBlockCollection attributes, ModifierCollection modifiers, Location customLocation, Location keywordLocation, SimpleName name, Location asLocation, TypeName resultType, NameCollection implementsList, DeclarationCollection accessors, EndBlockDeclaration endDeclaration,
                                      Span span, IList <Comment> comments) : base(TreeType.CustomEventDeclaration, attributes, modifiers, keywordLocation, name, null, null, asLocation, null, resultType,
                                                                                  span, comments)
        {
            SetParent(accessors);
            SetParent(endDeclaration);
            SetParent(implementsList);

            _CustomLocation = customLocation;
            _ImplementsList = implementsList;
            _Accessors      = accessors;
            _EndDeclaration = endDeclaration;
        }
示例#19
0
        protected MethodDeclaration(
            TreeType type,
            AttributeBlockCollection attributes,
            ModifierCollection modifiers,
            Location keywordLocation,
            SimpleName name,
            TypeParameterCollection typeParameters,
            ParameterCollection parameters,
            Location asLocation,
            AttributeBlockCollection resultTypeAttributes,
            TypeName resultType,
            NameCollection implementsList,
            NameCollection handlesList,
            StatementCollection statements,
            EndBlockDeclaration endDeclaration,
            Span span,
            IList <Comment> comments
            ) :
            base(
                type,
                attributes,
                modifiers,
                keywordLocation,
                name,
                typeParameters,
                parameters,
                asLocation,
                resultTypeAttributes,
                resultType,
                span,
                comments
                )
        {
            Debug.Assert(
                type == TreeType.SubDeclaration ||
                type == TreeType.FunctionDeclaration ||
                type == TreeType.ConstructorDeclaration ||
                type == TreeType.OperatorDeclaration ||
                type == TreeType.PropertyDeclaration
                );

            SetParent(endDeclaration);
            SetParent(implementsList);
            SetParent(handlesList);
            SetParent(statements);

            _ImplementsList = implementsList;
            _HandlesList    = handlesList;
            _Statements     = statements;
            _EndDeclaration = endDeclaration;
        }
示例#20
0
            /// <summary>
            /// Creates the months.
            /// </summary>
            /// <returns></returns>
            public static NameCollection CreateMonths()
            {
                var result = new NameCollection();
                var d      = new DateTime(1900, 1, 1);

                while (true)
                {
                    result.names.Add(d.ToString("MMMM"));
                    if (d.Month == 12)
                    {
                        break;
                    }
                    d = d.AddMonths(1);
                }
                return(result);
            }
示例#21
0
 private void InitNameCollection(Dictionary <string, EbMobileControl> controls)
 {
     foreach (EbMobileControl control in controls.Values)
     {
         if (control is ILinesEnabled lines)
         {
             foreach (EbMobileControl linesCtrl in lines.ChildControls)
             {
                 string key = $"{control.Name}.{linesCtrl.Name}";
                 NameCollection.Add(key);
             }
         }
         string keyControl = $"{CTRL_PARENT_FORM}.{control.Name}";
         NameCollection.Add(keyControl);
     }
 }
示例#22
0
        private void Actions_ActionExecuting(object sender, ActionEventArgs e)
        {
            string currentStatus = string.Empty;
            string manager = WorkflowContext.Current.DataFields["Manager"].AsString();
            string orderNum = WorkflowContext.Current.DataFields["Order Number"].AsString();
            bool isReject = false, isToCfo = false;

            NameCollection cfoTaskUsers = new NameCollection();
            NameCollection faTaskUsers = new NameCollection();
            CheckNextApprove(ref cfoTaskUsers, ref faTaskUsers, e, manager, ref currentStatus, ref orderNum,
                             ref isReject, ref isToCfo);
            UpdateWorkflowVariable(cfoTaskUsers, faTaskUsers, isReject, isToCfo);
            UpdateWorkFlowDataFields((isToCfo && cfoTaskUsers.Count > 0) ? cfoTaskUsers[0] : manager, currentStatus, orderNum);
            SendMailAndSaveApprovers(e, isReject);

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
示例#23
0
        private void Actions_ActionExecuting(object sender, ActionEventArgs e)
        {
            string currentStatus = string.Empty;
            string manager = WorkflowContext.Current.DataFields["Manager"].AsString();
            string vendorID = WorkflowContext.Current.DataFields["Vendor ID"].AsString();
            int paymentTerm = Convert.ToInt32(WorkflowContext.Current.DataFields["PaymentTerm"].AsString());
            bool isReject = false, isToCfo = false;

            NameCollection cfoTaskUsers = new NameCollection();
            NameCollection faTaskUsers = new NameCollection();
            CheckNextApprove(paymentTerm, ref cfoTaskUsers, ref faTaskUsers, e, manager, ref currentStatus, ref vendorID,
                             ref isReject, ref isToCfo);
            UpdateWorkflowVariable(cfoTaskUsers, faTaskUsers, isReject, isToCfo);
            UpdateWorkFlowDataFields((isToCfo && cfoTaskUsers.Count > 0) ? cfoTaskUsers[0] : manager, currentStatus, vendorID);
            SendMailAndSaveApprovers(e, isReject);

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
示例#24
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = context.DataFields;

            context.UpdateWorkflowVariable("UploadBillTaskTitle", "Please upload credit card e-statement");
            context.UpdateWorkflowVariable("UploadBillTaskFormURL","/_Layouts/CA/WorkFlows/CreditCardClaim/UploadExcelBill.aspx");

             var taskUsers = new NameCollection();
            List<string> groupUsers = null;

            groupUsers = WorkFlowUtil.UserListInGroup(WorkflowGroupName.WF_FinanceConfirm);
            taskUsers.AddRange(groupUsers.ToArray());

            ReturnAllApproversSP("TaskUsers", groupUsers.ToArray());

            context.UpdateWorkflowVariable("UploadBillTaskUsers", taskUsers);
        }
示例#25
0
        private void Actions_ActionExecuting(object sender, CancelEventArgs e)
        {
            if (!this.DataForm1.Validate())
            {
                DisplayMessage(this.DataForm1.msg.IsNotNullOrWhitespace() ? this.DataForm1.msg : "Please fill in all the necessary fields.");
                e.Cancel = true;
                return;
            }

            #region Set users for workflow
            //Modify task users
            var departmentManagerTaskUsers = new NameCollection();
            var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department);
            if (manager.IsNullOrWhitespace())
            {
                DisplayMessage("The department manager is not set in the system.");
                e.Cancel = true;
                return;
            }
            else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase))
            {
                var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee);
                if (managerEmp == null)
                {
                    DisplayMessage("The manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
                manager = managerEmp.UserAccount;
            }
            departmentManagerTaskUsers.Add(manager);

            var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.InternalOrderCreation);
            if (deleman != null)
            {
                departmentManagerTaskUsers.Add(deleman);
            }
            WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", departmentManagerTaskUsers);
            #endregion

            WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress;
        }
示例#26
0
 public static Links Add(
     this Links links
     , string href
     , string title           = null
     , NameCollection rel     = null
     , string mediaType       = null
     , NameCollection classes = null
     , object[] args          = null
     )
 {
     links.Add(new HrefLink
     {
         Href  = href,
         Title = title,
         Rel   = rel,
         Type  = mediaType,
         Class = classes
     });
     return(links);
 }
示例#27
0
        void Actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e)
        {
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            if (!e.Action.Equals("Approve"))//审批拒绝
            {
                WorkflowContext context = WorkflowContext.Current;
                SendNoticeMail("Rejected");
                fields["Status"] = CAWorkflowStatus.Completed;
            }
            else if (WorkflowContext.Current.Step == "BD" || (WorkflowContext.Current.Step == "DMM"&&fields["IsSkipBD"].AsString() == "True"))
            {
                SendMMCNoticeMail();
            }
            else if (WorkflowContext.Current.Step == "MMCBBS")
            {
                WorkflowContext context = WorkflowContext.Current;
                NameCollection nc = new NameCollection();
                if (WorkFlowUtil.IsInGroup(CurrentEmployee.UserAccount, "wf_BSS"))
                {
                    // DeleteTask(fields["ID"].AsString(), "wf_BSS");
                    nc = GetApproverInGroup("wf_ACC");
                }
                else if (WorkFlowUtil.IsInGroup(CurrentEmployee.UserAccount, "wf_ACC"))
                {
                    //DeleteTask(fields["ID"].AsString(), "wf_MMC");
                    nc = GetApproverInGroup("wf_BSS");
                }
                context.UpdateWorkflowVariable("EndUsers", nc);
            }
            else if (WorkflowContext.Current.Step == "End")//是最后一步的最后一个人审批。
            {
                WorkflowContext context = WorkflowContext.Current;
                SendNoticeMail("Approved");
                fields["Status"] = CAWorkflowStatus.Completed;
            }

            string sCurrentManager = CurrentEmployee.UserAccount;
            fields["Approvers"] = ReturnAllApprovers(sCurrentManager);
            fields["ApproversSPUser"] = ReturnAllApproversSP("ApproversSPUser", sCurrentManager);
            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
示例#28
0
        void actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e)
        {
            //SPFieldUserValueCollection col = WorkFlowUtil.GetApproversValue();
            //WorkflowContext.Current.DataFields["Approvers"] = col;
            //添加审批人
            AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, WorkFlowStep.SupplierReticketingApprovers, WorkFlowStep.SupplierReticketingApproverLoginName);
            switch (WorkflowContext.Current.Task.Step)
            {
                case WorkFlowStep.SupplierReticketingBuyingApprove:
                    WorkflowContext.Current.UpdateWorkflowVariable(WorkFlowStep.SupplierReticketingDepartmentHead, GetDelemanNameCollection(new NameCollection(WorkFlowUtil.GetUserInGroup("wf_BSSHead")), Constants.CAModules.SupplierReTicketingCharge));
                    break;
                case WorkFlowStep.SupplierReticketingDepartmentHeadApproval:
                    List<string> strGroupUser = WorkFlowUtil.UserListInGroup("wf_Finance_SR");
                    NameCollection GroupUsers = new NameCollection();
                    GroupUsers.AddRange(strGroupUser.ToArray());
                    WorkflowContext.Current.UpdateWorkflowVariable(WorkFlowStep.SupplierReticketingFinanceTaskUsers, GetDelemanNameCollection(GroupUsers, Constants.CAModules.SupplierReTicketingCharge));
                    break;
            }

            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
示例#29
0
 void actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e)
 {
     if (e.Action.Equals("End", StringComparison.CurrentCultureIgnoreCase))
     {
         WorkflowContext.Current.DataFields["Status"] = "Cancelled";
         return;
     }
     string msg = DataForm1.Validate();
     if (!string.IsNullOrEmpty(msg))
     {
         DisplayMessage(msg);
         e.Cancel = true;
         return;
     }
     NameCollection buyingUsers = new NameCollection();
     buyingUsers.Add(DataForm1.BuyingUser);
     WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveUsers", buyingUsers);
     WorkflowContext.Current.DataFields["BuyingUser"] = DataForm1.BuyingUser;
     WorkflowContext.Current.DataFields["FileName"] = DataForm1.Submit();
     WorkflowContext.Current.DataFields["Status"] = "In Progress";
 }
示例#30
0
 public static Links AddSelf(
     this Links links
     , string href
     , string title           = null
     , NameCollection rel     = null
     , string mediaType       = null
     , NameCollection classes = null
     , object[] args          = null
     )
 {
     (rel ?? (rel = new NameCollection())).Add(KnownRelations.Self);
     links.Add(new HrefLink
     {
         Href  = href,
         Title = title,
         Rel   = rel,
         Type  = mediaType,
         Class = classes
     });
     return(links);
 }
示例#31
0
        private void SendMailForSubmit(NameCollection departmentManagerTaskUsers)
        {
            //Send mail to Onsite and Receptionist
            var templateTitle = "TravelRequest2Submit2";
            List<string> parameters = new List<string>();
            var applicantStr = WorkflowContext.Current.DataFields["Applicant"].AsString();
            var applicantName = WorkflowContext.Current.DataFields["EnglishName"].AsString();
            List<string> to = TravelRequest2Common.GetMailMembers("Receptionist", "C-Trip");
            string rootweburl = GetRootURL(System.Configuration.ConfigurationManager.AppSettings["rootweburl"]);
            string detailLink = rootweburl + "WorkFlowCenter/Lists/TravelRequestWorkflow2/TRPending.aspx";
            parameters.Add("");
            parameters.Add(applicantName);
            parameters.Add(workflowNumber);
            parameters.Add(detailLink);
            SendNotificationMail(templateTitle, parameters, to, false);

            //Send mail to Applicant
            to = new List<string>();
            parameters = new List<string>();
            var applicantAccount = WorkFlowUtil.GetApplicantAccount(applicantStr);
            var approverNames = WorkFlowUtil.GetDisplayNames(TravelRequest2Common.ConvertToList(departmentManagerTaskUsers));
            templateTitle = "TravelRequest2Submit1";
            //detailLink = rootweburl + "WorkFlowCenter/Lists/TravelRequestWorkflow2/MyApply.aspx";
            to.Add(applicantAccount);
            parameters.Add("");
            parameters.Add(approverNames);
            //parameters.Add(detailLink);
            SendNotificationMail(templateTitle, parameters, to, true);

            //Send mail to Department Manager
            parameters = new List<string>();
            to = TravelRequest2Common.ConvertToList(departmentManagerTaskUsers);
            templateTitle = "TravelRequest2Submit3";
            detailLink = rootweburl + "CA/MyTasks.aspx";
            parameters.Add("");
            parameters.Add(applicantName);
            parameters.Add(detailLink);
            SendNotificationMail(templateTitle, parameters, to, false);
        }
示例#32
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            string taskTitle = string.Empty;
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;

            //Check which button has been clicked
            var btn = sender as StartWorkflowButton;

            context.UpdateWorkflowVariable("IsSubmit", true);

            #region Set users for workflow
            var manager = new NameCollection();

            List<string> groupUsers = WorkFlowUtil.UserListInGroup("wf_IT");
            manager.AddRange(groupUsers.ToArray());

            WorkflowContext.Current.UpdateWorkflowVariable("ApproveTaskUsers", manager);
            #endregion

            //Set NextApproveTask title for workflow
            taskTitle = "DEMO Workflow";
            context.UpdateWorkflowVariable("ApproveTaskTitle", taskTitle + "needs approval");

            SPQuery query = new SPQuery();
            query.Query = @"<OrderBy>
                             <FieldRef Name='ID' Ascending='False' />
                          </OrderBy>";

            fields["Title"] = WorkFlowUtil.CreateWorkFlowNumber("DEMO_");
            #region Set page URL for workflow
            //Set page url
            var URL = "/_Layouts/CA/WorkFlows/demo/ApproveForm.aspx";

            context.UpdateWorkflowVariable("ApproveTaskFormURL", URL);

            #endregion
            //"DEMO_" +(int.Parse( SPContext.Current.List.GetItems(query)[0]["ID"].AsString())+1);
        }
 /// <summary>
 /// Constructs a new parse tree for a property declaration (VB6).
 /// </summary>
 /// <param name="attributes">The attributes on the declaration.</param>
 /// <param name="modifiers">The modifiers on the declaration.</param>
 /// <param name="keywordLocation">The location of the keyword.</param>
 /// <param name="name">The name of the property.</param>
 /// <param name="parameters">The parameters of the property.</param>
 /// <param name="asLocation">The location of the 'As', if any.</param>
 /// <param name="resultTypeAttributes">The attributes on the result type.</param>
 /// <param name="resultType">The result type, if any.</param>
 /// <param name="implementsList">The implements list.</param>
 /// <param name="accessors">The property accessors.</param>
 /// <param name="statements">The property statements (VB6)</param>
 /// <param name="endDeclaration">The End Property declaration, if any.</param>
 /// <param name="span">The location of the parse tree.</param>
 /// <param name="comments">The comments for the parse tree.</param>
 public PropertyDeclaration(
     AttributeBlockCollection attributes,
     ModifierCollection modifiers,
     Location keywordLocation,
     SimpleName name,
     ParameterCollection parameters,
     Location asLocation,
     AttributeBlockCollection resultTypeAttributes,
     TypeName resultType,
     NameCollection implementsList,
     GetAccessorDeclaration getAccessor,
     SetAccessorDeclaration setAccessor,
     EndBlockDeclaration endDeclaration,
     Span span,
     IList <Comment> comments
     ) :
     base(
         TreeType.PropertyDeclaration,
         attributes,
         modifiers,
         keywordLocation,
         name,
         null,
         parameters,
         asLocation,
         resultTypeAttributes,
         resultType,
         implementsList,
         null,
         null,
         endDeclaration,
         span,
         comments)
 {
     GetAccessor = getAccessor;
     SetAccessor = setAccessor;
 }
示例#34
0
        public static Links AddQuery <T>(
            this Links links
            , Action <T> args        = null
            , string title           = null
            , NameCollection rel     = null
            , NameCollection classes = null
            )
        {
            var link = new QueryLink
            {
                QueryType = typeof(T),
                Rel       = rel,
                Title     = title,
                Class     = classes
            };

            if (args != null)
            {
                link.Setter = query => args.Invoke((T)query);
            }

            links.Add(link);
            return(links);
        }
示例#35
0
        /// <summary>
        /// 设置工作流变量
        /// </summary>
        /// <param name="bIsSubmit"></param>
        /// <param name="sWorkFlowNO"></param>
        bool SetWorkflowBaseVariable(bool bIsSubmit,string sWorkFlowNO)
        {
            NameCollection ncFinance = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
            if (null == ncFinance || ncFinance.Count == 0)
            {
                DisplayMessage("There are no users in wf_FinanceConfirm");
                return false;
            }
            Employee employee = WorkFlowUtil.GetNextApprover(this.Userinfo1.Applicant);/// WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm");
            if (null == employee)
            {
                DisplayMessage(this.Userinfo1.Applicant.UserAccount+" has no manager in System!");
                return false;
            }
            NameCollection manager = new NameCollection();
            manager.Add(employee.UserAccount);
            string sDelePerson = WorkFlowUtil.GetDeleman(employee.UserAccount, WorkFlowUtil.GetModuleIdByListName("PurchaseRequestGeneral")); //查找代理人
            if (sDelePerson != null)
            {
                manager.Add(sDelePerson);
            }

            WorkflowContext context = WorkflowContext.Current;
            context.UpdateWorkflowVariable("IsSubmit", bIsSubmit);
            context.UpdateWorkflowVariable("IsSaveAgin", false);
            context.UpdateWorkflowVariable("EditUrl", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/EditForm.aspx");//EditUrl
            context.UpdateWorkflowVariable("EditTitle", "Please complete Purchase Ruequest-General:" + sWorkFlowNO);//
            context.UpdateWorkflowVariable("ApproveURL", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/ApproveForm.aspx");//ApproveURL
            context.UpdateWorkflowVariable("ApproveTitle", sWorkFlowNO + " needs approve");//ApproveTitle
            context.UpdateWorkflowVariable("ApproveUsers", manager);
            context.UpdateWorkflowVariable("ComfirmURL", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/ConfirmForm.aspx");//ComfirmURL
            context.UpdateWorkflowVariable("ConfirmTitle", sWorkFlowNO + " needs confirm"); //ConfirmTitle
            context.UpdateWorkflowVariable("IsApproveAgin", false);
            context.UpdateWorkflowVariable("ConfirmUsers", ncFinance);
            return true;
        }
示例#36
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            try
            {
                string taskTitle = string.Empty;
                WorkflowContext context = WorkflowContext.Current;
                WorkflowDataFields fields = WorkflowContext.Current.DataFields;
                var btn = sender as StartWorkflowButton;
                #region Save Common List Data
                List<string> fieldsList = new List<string>()
                                               {"Applicant",
                                                "ApplicantSPUser",
                                                "ChineseName",
                                                "Department",
                                                "EnglishName",
                                                "Mobile",
                                                "OfficeExt",
                                                "IDNumber"};
                workflowNumber = TravelExpenseClaimCommon.SaveListFields(requestId, "Travel Request Workflow2", fields, fieldsList);
                #endregion
                if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
                {
                    context.UpdateWorkflowVariable("IsSave", true);
                    fields["Status"] = CAWorkflowStatus.Pending;
                    context.UpdateWorkflowVariable("CompleteTaskTitle", "Please complete Travel Expense Claim");
                }
                else
                {
                    #region Set Users for Workflow
                    var manager = new NameCollection();
                    SPUser applicantUser = SPContext.Current.Web.AllUsers.GetByID(Convert.ToInt32(fields["ApplicantSPUser"].AsString()));
                    var managerEmp = WorkFlowUtil.GetNextApprover(applicantUser.LoginName);
                    if (managerEmp == null)
                    {
                        if (!WorkflowPerson.IsCEO(applicantUser.LoginName))
                        {
                            DisplayMessage("The manager is not set in the system.");
                            e.Cancel = true;
                            return;
                        }
                        else
                        {
                            List<string> cfos = WorkflowPerson.GetCFO();
                            if (cfos.Count == 0)
                            {
                                DisplayMessage("The init error about WorkflowPerson in the system.");
                                e.Cancel = true;
                                return;
                            }
                            managerEmp = UserProfileUtil.GetEmployeeEx(cfos[0]);
                        }
                    }
                    TravelExpenseClaimCommon.GetTaskUsers(manager, managerEmp.UserAccount);
                    fields["CurrManager"] = managerEmp.UserAccount;
                    WorkflowContext.Current.UpdateWorkflowVariable("NextApproveTaskUsers", manager);
                    WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false);
                    #endregion
                    //Set NextApproveTask title for workflow
                    //taskTitle = fields["EnglishName"].AsString() + "'s Travel Expense ";
                    taskTitle = string.Format("{0} {1} {2}'s Travel Expense ", fields["WorkflowNumber"].AsString(), this.DataForm.TotalCost, fields["EnglishName"].AsString());
                    context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle );
                    context.UpdateWorkflowVariable("ConfirmTaskTitle", taskTitle );
                    context.UpdateWorkflowVariable("IsSave", false);
                    fields["Status"] = CAWorkflowStatus.InProgress;
                    this.SendEmail("SubmitToApplicant");
                }
                #region Save Details
                //Save the inputed data to datatable
                TravelExpenseClaimCommon.SaveDetails(this.DataForm, fields["WorkflowNumber"].AsString());
                #endregion
                #region Save Form
                fields["Purpose"] = this.DataForm.Purpose;
                fields["TotalCost"] = this.DataForm.TotalCost;
                fields["CashAdvanced"] = this.DataForm.CashAdvanced;
                fields["PaidByCreditCard"] = this.DataForm.PaidByCreditCard;
                fields["NetPayable"] = this.DataForm.NetPayable;
                fields["TotalExceptFlight"] = this.DataForm.TotalExceptFlight;
                fields["ComparedToApproved"] = this.DataForm.ComparedToApproved;
                fields["Reasons"] = this.DataForm.Reasons;
                fields["SupportingSubmitted"] = this.DataForm.SupportingSubmitted;
                fields["SubmissionDate"] = this.DataForm.SubmissionDate;
                fields["FinanceRemark"] = this.DataForm.FinanceRemark;

                fields["HotelForm"] = this.DataForm.HotelForm;
                fields["MealAllowanceForm"] = this.DataForm.MealAllowanceForm;
                fields["TransportationForm"] = this.DataForm.TransportationForm;
                fields["SamplePurchaseForm"] = this.DataForm.SamplePurchaseForm;
                fields["OtherForm"] = this.DataForm.OtherForm;

                fields["HotelSubTotal"] = this.DataForm.HotelSubTotal;
                fields["MealSubTotal"] = this.DataForm.MealSubTotal;
                fields["TransSubTotal"] = this.DataForm.TransSubTotal;
                fields["SampleSubTotal"] = this.DataForm.SampleSubTotal;
                fields["OthersSubTotal"] = this.DataForm.OthersSubTotal;
                #endregion
                #region Set page URL for workflow
                //Set page url
                var editURL = "/_Layouts/CA/WorkFlows/TravelExpenseClaim2/EditForm.aspx";
                var approveURL = "/_Layouts/CA/WorkFlows/TravelExpenseClaim2/ApproveForm.aspx";
                context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
                context.UpdateWorkflowVariable("NextApproveTaskFormURL", approveURL);
                context.UpdateWorkflowVariable("ConfirmTaskFormURL", approveURL);
                #endregion
                WorkFlowUtil.UpdateWorkflowPath(context);
                #region Update Travel Request Claim Link
                SPFieldUrlValue link = new SPFieldUrlValue();
                link.Description = "Closed";
                var rootweburl = GetRootURL(System.Configuration.ConfigurationManager.AppSettings["rootweburl"]);
                link.Url = rootweburl + "WorkFlowCenter/Lists/TravelExpenseClaim/MyApply.aspx";
                SPList list = SPContext.Current.Web.Lists["Travel Request Workflow2"];
                foreach (SPListItem item in list.Items)
                {
                    if (item["WorkflowNumber"].ToString() == fields["TRWorkflowNumber"].ToString())
                    {
                        item["Claim"] = link;
                        item.Update();
                    }
                }
                #endregion
                e.Cancel = false;
            }
            catch (Exception exception)
            {
                e.Cancel = true;
                CommonUtil.logError(string.Format("Travel Expense Claim :: {0}", exception.Message));
                throw new Exception(exception.Message);
            }
        }
示例#37
0
        internal static NameCollection GetTaskUsers(NameCollection manager, string managerAccount)
        {
            manager.Add(managerAccount);

            string moduleID = WorkFlowUtil.GetModuleIdByListName("TravelExpenseClaimWorkflow");

            var deleman = WorkFlowUtil.GetDeleman(managerAccount, moduleID);
            if (deleman != null)
            {
                manager.Add(deleman);
            }

            return manager;
        }
示例#38
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            string url = Request.UrlReferrer.ToString();
            if (!this.DataForm.SubmitStatus)
            {
                Response.Write("<script type=\"text/javascript\">alert('You are not in Buying Department .');window.location = '" + url + "';</script>");
                Response.End();
                e.Cancel = true;
                return;
            }
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            var btn = sender as StartWorkflowButton;
            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                context.UpdateWorkflowVariable("IsSave", true);
                context.DataFields["Status"] = CAWorkflowStatus.Pending;
            }
            else
            {
                #region Set users for workflow
                Employee manager = WorkFlowUtil.GetApproverByLevelPAD(this.DataForm.Applicant);
                if (null == manager)
                {
                    Response.Write("<script type=\"text/javascript\">alert('The init error about applicant’s manager in the system.');window.location = '" + url + "';</script>");
                    Response.End();
                    e.Cancel = true;
                    return;
                }
                NameCollection DMMTask = new NameCollection();
                DMMTask.Add(manager.UserAccount);
                fields["CurrManager"] = manager.UserAccount;

                NameCollection wf_NTSC_QM = new NameCollection();
                //NameCollection wf_NTSC_QAD = new NameCollection();
                NameCollection wf_NTSC_SCM = new NameCollection();
                NameCollection wf_NTSC_SCMM = new NameCollection();
                List<string> qm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_QM);
                //List<string> qad = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_QAD);
                List<string> scm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_SCM);
                List<string> scmm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_SCMM);
                System.Text.StringBuilder group = new System.Text.StringBuilder();
                if (qm.Count == 0)
                {
                    group.Append(" wf_NTSC_QM ");
                }
                //if (qad.Count == 0)
                //{
                //    group.Append(" wf_NTSC_QAD ");
                //}
                if (scm.Count == 0)
                {
                    group.Append(" wf_NTSC_SCM ");
                }
                if (scmm.Count == 0)
                {
                    group.Append(" wf_NTSC_SCMM ");
                }
                if (scm.Count == 0 || scmm.Count == 0 || qm.Count == 0)
                {
                    Response.Write("<script type=\"text/javascript\">alert('The init error about WorkflowPerson in the " + group.ToString() + "');window.location = '" + url + "';</script>");
                    Response.End();
                    e.Cancel = true;
                    return;
                }
                wf_NTSC_QM.AddRange(qm.ToArray());
                //wf_NTSC_QAD.AddRange(qad.ToArray());
                wf_NTSC_SCM.AddRange(scm.ToArray());
                wf_NTSC_SCMM.AddRange(scmm.ToArray());

                System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder();
                strStepAndUsers.AppendFormat("{0}:{1};", "DMMTask", DMMTask.JoinString(","));
                strStepAndUsers.AppendFormat("{0}:{1};", "QMTask", wf_NTSC_QM.JoinString(","));
                //strStepAndUsers.AppendFormat("{0}:{1};", "QADTask", wf_NTSC_QAD.JoinString(","));
                strStepAndUsers.AppendFormat("{0}:{1};", "SCMTask", wf_NTSC_SCM.JoinString(","));
                strStepAndUsers.AppendFormat("{0}:{1};", "SCMConfirmTask", wf_NTSC_SCMM.JoinString(","));
                fields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString();

                context.UpdateWorkflowVariable("NextApproveTaskUsers", GetDelemanNameCollection(DMMTask, WorkFlowUtil.GetModuleIdByListName("New Production Unit Creation")));
                #endregion
                context.UpdateWorkflowVariable("IsSave", false);
                context.DataFields["Status"] = CAWorkflowStatus.InProgress;
            }
            #region Save the data
            string workflowNumber = CreateWorkflowNumber();
            fields["WorkFlowNumber"] = workflowNumber;
            fields["Applicant"] = this.DataForm.Applicant.UserAccount;
            fields["Department"] = this.DataForm.Applicant.Department;
            fields["ApplicantSPUser"] = NewProductionUnitCreation.EnsureUser(this.DataForm.Applicant.UserAccount);
            fields["SupplierName"] = this.DataForm.SupplierName;
            fields["SubDivision"] = this.DataForm.Applicant.Department;
            fields["SupplierNo"] = this.DataForm.SupplierNo;
            fields["PUNO"] = this.DataForm.PUNO;
            fields["ProductionUnitName"] = this.DataForm.ProductionUnitName;
            fields["IsMondial"] = this.DataForm.IsMondial == "Yes" ? true : false;
            fields["Reason"] = this.DataForm.Reason;
            #endregion
            #region Set title for workflow
            //string taskTitle = string.Format("{0} {1} {2}'s New Production Unit Creation needs approval"
            //                                             , workflowNumber
            //                                             , this.DataForm.SupplierName
            //                                             , this.DataForm.Applicant.UserAccount);
            string taskTitle = string.Format("{0} {1}'s New Production Unit Creation needs approval"
                                                        , workflowNumber
                                                        , this.DataForm.Applicant.UserAccount);
            context.UpdateWorkflowVariable("CompleteTaskTitle", "Please complete New Production Unit Creation");
            context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle);
            #endregion
            #region Set page URL for workflow
            var editURL = "/_Layouts/CA/WorkFlows/NewProductionUnitCreation/EditForm.aspx";
            var approveURL = "/_Layouts/CA/WorkFlows/NewProductionUnitCreation/ApproveForm.aspx";
            context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
            context.UpdateWorkflowVariable("NextApproveTaskFormURL", approveURL);
            #endregion
            SendEmail("Submit");
            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
示例#39
0
 /// <summary>
 /// Creates a new parse tree for a Function declaration.
 /// </summary>
 /// <param name="attributes">The attributes for the parse tree.</param>
 /// <param name="modifiers">The modifiers for the parse tree.</param>
 /// <param name="keywordLocation">The location of the keyword.</param>
 /// <param name="name">The name of the declaration.</param>
 /// <param name="typeParameters">The type parameters on the declaration, if any.</param>
 /// <param name="parameters">The parameters of the declaration.</param>
 /// <param name="asLocation">The location of the 'As', if any.</param>
 /// <param name="resultTypeAttributes">The attributes on the result type, if any.</param>
 /// <param name="resultType">The result type, if any.</param>
 /// <param name="implementsList">The list of implemented members.</param>
 /// <param name="handlesList">The list of handled events.</param>
 /// <param name="statements">The statements in the declaration.</param>
 /// <param name="endDeclaration">The end block declaration, if any.</param>
 /// <param name="span">The location of the parse tree.</param>
 /// <param name="comments">The comments for the parse tree.</param>
 public FunctionDeclaration(AttributeBlockCollection attributes, ModifierCollection modifiers, Location keywordLocation, SimpleName name, TypeParameterCollection typeParameters, ParameterCollection parameters, Location asLocation, AttributeBlockCollection resultTypeAttributes, TypeName resultType, NameCollection implementsList,
                            NameCollection handlesList, StatementCollection statements, EndBlockDeclaration endDeclaration, Span span, IList <Comment> comments) : base(TreeType.FunctionDeclaration, attributes, modifiers, keywordLocation, name, typeParameters, parameters, asLocation, resultTypeAttributes, resultType,
                                                                                                                                                                        implementsList, handlesList, statements, endDeclaration, span, comments)
 {
 }
示例#40
0
 /// <summary>
 /// 更新WorkFlow工作流的相关变量值
 /// </summary>
 /// <param name="dpTaskUsers">部门领导</param>
 /// <param name="isSave">是否为保存数据状态</param>
 private void UpdateWorkflowVariable(NameCollection dpTaskUsers, bool isSave)
 {
     WorkflowContext.Current.UpdateWorkflowVariable("IsSave", isSave);
     WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", dpTaskUsers);
 }
示例#41
0
 /// <summary>
 /// 更新工作流相关list中字段数据
 /// </summary>
 /// <param name="dpTaskUsers">部门领导</param>
 /// <param name="isSave">是否为保存数据状态</param>
 private void UpdateWorkFlowDataFields(NameCollection dpTaskUsers, bool isSave)
 {
     WorkflowContext.Current.DataFields["Status"] = isSave ? CAWorkflowStatus.Pending :
                                                              CAWorkflowStatus.InProgress;
     WorkflowContext.Current.DataFields["Manager"] = dpTaskUsers.Count > 0 ? dpTaskUsers[0] : "";
 }
示例#42
0
 internal CsvDocument()
     : base(CsvNodeType.Document)
 {
     names = new NameCollection(this);
     rows  = new RowCollection(this);
 }
示例#43
0
        //Return task users object according to special group
        public static NameCollection GetTaskUsers(string group, string moduleId)
        {
            var taskUsers = new NameCollection();
            List<string> delemans = null;
            List<string> groupUsers = null;

            groupUsers = WorkFlowUtil.UserListInGroup(group);
            taskUsers.AddRange(groupUsers.ToArray());

            delemans = WorkFlowUtil.GetDelemans(groupUsers, moduleId);
            //if (delemans.Count > 0)
            //{
            //    taskUsers.AddRange(delemans.ToArray());
            //}
            foreach (var delegateAccount in delemans)
            {
                // Need to check whether the delegate account is valid.
                if (UserProfileUtil.GetEmployeeEx(delegateAccount) != null)
                {
                    taskUsers.Add(delegateAccount);
                }
            }

            return taskUsers;
        }
示例#44
0
 public LinkTo(string title = null, NameCollection rel = null)
 {
     this.title = title;
     this.rel   = rel;
 }
示例#45
0
        public void Initialize(NameCollection names)
        {
            this.names = names;

            grid.Columns[1].Visible = false;
        }
示例#46
0
        private void Actions_ActionExecuting(object sender, ActionEventArgs e)
        {
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;

            switch (WorkflowContext.Current.Step)
            {
                case "NextApproveTask":
                    if (e.Action.Equals("Approve", StringComparison.CurrentCultureIgnoreCase))
                    {
                        var levelType = "Payment Approval Limits";
                        double total = Convert.ToDouble(fields["TotalAmount"].ToString());
                        var quota = WorkFlowUtil.GetQuota(fields["CurrManager"].ToString(), levelType);
                        if (total > quota)
                        {
                            #region Set users for workflow
                            var manager = new NameCollection();
                            var managerEmp = WorkFlowUtil.GetNextApprover(fields["CurrManager"].ToString());
                            //if it's CEO
                            if (managerEmp == null)
                            {
                                List<string> ceos = WorkflowPerson.GetCEO();
                                if (ceos.Count == 0)
                                {
                                    DisplayMessage("The init error about WorkflowPerson in the system.");
                                    e.Cancel = true;
                                    return;
                                }
                                managerEmp = UserProfileUtil.GetEmployeeEx(ceos[0]);
                            }
                            ExpatriateBenefitClaimCommon.GetTaskUsers(manager, managerEmp.UserAccount);
                            #endregion

                            fields["CurrManager"] = managerEmp.UserAccount;
                            AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, "ApproversSPUser", "Approvers");

                            context.UpdateWorkflowVariable("NextApproveTaskUsers", manager);
                            context.UpdateWorkflowVariable("IsContinue", true);
                        }
                        else
                        {
                            context.UpdateWorkflowVariable("ConfirmTaskUsers", ExpatriateBenefitClaimCommon.GetTaskUsers(ExpatriateBenefitClaimConstants.wf_EBC_FinanceConfirm));
                            context.UpdateWorkflowVariable("IsContinue", false);
                        }
                    }
                    else
                    {
                        fields["Status"] = CAWorkflowStatus.Rejected;

                        context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Expatriate Benefit Claim");
                        context.UpdateWorkflowVariable("IsContinue", false);
                        SendEmail("Reject");
                    }
                    AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, "ApproversSPUser", "Approvers");
                    break;
                case "ConfirmTask":
                    if (e.Action == "Confirm")
                    {
                        fields["Status"] = CAWorkflowStatus.Completed;
                        if (fields["CashAdvanceWorkFlowNumber"] != null)
                        {
                            string workflowNumber = fields["CashAdvanceWorkFlowNumber"].ToString();
                            List<string> list = workflowNumber.Split(';').ToList<string>();
                            if (list.Count > 0)
                            {
                                foreach (string number in list)
                                {
                                    if (number != "")
                                    {
                                        UpdateCashAdvanceStatus(number);
                                    }
                                }
                            }
                        }
                        fields["ReasonsResult"] = "0";
                        if (IsExistSAP(fields["WorkflowNumber"].ToString()))
                        {
                            AddExpatriateBenefitClaimSAPWorkflow(fields);
                        }
                    }

                    if (e.Action == "Reject")
                    {
                        fields["Status"] = CAWorkflowStatus.Rejected;
                        this.DataForm.SavePendingForm();
                        context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Expatriate Benefit Claim");
                        SendEmail("Reject");
                    }
                    if (e.Action == "Pending")
                    {
                        fields["Status"] = CAWorkflowStatus.Pending;
                        this.DataForm.SavePendingForm();

                        context.UpdateWorkflowVariable("ConfirmTaskUsers", ExpatriateBenefitClaimCommon.GetTaskUsers(ExpatriateBenefitClaimConstants.wf_EBC_FinanceConfirm));
                        SendEmail("Pending");
                    }

                    AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, "ApproversSPUser", "Approvers");
                    break;
                default:
                    break;
            }
            WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current);
        }
示例#47
0
        protected static XmlNode ConvertNode(XmlNode node, XmlDocument prom, XmlNode rootNode)
        {
            int        unknownCount      = 0;
            XmlNode    fieldsNode        = node.SelectSingleNode("Fields");
            XmlElement mainStructElement = prom.CreateElement("struct");

            XmlNode nameNode = node.SelectSingleNode("Name");
            //string structName = "Main";
            string structName = tagType;

            if (nameNode != null)
            {
                structName = FixStructName(nameNode.InnerText);
            }

            XmlAttribute structNameAttribute = prom.CreateAttribute("name");

            structNameAttribute.InnerText = structName;
            mainStructElement.Attributes.Append(structNameAttribute);

            NameCollection names = new NameCollection();

            foreach (XmlNode fieldNode in fieldsNode.SelectNodes("Field"))
            {
                NameElements elements = ParseControlName(fieldNode.SelectSingleNode("Name").InnerText);

                // Create a node in the output XML doc based on the type.
                XmlAttribute typeAttribute = prom.CreateAttribute("type");
                string       fieldType     = fieldNode.SelectSingleNode("Type").InnerText;

                // Ignore Terminator_X
                if (fieldType == "Terminator_X")
                {
                    continue;
                }

                // TODO: Create a section based on these.  Continue for now.
                if (fieldType == "Explanation")
                {
                    continue;
                }

                // Fix up the field name string.
                fieldType = ConvertDataTypeString(fieldType);

                XmlElement valueElement = prom.CreateElement("value");

                if (elements.name == "")
                {
                    //unknownCount++;
                    elements.name = "_unnamed" + unknownCount.ToString();
                    elements.name = "_unnamed"; //+ unknownCount.ToString();
                }

                int uses = names.Add(elements.name);
                if (uses > 1)
                {
                    elements.name += uses.ToString();
                }

                typeAttribute.InnerText = fieldType;
                valueElement.Attributes.Append(typeAttribute);

                XmlAttribute nameAttribute = prom.CreateAttribute("name");
                nameAttribute.InnerText = elements.name;
                valueElement.Attributes.Append(nameAttribute);

                if (elements.tooltip != null)
                {
                    XmlElement tooltipElement = prom.CreateElement("tooltip");
                    tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(elements.tooltip)));
                    valueElement.AppendChild(tooltipElement);
                }

                if (elements.blocksName)
                {
                    XmlAttribute blockNameAttribute = prom.CreateAttribute("blockname");
                    blockNameAttribute.Value = "true";
                    valueElement.Attributes.Append(blockNameAttribute);
                }

                // Based on the type, we may need to append other elements.
                if (fieldType == "Block")
                {
                    // Add the MaxElements tag.
                    XmlNode blockNode = fieldNode.SelectSingleNode("Block");
                    string  blockName = FixStructName(blockNode.SelectSingleNode("Name").InnerText);

                    XmlAttribute blockNameAttribute = prom.CreateAttribute("struct");
                    blockNameAttribute.InnerText = blockName;
                    valueElement.Attributes.Append(blockNameAttribute);

                    string       maxElements          = blockNode.SelectSingleNode("MaxElements").InnerText;
                    XmlAttribute maxElementsAttribute = prom.CreateAttribute("maxelements");
                    maxElementsAttribute.Value = maxElements;
                    valueElement.Attributes.Append(maxElementsAttribute);

                    // Create a new struct and add it to the current parent.
                    XmlNode newStructNode = ConvertNode(blockNode, prom, rootNode);
                    mainStructElement.AppendChild(newStructNode);
                }
                else if (fieldType == "TagReference")
                {
                    string      extensions = "";
                    XmlNodeList subFields  = fieldNode.SelectNodes("Fields/*");
                    foreach (XmlNode subFieldNode in subFields)
                    {
                        extensions += subFieldNode.InnerText + "|";
                    }
                    extensions = extensions.TrimEnd('|');

                    XmlAttribute extensionsAttribute = prom.CreateAttribute("extensions");
                    extensionsAttribute.Value = extensions;
                    valueElement.Attributes.Append(extensionsAttribute);
                }
                else if (fieldType == "ShortBlockIndex")
                {
                    XmlNode      blockNameNode      = fieldNode.SelectSingleNode("Block");
                    XmlAttribute blockNameAttribute = prom.CreateAttribute("block");
                    blockNameAttribute.Value = FixStructName(blockNameNode.InnerText);
                    valueElement.Attributes.Append(blockNameAttribute);
                }
                else if (fieldType == "Enum")
                {
                    XmlNodeList subFields = fieldNode.SelectNodes("Fields/*");
                    int         index     = 0;
                    foreach (XmlNode subFieldNode in subFields)
                    {
                        NameElements tmpElements        = ParseControlName(subFieldNode.InnerText);
                        XmlElement   itemElement        = prom.CreateElement("item");
                        XmlAttribute itemValueAttribute = prom.CreateAttribute("value");
                        itemValueAttribute.InnerText = index.ToString();
                        index++;
                        XmlAttribute itemNameAttribute = prom.CreateAttribute("name");
                        itemNameAttribute.InnerText = tmpElements.name;
                        itemElement.Attributes.Append(itemValueAttribute);
                        itemElement.Attributes.Append(itemNameAttribute);
                        if (tmpElements.tooltip != null)
                        {
                            XmlElement tooltipElement = prom.CreateElement("tooltip");
                            tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(elements.tooltip)));
                            itemElement.AppendChild(tooltipElement);
                        }
                        valueElement.AppendChild(itemElement);
                    }
                }
                else if (fieldType == "String")
                {
                    // Change the name, since String in c# is a bad choice.
                    fieldType = "FixedLengthString";
                    typeAttribute.InnerText = fieldType;
                }
                else if ((fieldType == "ByteFlags") || (fieldType == "WordFlags") || (fieldType == "LongFlags"))
                {
                    XmlAttribute flagsLengthAttribute = prom.CreateAttribute("length");
                    if (fieldType == "ByteFlags")
                    {
                        flagsLengthAttribute.InnerText = "1";
                    }
                    if (fieldType == "WordFlags")
                    {
                        flagsLengthAttribute.InnerText = "2";
                    }
                    if (fieldType == "LongFlags")
                    {
                        flagsLengthAttribute.InnerText = "4";
                    }
                    valueElement.Attributes.Append(flagsLengthAttribute);

                    // Manually override the name so that we can use the generic flags handler.
                    fieldType = "Flags";
                    typeAttribute.InnerText = fieldType;

                    XmlNodeList subFields = fieldNode.SelectNodes("Fields/*");
                    int         index     = 0;
                    foreach (XmlNode subFieldNode in subFields)
                    {
                        NameElements tmpElements       = ParseControlName(subFieldNode.InnerText);
                        XmlElement   bitElement        = prom.CreateElement("bit");
                        XmlAttribute bitIndexAttribute = prom.CreateAttribute("index");
                        bitIndexAttribute.InnerText = index.ToString();
                        index++;
                        XmlAttribute bitNameAttribute = prom.CreateAttribute("name");
                        bitNameAttribute.InnerText = tmpElements.name;
                        bitElement.Attributes.Append(bitIndexAttribute);
                        bitElement.Attributes.Append(bitNameAttribute);
                        if (tmpElements.tooltip != null)
                        {
                            XmlElement tooltipElement = prom.CreateElement("tooltip");
                            tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(tmpElements.tooltip)));
                            bitElement.AppendChild(tooltipElement);
                        }
                        valueElement.AppendChild(bitElement);
                    }
                }
                else if ((fieldType == "Pad") || (fieldType == "Skip"))
                {
                    string       length          = fieldNode.SelectSingleNode("Value").InnerText;
                    XmlAttribute lengthAttribute = prom.CreateAttribute("length");
                    lengthAttribute.Value = length;
                    valueElement.Attributes.Append(lengthAttribute);
                }
                else if (fieldType == "ArrayStart")
                {
                    // TODO: Revisit Arrays.
                    // Not sure how we're handling this stuff.
                    // Just adding in a comment for now to show where they are.
                    string     fieldCount = fieldNode.SelectSingleNode("Array/FieldCount").InnerText;
                    XmlComment comment    = prom.CreateComment("Array field goes here: Length=" + fieldCount);
                    valueElement.AppendChild(comment);
                }
                mainStructElement.AppendChild(valueElement);

                // Add to collection.
                FieldTypes.Add(fieldType);
            }
            return(mainStructElement);
        }
    static void Main(string[] args)
    {
        NameCollection names = new NameCollection();

        names.Add("A");
    }
示例#49
0
 public LinkTo(Action <T> setup, string title = null, NameCollection rel = null)
 {
     this.setup = setup;
     this.title = title;
     this.rel   = rel;
 }
示例#50
0
        private void Actions_ActionExecuting(object sender, ActionEventArgs e)
        {
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            //定义标题
            string taskTitle = fields["Applicant"] + "'s Travel Request ";

            switch (WorkflowContext.Current.Step)
            {
                case "NextApproveTask":
                    if (e.Action.Equals("Approve", StringComparison.CurrentCultureIgnoreCase))
                    {
                        //保存审批人信息
                        fields["Approvers"] = ReturnAllApprovers(fields["Managers"].ToString());
                        fields["ApproversSPUser"] = ReturnAllApproversSP("ApproversSPUser", fields["Managers"].ToString());
                        if (!SPContext.Current.Web.CurrentUser.LoginName.Equals(fields["Managers"].ToString(), StringComparison.CurrentCultureIgnoreCase))
                        {
                            fields["ApproversSPUser"] = ReturnAllApproversSP("ApproversSPUser", SPContext.Current.Web.CurrentUser.LoginName);
                        }

                        string totalCostStr = fields["TravelTotalCost"].ToString();
                        string managerStr = fields["Managers"].ToString();
                        double total = Convert.ToDouble(totalCostStr);
                        //获取配额
                        long quota = GetQuota(managerStr);
                        //当前登录用户是否CEO
                        bool isCEO = IsCEO(managerStr);

                        if (total > quota & isCEO == false)
                        {
                            //获取下一个审批者
                            Employee managerEmp = GetNextApproverEmp(managerStr);
                            if (managerEmp == null)
                            {
                                string errorMsg = @"The applicant\'s budget is greater than your approved amount limits, and your manager is not set in system";
                                DisplayMessage(errorMsg);
                                e.Cancel = true;
                                return;
                            }

                            //Get Task users include deleman
                            var manager = new NameCollection();
                            TravelRequest3Common.GetTaskUsersByModule(manager, managerEmp.UserAccount, "TravelRequestWorkFlow");
                            context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle + "needs approval");
                            context.UpdateWorkflowVariable("NextApproveTaskUsers", manager);
                            context.UpdateWorkflowVariable("IsContinue", true);
                            fields["Status"] = CAWorkflowStatus.InProgress;
                            fields["Managers"] = managerEmp.UserAccount;
                        }
                        else
                        {
                            bool isBusiness = fields["FlightClass"].AsString().Equals("Business", StringComparison.CurrentCultureIgnoreCase);
                            bool isApprove = e.Action.Equals("Approve", StringComparison.CurrentCultureIgnoreCase);

                            //When the flight is Business class, the order should be checked by CEO.
                            if (isCEO == false && isApprove && isBusiness)
                            {
                                var ceos = WorkFlowUtil.UserListInGroup("wf_CEO");
                                NameCollection nCollection = TravelRequest3Common.GetTaskUsersByModuleAndGroup("wf_CEO", "TravelRequestWorkFlow");
                                context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle + "needs approval");
                                context.UpdateWorkflowVariable("NextApproveTaskUsers", nCollection);
                                context.UpdateWorkflowVariable("IsContinue", true);
                                fields["Ceos"] = string.Join(";", ceos.ToArray());
                                fields["Managers"] = nCollection[0];
                            }
                            else
                            {
                                SendMail(false);
                                context.UpdateWorkflowVariable("ConfirmTaskTitle", taskTitle + "needs confirm");
                                context.UpdateWorkflowVariable("ConfirmTaskUsers", TravelRequest3Common.GetTaskUsersByModuleWithoutDeleman("wf_ReceptionCtrip_TR", "TravelRequestWorkFlow"));
                                context.UpdateWorkflowVariable("IsContinue", false);
                            }
                        }

                        var receptionists = WorkFlowUtil.UserListInGroup("wf_ReceptionCtrip_TR");
                        fields["Receptionists"] = string.Join(";", receptionists.ToArray());

                    }
                    else
                    {
                        if (!Validate(e.Action, e))
                        {
                            return;
                        }
                        fields["Status"] = CAWorkflowStatus.Rejected;
                        context.UpdateWorkflowVariable("CompleteTaskTitle", "please resubmit Travel Request");
                        context.UpdateWorkflowVariable("IsContinue", false);
                        SendMail(true);
                    }
                    break;
                case "ConfirmTask":
                    if (e.Action == "Confirm")
                    {
                        SendFinanceMail();

                        fields["Status"] = CAWorkflowStatus.InProgress;
                        SaveToApprovers("Receptionists", "Approvers", "ApproversSPUser");

                        if (fields["IsCashAdvanced"].AsString().Equals("Yes"))
                        {
                            context.UpdateWorkflowVariable("IsNeedFinance", true);
                            context.UpdateWorkflowVariable("FinanceConfirmTaskTitle", taskTitle + "needs confirm");
                            context.UpdateWorkflowVariable("FinanceConfirmTaskFormURL", "/_Layouts/CA/WorkFlows/TravelRequest3/ApproveForm.aspx");
                            context.UpdateWorkflowVariable("FinanceConfirmTaskUsers", TravelRequest3Common.GetTaskUsersByModuleWithoutDeleman(WorkflowGroupName.WF_FinanceConfirm, "TravelRequestWorkFlow"));
                        }
                        else
                        {
                            context.UpdateWorkflowVariable("IsNeedFinance", false);

                            //if (TravelRequest3Common.IsLastTask(Request.QueryString["List"], Request.QueryString["ID"]))
                            //{
                            fields["Status"] = CAWorkflowStatus.Completed;
                            SPFieldUrlValue link = new SPFieldUrlValue();
                            link.Description = "Claim";
                            var rootweburl = GetRootURL(System.Configuration.ConfigurationManager.AppSettings["rootweburl"]);
                            link.Url = rootweburl + "WorkFlowCenter/Lists/TravelExpenseClaim/NewForm.aspx?TRNumber=" + Server.UrlEncode(fields["WorkflowNumber"].ToString());
                            fields["Claim"] = link;
                            //}
                        }
                    }
                    break;
                case "FinanceConfirmTask":
                    if (e.Action == "Confirm")
                    {
                        //if (TravelRequest3Common.IsLastTask(Request.QueryString["List"], Request.QueryString["ID"]))
                        //{
                        fields["Approvers"] = ReturnAllApprovers(fields["Managers"].ToString());
                        fields["ApproversSPUser"] = ReturnAllApproversSP("ApproversSPUser", fields["Managers"].ToString());
                        if (!SPContext.Current.Web.CurrentUser.LoginName.Equals(fields["Managers"].ToString(), StringComparison.CurrentCultureIgnoreCase))
                        {
                            fields["ApproversSPUser"] = ReturnAllApproversSP("ApproversSPUser", SPContext.Current.Web.CurrentUser.LoginName);
                        }
                        fields["Status"] = CAWorkflowStatus.Completed;
                        SPFieldUrlValue link = new SPFieldUrlValue();
                        link.Description = "Claim";
                        var rootweburl = GetRootURL(System.Configuration.ConfigurationManager.AppSettings["rootweburl"]);
                        link.Url = rootweburl + "WorkFlowCenter/Lists/TravelExpenseClaim/NewForm.aspx?TRNumber=" + Server.UrlEncode(fields["WorkflowNumber"].ToString());
                        fields["Claim"] = link;

                        //}
                    }
                    break;
                default:
                    break;
            }

            WorkFlowUtil.UpdateWorkflowPath(context);
        }
示例#51
0
        public static NameCollection GetTaskUsersWithoutDeleman(string group, string moduleId)
        {
            var taskUsers = new NameCollection();
            List<string> groupUsers = null;

            groupUsers = WorkFlowUtil.UserListInGroup(group);
            taskUsers.AddRange(groupUsers.ToArray());

            return taskUsers;
        }
示例#52
0
 public Iterator(NameCollection collection)
 {
     this.collection = collection;
     version         = collection.version;
     index           = -1;
 }
示例#53
0
        private void Actions_ActionExecuting(object sender, CancelEventArgs e)
        {
            var msg = this.DataForm1.ValidateForSubmit();
            var isCEO = false;

            if (msg.IsNotNullOrWhitespace())
            {
                DisplayMessage(msg);
                e.Cancel = true;
                return;
            }

            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;

            fields["Status"] = CAWorkflowStatus.InProgress;

            this.DataForm1.Update(); //Save the inputed data to datatable
            context.UpdateWorkflowVariable("IsSave", false);
            fields["Status"] = CAWorkflowStatus.InProgress;

            var taskTitle = DataForm1.EnglishName + "'s Travel Request ";

            #region Set title for workflow
            //Modify task title
            context.UpdateWorkflowVariable("DepartmentHeadTaskTitle", taskTitle + "needs approval");
            context.UpdateWorkflowVariable("MTMTaskTitle", taskTitle + "needs approval");
            context.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval");
            context.UpdateWorkflowVariable("CEOTaskTitle", taskTitle + "needs approval");
            context.UpdateWorkflowVariable("ReceptionistTaskTitle", taskTitle + "needs confirm");
            #endregion

            #region Set users for workflow
            //Modify task users
            var departmentManagerTaskUsers = new NameCollection();

            //If system can't find the manager, return null;
            var managerEmp = WorkFlowUtil.GetEmployeeApprover(this.DataForm1.Applicant);
            string manager = string.Empty;
            if (managerEmp == null)
            {
                if (!IsCEO(this.DataForm1.Applicant.UserAccount))
                {
                    DisplayMessage("The manager is not set in the system.");
                    e.Cancel = true;
                    return;
                }
                else
                {
                    isCEO = true;
                    manager = this.DataForm1.Applicant.UserAccount;
                }
            }
            else
            {
                manager = managerEmp.UserAccount;
            }

            departmentManagerTaskUsers.Add(manager);

            //0830
            fields["Managers"] = manager;

            var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.TravelRequest);
            if (deleman != null)
            {
                departmentManagerTaskUsers.Add(deleman);
            }
            context.UpdateWorkflowVariable("DepartmentHeadTaskUsers", departmentManagerTaskUsers);
            #endregion

            Employee applicant = this.DataForm1.Applicant;
            fields["Applicant"] = applicant != null ? applicant.DisplayName + "(" + applicant.UserAccount + ")" : string.Empty;
            fields["ApplicantSPUser"] = SPContext.Current.Web.EnsureUser(applicant.UserAccount);
            fields["Department"] = DataForm1.Department;

            decimal totalCost = this.DataForm1.GetTotal();
            if (isCEO)
            {
                context.UpdateWorkflowVariable("IsBusiness", false);
                context.UpdateWorkflowVariable("Total", 0);
            }
            else
            {
                context.UpdateWorkflowVariable("IsBusiness", DataForm1.ChosenFlight);
                //context.UpdateWorkflowVariable("Total", totalCost);
                context.UpdateWorkflowVariable("Total", 0);
            }

            fields["TravelTotalCost"] = totalCost;
            fields["TravelOtherPurpose"] = this.DataForm1.OtherPurpose;
            var isBusiness = this.DataForm1.ChosenFlight ? "Yes" : "No";
            var isNextFlight = this.DataForm1.NextFlight ? "Yes" : "No";
            fields["IsBusiness"] = isBusiness;
            fields["IsNextFlight"] = isNextFlight;
            var flightClass = string.Empty;
            if (isBusiness.Equals("Yes", StringComparison.CurrentCultureIgnoreCase))
            {
                flightClass = "Business";
            }
            else if (isNextFlight.Equals("No", StringComparison.CurrentCultureIgnoreCase))
            {
                flightClass = "Other available flight";
            }
            else
            {
                flightClass = "Economy";
            }
            fields["FlightClass"] = flightClass;

            //Delete all draft items before saving
            TravelRequest2Common.DeleteAllDraftItems(fields["WorkflowNumber"].AsString());

            TravelRequest2Common.SaveDetails(this.DataForm1, fields["WorkflowNumber"].AsString()); //Save request details to lists

            SendMailForSubmit(departmentManagerTaskUsers);
        }
示例#54
0
        /// <summary>
        /// Cria um valor compatível para o tipo indicado com base no conteúdo
        /// do modelo deserializado.
        /// </summary>
        /// <param name="type">O tipo do dado esperado.</param>
        /// <param name="node">O modelo deserializado.</param>
        /// <returns>O valor obtido da compatibilização.</returns>
        private object CreateCompatibleValue(Type type, NodeModel node)
        {
            if (node == null)
            {
                return(null);
            }

            if (type == typeof(PropertyCollection))
            {
                return((PropertyCollection)CreateCompatibleValue(typeof(object), node));
            }

            if (type == typeof(NameCollection))
            {
                var target = new NameCollection();
                foreach (var item in node.ChildValues())
                {
                    target.Add(item.Value.ToString());
                }
                return(target);
            }

            if (type == typeof(FieldCollection))
            {
                var target = new FieldCollection();
                foreach (var @object in node.ChildObjects())
                {
                    var field = new Field();
                    CopyNodeProperties(@object, field);
                    target.Add(field);
                }
                return(target);
            }

            if (type == typeof(LinkCollection))
            {
                var target = new LinkCollection();
                foreach (var item in node.Children())
                {
                    var link = new Link();
                    CopyNodeProperties(item, link);
                    target.Add(link);
                }
                return(target);
            }

            if (type == typeof(EntityActionCollection))
            {
                var target = new EntityActionCollection();
                foreach (var item in node.Children())
                {
                    var action = new EntityAction();
                    CopyNodeProperties(item, action);
                    target.Add(action);
                }
                return(target);
            }

            if (type == typeof(EntityCollection))
            {
                var target = new EntityCollection();
                foreach (var item in node.Children())
                {
                    var entity = new Entity();
                    CopyNodeProperties(item, entity);
                    target.Add(entity);
                }
                return(target);
            }

            if (type == typeof(CaseVariantString))
            {
                var text = (node as ValueModel)?.Value.ToString();
                return(text.ChangeCase(TextCase.PascalCase));
            }

            return(CreateCompatibleValue(node));
        }
示例#55
0
        private void StartWorkflowButton_Executing(object sender, CancelEventArgs e)
        {
            //局部变量定义
            WorkflowContext context = WorkflowContext.Current;
            WorkflowDataFields fields = WorkflowContext.Current.DataFields;
            var departmentManagerTaskUsers = new NameCollection();
            var btn = sender as StartWorkflowButton;
            string manager = string.Empty;
            bool isCeo = false;

            if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                //判断输入数据是否正确,错误则直接返回
                var msg = this.DataForm1.ValidateForSave();
                if (msg.IsNotNullOrWhitespace())
                {
                    DisplayMessage(msg);
                    e.Cancel = true;
                    return;
                }
                fields["Status"] = CAWorkflowStatus.Pending;
                context.UpdateWorkflowVariable("IsSave", true);
                context.UpdateWorkflowVariable("CompleteTaskTitle", "please complete Travel Request");
            }
            else
            {
                //判断输入数据是否正确,错误则直接返回
                var msg = this.DataForm1.ValidateForSubmit();
                if (msg.IsNotNullOrWhitespace())
                {
                    DisplayMessage(msg);
                    e.Cancel = true;
                    return;
                }

                //以下代码获取上级审批人信息
                var managerEmp = WorkFlowUtil.GetNextApprover(this.DataForm1.Applicant.UserAccount);
                if (managerEmp == null)
                {
                    isCeo = IsCEO(DataForm1.Applicant.UserAccount);
                    if (!isCeo)
                    {
                        DisplayMessage("The manager is not set in the system.");
                        e.Cancel = true;
                        return;
                    }
                    else
                    {
                        //获取前台确认的员工
                        departmentManagerTaskUsers = TravelRequest3Common.GetTaskUsersByModuleWithoutDeleman("wf_ReceptionCtrip_TR", "TravelRequestWorkFlow");
                    }
                }
                else
                {
                    manager = managerEmp.UserAccount;
                    departmentManagerTaskUsers.Add(manager);
                }

                var deleman = WorkFlowUtil.GetDeleman(manager, "106");
                if (deleman != null)
                {
                    departmentManagerTaskUsers.Add(deleman);
                }

                context.UpdateWorkflowVariable("IsSave", false);

            }

            //WorkflowNumber
            workflowNumber = CreateTRWorkFlowNumber();
            //首先保存用户输入的数据
            DataForm1.Update();
            //保存详细信息
            TravelRequest3Common.SaveDetails(DataForm1, workflowNumber);
            //保存数据
            Employee applicant = this.DataForm1.Applicant;
            fields["Applicant"] = applicant != null ? applicant.DisplayName + "(" + applicant.UserAccount + ")" : string.Empty;
            fields["ApplicantSPUser"] = SPContext.Current.Web.EnsureUser(applicant.UserAccount);
            fields["Department"] = DataForm1.Department;

            fields["Department"] = this.DataForm1.Department;
            fields["TravelOtherPurpose"] = this.DataForm1.OtherPurpose;
            var isBusiness = this.DataForm1.ChosenFlight;
            var isNextFlight = this.DataForm1.NextFlight;
            var isBookHotel = this.DataForm1.IsBookHotel;
            fields["IsBusiness"] = isBusiness;
            fields["IsNextFlight"] = isNextFlight;
            fields["IsBookHotel"] = !isBookHotel;
            fields["Managers"] = manager;

            var flightClass = string.Empty;
            if (isBusiness)
            {
                flightClass = "Business";
            }
            else if (isNextFlight)
            {
                flightClass = "Other available flight";
            }
            else
            {
                flightClass = "Economy";
            }
            fields["FlightClass"] = flightClass;
            fields["WorkflowNumber"] = workflowNumber;
            fields["TravelTotalCost"] = DataForm1.GetTotal();
            fields["Status"] = CAWorkflowStatus.InProgress;

            //判断是否CEO,若是,则直接跳转到前台确认
            if (isCeo)
            {
                string taskTitle = DataForm1.EnglishName + "'s Travel Request ";
                context.UpdateWorkflowVariable("CompleteTaskTitle", "please submit Travel Request");
                context.UpdateWorkflowVariable("ConfirmTaskTitle", taskTitle + "needs confirm");
                context.UpdateWorkflowVariable("ConfirmTaskUsers", departmentManagerTaskUsers);
                context.UpdateWorkflowVariable("IsCeo", true);
            }
            else
            {
                //定义标题
                string taskTitle = DataForm1.EnglishName + "'s Travel Request ";
                context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle + "needs approval");
                context.UpdateWorkflowVariable("NextApproveTaskUsers", departmentManagerTaskUsers);
                context.UpdateWorkflowVariable("IsContinue", true);
            }

            //设置工作流URL
            var editURL = "/_Layouts/CA/WorkFlows/TravelRequest3/EditForm.aspx";
            var approveURL = "/_Layouts/CA/WorkFlows/TravelRequest3/ApproveForm.aspx";
            context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL);
            context.UpdateWorkflowVariable("NextApproveTaskFormURL", approveURL);
            context.UpdateWorkflowVariable("ConfirmTaskFormURL", approveURL);

            //发送邮件
            if (!string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase))
            {
                SendMailForSubmit(departmentManagerTaskUsers);
            }
            WorkFlowUtil.UpdateWorkflowPath(context);
        }
示例#56
0
 public LinkTo(string href = null, string title = null, NameCollection rel = null)
 {
     this.Href  = href;
     this.Title = title;
     this.Rel   = rel ?? RelNames.Link;
 }