示例#1
0
        // <summary>
        /// 取得員工簽核人員
        /// </summary>
        /// <param name="userGuid"></param>
        /// <returns></returns>
        public UserSet GetUserSinger(string userGuid)
        {
            UserSet   userSet = new UserSet();
            UserUCO   userUCO = new UserUCO();
            EBUser    ebUser  = userUCO.GetEBUser(userGuid);
            BaseGroup baseGp  = ebUser.GetEmployeeDepartment(DepartmentOfUser.Major).Department;

            //找出所有簽核人員
            if (CheckIsDeptSigner(ebUser.UserGUID, baseGp.GroupId) == false)
            {
                AddSignerToUserSet(baseGp.GroupId, userSet);
            }
            else
            {
                //如果目前的簽核人員
                if (baseGp.ParnetGroup != null)
                {
                    AddSignerToUserSet(baseGp.ParnetGroup.GroupId, userSet);
                }
            }



            return(userSet);
        }
 protected void bcoMan_EditButtonOnClick(string[] choiceResult)
 {
     if (choiceResult.Length >= 1)
     {
         UserUCO userUCO = new UserUCO();
         //EBUser eBUser = userUCO.GetEBUser(choiceResult[0]);
         KYT_EBUser KUser = new KYT_UserPO().GetUserDetailByUserGuid(choiceResult[0]); // 人員
         txtAPPLICANT.Text      = KUser.Name;
         hidAPPLICANTGUID.Value = KUser.UserGUID;
     }
 }
示例#3
0
        /// <summary>
        /// 檢查是否是否是部門主管
        /// </summary>
        /// <returns></returns>
        private bool CheckIsDeptSuperior(string userGUID, string groupId)
        {
            UserUCO userUco    = new UserUCO();
            bool    IsSuperior = false;
            EBUser  ebUser     = userUco.GetEBUser(userGUID);
            EmployeeJobFunctionCollection employeeJobFunctionCollection = ebUser.GetJobFunctionsOfDepartment(groupId);

            //判斷是否是簽核者,
            for (int i = 0; i < employeeJobFunctionCollection.Count; i++)
            {
                if (employeeJobFunctionCollection[i].FunctionId == "Superior")
                {
                    IsSuperior = true;
                    break;
                }
            }

            return(IsSuperior);
        }
示例#4
0
        public string GetExternalDllSites(string formInfo)
        {
            XmlDocument    xmlDoc     = new XmlDocument();
            XmlDocument    formXmlDoc = new XmlDocument();
            DatabaseHelper DbQueryCompanyTopAccount = new DatabaseHelper();
            DatabaseHelper DbQueryGroupName         = new DatabaseHelper();
            UserUCO        userUCO   = new UserUCO();
            DataSet        GroupName = new DataSet();


            formXmlDoc.LoadXml(formInfo);
            account  = formXmlDoc.SelectSingleNode("/ExternalFlowSite/ApplicantInfo").Attributes["account"].Value;
            userGuid = userUCO.GetGUID(account);
            EBUser ebUser = userUCO.GetEBUser(userGuid);

            DEPNAME = ebUser.GroupName;

            //找出公司內最高的主管account
            CompanyTopAccountDS = DbQueryCompanyTopAccount.ExecuteDataSet("SELECT TOP 1 CompanyTopAccount FROM [UOFTEST].[dbo].[CompanyTopAccount]");
            CompanyTopAccount   = CompanyTopAccountDS.Tables[0].Rows[0]["CompanyTopAccount"].ToString();

            GroupName = DbQueryGroupName.ExecuteDataSet("SELECT  [GroupName]   FROM [UOFTEST].[dbo].[GROUPNAMETOEF]");
            //判斷是不是指定部門,可由簽至副理就結束
            foreach (DataRow dr in GroupName.Tables[0].Rows)
            {
                if (DEPNAME.Equals(dr["GroupName"].ToString()))
                {
                    SpecialGroupName = "Y";
                    break;
                }
                else
                {
                    SpecialGroupName = "N";
                }
            }

            //找出所有簽核人員,包含主管
            FINDALLSINGER(userGuid);

            return(sites.ConvertToXML());
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            //申請者姓名
            UserUCO userUCO1 = new UserUCO();
            EBUser  eBUser   = userUCO1.GetEBUser(base.ApplicantGroupId);
            hdApplicant.Value = eBUser.Name;

            //申請部門
            GroupUCO groupUCO = new GroupUCO(GroupType.Department);
            hdDept.Value = groupUCO.QueryDepartmentName(base.ApplicantGroupId);
        }
        catch
        {
        }
        // base.ApplicantGroupId
        //這裡不用修改
        //欄位的初始化資料都到SetField Method去做
        SetField(m_versionField);
    }
示例#6
0
        // <summary>
        /// 取得員工直屬主管
        /// </summary>
        /// <param name="userGuid"></param>
        /// <returns></returns>
        public UserSet GetUserSuperior(string userGuid)
        {
            UserSet   userSet = new UserSet();
            UserUCO   userUCO = new UserUCO();
            EBUser    ebUser  = userUCO.GetEBUser(userGuid);
            BaseGroup baseGp  = ebUser.GetEmployeeDepartment(DepartmentOfUser.Major).Department;

            //如果目前簽核人員不是部門主管,那就要找尋該人員目前部門的主管
            if (CheckIsDeptSuperior(ebUser.UserGUID, baseGp.GroupId) == false)
            {
                AddSuperiorToUserSet(baseGp.GroupId, userSet);
            }
            else
            {
                //如果目前的簽核人員是部門主管,則要找尋上一個部門的主管
                if (baseGp.ParnetGroup != null)
                {
                    AddSuperiorToUserSet(baseGp.ParnetGroup.GroupId, userSet);
                }
            }

            return(userSet);
        }
示例#7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        this.ConnectionString = new DatabaseHelper().Command.Connection.ConnectionString;
        ((Master_DialogMasterPage)this.Master).Button2Text = ""; // Button2不顯示
        ((Master_DialogMasterPage)this.Master).Button1Text = ""; // Button1不顯示

        string groupID = Request["GROUPID"] != null?HttpUtility.UrlDecode(Request["GROUPID"]) : "Company";

        string selectedUsers = Request["selectedUsers"] != null?HttpUtility.UrlDecode(Request["selectedUsers"]) : "";

        JArray jArray = null;

        try { jArray = JArray.Parse(selectedUsers); } catch { }
        isSingle = Request["isSingle"] != null?HttpUtility.UrlDecode(Request["isSingle"]).ToUpper() == "Y" : false;

        isGroup = Request["isGroup"] != null?HttpUtility.UrlDecode(Request["isGroup"]).ToUpper() == "Y" : false;

        string groupConnectionString = this.ConnectionString;
        string userConnectionString  = this.ConnectionString;
        string groupSql = Request["GroupSql"] != null?HttpUtility.UrlDecode(Request["GroupSql"]) : "";

        string userSql = Request["UserSql"] != null?HttpUtility.UrlDecode(Request["UserSql"]) : "";

        string searchSql = Request["SearchSql"] != null?HttpUtility.UrlDecode(Request["SearchSql"]) : "";

        bool isSearchSelfGroupUsers = Request["isSearchSelfGroupUsers"] != null?HttpUtility.UrlDecode(Request["isSearchSelfGroupUsers"]).ToUpper() == "Y" : false;

        if (isSearchSelfGroupUsers)
        {
            userSql = string.Format(@"
                SELECT [ACCOUNT],
	                   [NAME] + '(' +[TB_EB_USER].[ACCOUNT] + ')' AS 'NAME',
	                   [USER_GUID],
	                   '' AS 'GROUP_ID' 
                  FROM TB_EB_USER 
                 WHERE USER_GUID IN (SELECT USER_GUID
				                        FROM TB_EB_EMPL_DEP 
				                       WHERE GROUP_ID = @GROUP_ID) 
                   AND IS_SUSPENDED = 0 
                   AND (EXPIRE_DATE IS NULL 
	                   OR EXPIRE_DATE > GETDATE())"    );
        }

        bool isUserOnly = !string.IsNullOrEmpty(userSql);

        if (string.IsNullOrEmpty(groupSql))
        {
            groupSql = @"
             DECLARE @TABLE TABLE(
                    GROUP_ID NVARCHAR(50)
                    )

        INSERT INTO @TABLE
             SELECT GROUP_ID
               FROM TB_EB_GROUP
              WHERE GROUP_ID = @GROUP_ID
              WHILE @@ROWCOUNT > 0 
                BEGIN
                  INSERT INTO @TABLE --找到所有下層部門
                       SELECT GROUP_ID
                         FROM TB_EB_GROUP
                        WHERE PARENT_GROUP_ID IN(SELECT GROUP_ID
                                                   FROM @TABLE)
                          AND GROUP_ID NOT IN(SELECT GROUP_ID
                                                FROM @TABLE)
                          AND (ACTIVE = 1 OR ACTIVE IS NULL) --表示沒停用
                END
                SELECT * FROM TB_EB_GROUP WHERE GROUP_ID IN (SELECT GROUP_ID FROM @TABLE)
        ";
        }
        if (string.IsNullOrEmpty(userSql))
        {
            userSql = @"
	        SELECT [TB_EB_USER].[USER_GUID],
				   [GROUP_ID],
		           [NAME] + '(' +[TB_EB_USER].[ACCOUNT] + ')' AS 'NAME',
		           [TB_EB_USER].[ACCOUNT] AS 'ACCOUNT'
	          FROM [TB_EB_EMPL_DEP]
	    INNER JOIN [TB_EB_USER]
				ON TB_EB_EMPL_DEP.GROUP_ID = @GROUP_ID
			   AND TB_EB_EMPL_DEP.USER_GUID = TB_EB_USER.USER_GUID
			   AND (IS_SUSPENDED = 0 
				OR IS_SUSPENDED IS NULL)
			   AND (EXPIRE_DATE IS NULL 
				OR EXPIRE_DATE > GETDATE())
        ";
        }
        if (string.IsNullOrEmpty(searchSql))
        {
            searchSql = @"
	        SELECT [TB_EB_USER].[USER_GUID],
				   [GROUP_ID],
		           [NAME] + '(' +[TB_EB_USER].[ACCOUNT] + ')' AS 'NAME',
		           [TB_EB_USER].[ACCOUNT] AS 'ACCOUNT'
	          FROM [TB_EB_EMPL_DEP]
	    INNER JOIN [TB_EB_USER]
				ON TB_EB_EMPL_DEP.GROUP_ID IN ({0})
               AND ([TB_EB_USER].[ACCOUNT] LIKE '%' + @SEARCHTEXT + '%' OR [TB_EB_USER].[NAME] LIKE '%' + @SEARCHTEXT + '%')
			   AND TB_EB_EMPL_DEP.USER_GUID = TB_EB_USER.USER_GUID
			   AND (IS_SUSPENDED = 0 
				OR IS_SUSPENDED IS NULL)
			   AND (EXPIRE_DATE IS NULL 
				OR EXPIRE_DATE > GETDATE())
        ";
        }
        this.GroupInfo  = this.DataToDictionary(string.Format("{0}^{1}", groupConnectionString, groupSql));
        this.UserInfo   = this.DataToDictionary(string.Format("{0}^{1}", userConnectionString, userSql));
        this.SearchInfo = this.DataToDictionary(string.Format("{0}^{1}", userConnectionString, searchSql));

        if (this.isGroup)
        {
            Right1.Attributes["Class"] = "Right1 SelectGroup";
            Right2.Attributes["Class"] = "Right2 hidden";
        }
        else
        {
            Right1.Attributes["Class"]  = "Right1";
            Right2.Attributes["Class"]  = "Right2 SelectUser";
            btnOpen.Attributes["Class"] = "hidden btnOpen SelectUser";
        }

        if (!Page.IsPostBack) // 首次載入網頁
        {
            gvMain.DataSource = this.GetGroup(groupID);
            gvMain.DataBind();
            gvSelect.DataSource = this.CreategvSelect("gvSelect");
            gvSelect.DataBind();
            if (jArray != null)
            {
                foreach (JObject jObj in jArray)
                {
                    string    str_group = jObj["Group"].ToString();
                    DataTable dt        = (DataTable)ViewState["gvSelect"];
                    foreach (string str in jObj["Users"])
                    {
                        DataRow dr   = dt.NewRow();
                        EBUser  user = new UserUCO().GetEBUser(str);
                        dr["GROUP_ID"] = str_group;
                        string[] AccStr = user.Account.Split('\\');
                        dr["ACCOUNT"] = AccStr.Length > 1 ? AccStr[1] : AccStr[0];
                        dr["GUID"]    = str;
                        dr["NAME"]    = string.Format("{0}({1})", user.Name, user.Account);
                        dt.Rows.Add(dr);
                    }
                    ViewState["gvSelect"] = dt;
                    gvSelect.DataSource   = dt;
                    gvSelect.DataBind();
                }
            }
            if (gvMain.Rows.Count > 0)
            {
                chkGROUPID_CheckedChanged(gvMain.Rows[0].FindControl("chkGROUPID"), null);
            }
            Right1.Visible = !isUserOnly;
        }
        else // 如果是POSTBACK
        {
        }
    }
示例#8
0
        public void insertData(DataTable p_dtImport)
        {
            this.m_db.BeginTransaction();
            try
            {
                DateTime l_dt    = DateTime.Now;
                string   l_dtstr = l_dt.ToString("yyyy-MM-dd HH:mm:sss");
                for (int i = 0; i < p_dtImport.Rows.Count; i++)
                {
                    string l_strUser_Guid = Guid.NewGuid().ToString();
                    //先刪除舊有的資料
                    string l_ACCOUNT = p_dtImport.Rows[i]["員工編號"].ToString();
                    string l_Email   = p_dtImport.Rows[i]["伊媚兒"].ToString();

                    string l_USER_GUID = getUSER_GUIDbyACCOUNT(l_ACCOUNT);
                    if (!l_USER_GUID.Equals(""))
                    {
                        DeleteTB_EB_USER(l_USER_GUID);
                        DeleteTB_EB_EMPL_DEP(l_USER_GUID);
                        DeleteTB_EB_EMPL_FUNC(l_USER_GUID);
                        DeleteTB_EB_EMPL(l_USER_GUID);
                        DeleteTB_EB_EMPL_HR(l_USER_GUID);
                        DeleteTB_EB_EMPL_HR_EDUACTION(l_USER_GUID);
                    }

                    //新增員工主檔
                    UserUCO userUCO    = new UserUCO();
                    string  l_PASSWORD = userUCO.HashPassword(p_dtImport.Rows[i]["員工編號"].ToString(), "");

                    string l_NAME    = p_dtImport.Rows[i]["員工姓名"].ToString();
                    string l_SID     = p_dtImport.Rows[i]["身分證字號"].ToString();
                    string l_OPTION1 = p_dtImport.Rows[i]["職等名稱"].ToString();
                    insertTB_EB_USER(l_strUser_Guid, l_ACCOUNT, l_NAME, l_PASSWORD, l_Email, l_dtstr, l_SID, l_OPTION1);

                    //新增部門&職級
                    string l_GroupID   = Utility.ReturnGROUP_ID(p_dtImport.Rows[i]["單位名稱"].ToString());
                    string l_TITLENAME = getTITLEIDbyTITLENAME(p_dtImport.Rows[i]["職稱名稱"].ToString());
                    insertTB_EB_EMPL_DEP(l_strUser_Guid, l_GroupID, l_TITLENAME);

                    //新增職務
                    string l_FUNC_ID = getFUNC_IDbyFUNC_NAME(p_dtImport.Rows[i]["職務名稱"].ToString());
                    insertTB_EB_EMPL_FUN(l_strUser_Guid, l_GroupID, l_FUNC_ID);

                    //新增兵役
                    string l_MILITARY_SERVICE = p_dtImport.Rows[i]["服役名稱"].ToString();
                    string l_MARRIED          = CoreMARRIED(p_dtImport.Rows[i]["婚姻狀況"].ToString());
                    insertTB_EB_EMPL_HR(l_strUser_Guid, l_MARRIED, l_MILITARY_SERVICE);

                    //新增學歷
                    string l_EDUC_ID = getEDUC_IDbyEDUC_NAME(p_dtImport.Rows[i]["教育程度"].ToString());
                    string l_SCHOOL  = p_dtImport.Rows[i]["畢業學校"].ToString();
                    string l_MAJOR   = p_dtImport.Rows[i]["科系名稱"].ToString();
                    insertTB_EB_EMPL_HR_EDUACTION(l_strUser_Guid, l_EDUC_ID, l_SCHOOL, l_MAJOR);

                    //新增員工
                    string l_SEX         = CoreSEX(p_dtImport.Rows[i]["性別"].ToString());
                    string l_BIRTHDAY    = p_dtImport.Rows[i]["出生年月日"].ToString();
                    string l_ARRIVE_DATE = p_dtImport.Rows[i]["到職日"].ToString();
                    insertTB_EB_EMPL(l_strUser_Guid, l_EDUC_ID, l_ARRIVE_DATE, l_BIRTHDAY, l_SEX);
                }
                this.m_db.CommitTransaction();
            }
            catch (Exception ex)
            {
                this.m_db.RollbackTransaction();
                throw ex;
            }
        }
示例#9
0
        public string GetExternalDllSites(string formInfo)
        {
            XmlDocument    formXmlDoc       = new XmlDocument();
            DatabaseHelper DbQuery          = new DatabaseHelper();
            UserUCO        userUCO          = new UserUCO();
            DataSet        GroupName        = new DataSet();
            string         SpecialGroupName = "N";

            formXmlDoc.LoadXml(formInfo);
            string account  = formXmlDoc.SelectSingleNode("/ExternalFlowSite/ApplicantInfo").Attributes["account"].Value;
            string userGuid = userUCO.GetGUID(account);
            EBUser ebUser   = userUCO.GetEBUser(userGuid);
            string DEPNAME  = ebUser.GroupName;

            GroupName = DbQuery.ExecuteDataSet("SELECT  [GroupName]   FROM [UOFTEST].[dbo].[GROUPNAMETOEF]");
            //判斷是不是指定部門,可由簽至副理就結束
            foreach (DataRow dr in GroupName.Tables[0].Rows)
            {
                if (DEPNAME.Equals(dr["GroupName"].ToString()))
                {
                    SpecialGroupName = "Y";
                    break;
                }
                else
                {
                    SpecialGroupName = "N";
                }
            }


            //找到申請者的第1層主管
            userSet1 = GetUserSuperior(userGuid);
            UserUCO userUCOsinger1 = new UserUCO();

            if (userSet1.Items.Count > 0)
            {
                EBUser ebUsersinger1 = userUCOsinger1.GetEBUser(userSet1.Items[0].Key);
                singer1 = ebUsersinger1.Account;

                //主管的職級是理級以上就停止,不是就往上找
                if (ebUsersinger1.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 7)
                {
                    singer2 = null;
                }
                //如果指定部門的主管是副理以上就停止,不是就往上找
                else if (SpecialGroupName.Equals("Y") && ebUsersinger1.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 9)
                {
                    singer2 = null;
                }
                else
                {
                    //找到申請者的第2層主管
                    userSet2 = GetUserSuperior(userSet1.Items[0].Key);
                    UserUCO userUCOsinger2 = new UserUCO();
                    if (userSet2.Items.Count > 0)
                    {
                        EBUser ebUsersinger2 = userUCOsinger2.GetEBUser(userSet2.Items[0].Key);
                        singer2 = ebUsersinger2.Account;

                        //主管的職級是理級以上就停止,不是就往上找
                        if (ebUsersinger2.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 7)
                        {
                            singer3 = null;
                        }
                        //如果指定部門的主管是副理以上就停止,不是就往上找
                        else if (SpecialGroupName.Equals("Y") && ebUsersinger2.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 9)
                        {
                            singer3 = null;
                        }
                        else
                        {
                            //找到申請者的第3層主管
                            userSet3 = GetUserSuperior(userSet2.Items[0].Key);
                            UserUCO userUCOsinger3 = new UserUCO();
                            if (userSet3.Items.Count > 0)
                            {
                                EBUser ebUsersinger3 = userUCOsinger3.GetEBUser(userSet3.Items[0].Key);
                                singer3 = ebUsersinger3.Account;
                            }
                            else
                            {
                                singer3 = null;
                            }
                        }
                    }
                    else
                    {
                        singer2 = null;
                    }
                }
            }
            else
            {
                singer1 = null;
            }



            //singer1 = "190052";
            //singer2 = "120002";
            //singer3 = "admin";

            //if (ebUser.HasJobFunction("Superior"))
            //{
            //    signer = "admin";
            //}
            //else
            //{
            //    signer = "Tony";
            //}

            XmlDocument xmlDoc = new XmlDocument();

            if (!string.IsNullOrEmpty(singer3))
            {
                //<ReturnValue></ReturnValue>
                XmlElement returnValueElement = xmlDoc.CreateElement("ReturnValue");
                //<Flow></Flow>
                XmlElement flowElement = xmlDoc.CreateElement("Flow");
                //<Site></Site> 第1層
                XmlElement siteElement = xmlDoc.CreateElement("Site");
                //<Site order='' signType='' ></Site>
                siteElement.SetAttribute("order", "0");
                siteElement.SetAttribute("signType", "0");

                //<Signers></Signers>
                XmlElement signersElement = xmlDoc.CreateElement("Signers");
                //<Signer></Signer>
                XmlElement signerElement = xmlDoc.CreateElement("Signer");
                //<Signer account='' />
                signerElement.SetAttribute("account", singer1);
                //<Signers>
                //  <Signer account='' />
                //</Signers>
                signersElement.AppendChild(signerElement);
                //<Site order='' signType='' >
                //  <Signers>
                //      <Signer account='' />
                //  </Signers>
                //</Site>
                siteElement.AppendChild(signersElement);

                flowElement.AppendChild(siteElement);

                //<Site></Site> 第2層
                siteElement = xmlDoc.CreateElement("Site");
                //<Site order='' signType='' ></Site>
                siteElement.SetAttribute("order", "1");
                siteElement.SetAttribute("signType", "0");

                //<Signers></Signers>
                signersElement = xmlDoc.CreateElement("Signers");
                //<Signer></Signer>
                signerElement = xmlDoc.CreateElement("Signer");
                //<Signer account='' />
                signerElement.SetAttribute("account", singer2);
                //<Signers>
                //  <Signer account='' />
                //</Signers>
                signersElement.AppendChild(signerElement);
                //<Site order='' signType='' >
                //  <Signers>
                //      <Signer account='' />
                //  </Signers>
                //</Site>
                siteElement.AppendChild(signersElement);

                flowElement.AppendChild(siteElement);

                //<Site></Site> 第3層
                siteElement = xmlDoc.CreateElement("Site");
                //<Site order='' signType='' ></Site>
                siteElement.SetAttribute("order", "2");
                siteElement.SetAttribute("signType", "0");

                //<Signers></Signers>
                signersElement = xmlDoc.CreateElement("Signers");
                //<Signer></Signer>
                signerElement = xmlDoc.CreateElement("Signer");
                //<Signer account='' />
                signerElement.SetAttribute("account", singer3);
                //<Signers>
                //  <Signer account='' />
                //</Signers>
                signersElement.AppendChild(signerElement);
                //<Site order='' signType='' >
                //  <Signers>
                //      <Signer account='' />
                //  </Signers>
                //</Site>
                siteElement.AppendChild(signersElement);

                flowElement.AppendChild(siteElement);



                //<ReturnValue>
                //  <Flow>
                //    <Site order="0" signType="0">
                //      <Signers>
                //        <Signer account ="Tony"/>
                //      </Signers>
                //    </Site>

                //  </Flow>
                //</ReturnValue>


                returnValueElement.AppendChild(flowElement);
                xmlDoc.AppendChild(returnValueElement);
            }
            else if (!string.IsNullOrEmpty(singer2))
            {
                //<ReturnValue></ReturnValue>
                XmlElement returnValueElement = xmlDoc.CreateElement("ReturnValue");
                //<Flow></Flow>
                XmlElement flowElement = xmlDoc.CreateElement("Flow");
                //<Site></Site> 第1層
                XmlElement siteElement = xmlDoc.CreateElement("Site");
                //<Site order='' signType='' ></Site>
                siteElement.SetAttribute("order", "0");
                siteElement.SetAttribute("signType", "0");

                //<Signers></Signers>
                XmlElement signersElement = xmlDoc.CreateElement("Signers");
                //<Signer></Signer>
                XmlElement signerElement = xmlDoc.CreateElement("Signer");
                //<Signer account='' />
                signerElement.SetAttribute("account", singer1);
                //<Signers>
                //  <Signer account='' />
                //</Signers>
                signersElement.AppendChild(signerElement);
                //<Site order='' signType='' >
                //  <Signers>
                //      <Signer account='' />
                //  </Signers>
                //</Site>
                siteElement.AppendChild(signersElement);

                flowElement.AppendChild(siteElement);

                //<Site></Site> 第2層
                siteElement = xmlDoc.CreateElement("Site");
                //<Site order='' signType='' ></Site>
                siteElement.SetAttribute("order", "1");
                siteElement.SetAttribute("signType", "0");

                //<Signers></Signers>
                signersElement = xmlDoc.CreateElement("Signers");
                //<Signer></Signer>
                signerElement = xmlDoc.CreateElement("Signer");
                //<Signer account='' />
                signerElement.SetAttribute("account", singer2);
                //<Signers>
                //  <Signer account='' />
                //</Signers>
                signersElement.AppendChild(signerElement);
                //<Site order='' signType='' >
                //  <Signers>
                //      <Signer account='' />
                //  </Signers>
                //</Site>
                siteElement.AppendChild(signersElement);

                flowElement.AppendChild(siteElement);

                returnValueElement.AppendChild(flowElement);
                xmlDoc.AppendChild(returnValueElement);
            }
            else if (!string.IsNullOrEmpty(singer1))
            {
                //<ReturnValue></ReturnValue>
                XmlElement returnValueElement = xmlDoc.CreateElement("ReturnValue");
                //<Flow></Flow>
                XmlElement flowElement = xmlDoc.CreateElement("Flow");
                //<Site></Site> 第1層
                XmlElement siteElement = xmlDoc.CreateElement("Site");
                //<Site order='' signType='' ></Site>
                siteElement.SetAttribute("order", "0");
                siteElement.SetAttribute("signType", "0");

                //<Signers></Signers>
                XmlElement signersElement = xmlDoc.CreateElement("Signers");
                //<Signer></Signer>
                XmlElement signerElement = xmlDoc.CreateElement("Signer");
                //<Signer account='' />
                signerElement.SetAttribute("account", singer1);
                //<Signers>
                //  <Signer account='' />
                //</Signers>
                signersElement.AppendChild(signerElement);
                //<Site order='' signType='' >
                //  <Signers>
                //      <Signer account='' />
                //  </Signers>
                //</Site>
                siteElement.AppendChild(signersElement);

                flowElement.AppendChild(siteElement);

                returnValueElement.AppendChild(flowElement);
                xmlDoc.AppendChild(returnValueElement);
            }

            return(xmlDoc.OuterXml);
        }
示例#10
0
        public void FINDALLSINGER(string userGuid)
        {
            UserUCO userUCO = new UserUCO();
            EBUser  ebUser  = userUCO.GetEBUser(userGuid);
            EBUser  ebUserHasJobFunction = userUCO.GetEBUser(userGuid);

            //找到申請者的所有簽核者和主管
            while (FLAGGO == true)
            {
                BaseGroup baseGroup = new BaseGroup(ebUser.GroupID);

                //如果沒有上層的部門就停止
                if (baseGroup.ParnetGroup == null)
                {
                    FLAGGO = false;
                    //break;
                }
                else
                {
                    Lib.WKF.ExternalDllSite site1 = new Lib.WKF.ExternalDllSite();
                    site1.SignType = Lib.WKF.SignType.And;
                    Lib.WKF.ExternalDllSite site2 = new Lib.WKF.ExternalDllSite();
                    //loop start
                    userSet1 = GetUserSinger(userGuid);

                    if (userSet1.Items.Count > 0)
                    {
                        for (int i = 0; i < userSet1.Items.Count; i++)
                        {
                            ebUserHasJobFunction = userUCO.GetEBUser(userSet1.Items[i].Key);

                            if (!ebUserHasJobFunction.HasJobFunction("Superior"))
                            {
                                //申請者不用再當簽核者
                                if (!account.Equals(ebUserHasJobFunction.Account))
                                {
                                    site1.Signers.Add(ebUserHasJobFunction.Account);
                                    //add site1 singer
                                }
                            }
                            else
                            {
                                site2.Signers.Add(ebUserHasJobFunction.Account);
                                //add site2 singer

                                EBUserSuperior = ebUserHasJobFunction;
                            }
                            //loop end
                        }

                        //有找到簽核人員才新增簽核
                        if (site1.Signers.Count > 0)
                        {
                            sites.Sites.Add(site1);
                        }

                        //有找到主管新增簽核
                        if (site2.Signers.Count > 0)
                        {
                            sites.Sites.Add(site2);
                        }
                    }
                }

                //如果沒有找到最高主管就繼續找上層部門的簽核人員+主管
                if (!EBUserSuperior.Account.Equals(CompanyTopAccount))
                {
                    //FINDALLSINGER(Superior);

                    //主管的職級是理級以上就停止,不是就往上找
                    if (SpecialGroupName.Equals("N") && EBUserSuperior.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 7)
                    {
                        FLAGGO = false;
                    }
                    //如果指定部門的主管是副理以上就停止,不是就往上找
                    else if (SpecialGroupName.Equals("Y") && EBUserSuperior.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 9)
                    {
                        FLAGGO = false;
                    }
                    else
                    {
                        FINDALLSINGER(EBUserSuperior.UserGUID);
                    }
                }
                //如果找到最高主管就停止
                else
                {
                    FLAGGO = false;
                    //break;
                }
            }
        }