using System; using System.Collections.Generic; using System.Text; using Wellan.Common; using System.Data; using System.Data.Common; namespace Education { /// /// 員工權限 /// public class BWCPE_DAC : DAC { private DbCommand cmdSelect = null; private DbCommand cmdSelectRight = null; private DbCommand cmdCheckExist = null; private DbCommand cmdInsert = null; private DbCommand cmdUpdate = null; public BWCPE_DAC() { } public BWCPE_DAC(string connectionConfig, string connectionConfigName) : base(connectionConfig, connectionConfigName) { } private void PrepareSql() { EnsureQuery(); string tblBwcpe = WGuard1.WCFA("BWCPE"); if (cmdSelect == null) { cmdSelect = Query.NewCommand(Query.ReplaceParamNamePrefix( "SELECT B.BPPRG AS BPPRG, B.BPENO AS BPENO, A.BPENO AS BBPENO, A.BPNME AS BBPNME, " + " B.BPRT1 AS BPRT1, B.BPRTI AS BPRTI, B.BPRTM AS BPRTM, B.BPRTD AS BPRTD, " + " B.BPRTF AS BPRTF, B.BPRTP AS BPRTP, B.TRDAT AS TRDAT, B.TRMOD AS TRMOD, " + " B.TRUSR AS TRUSR " + " FROM " + WGuard1.WCFA("BPSN") + " A " + " LEFT OUTER JOIN " + tblBwcpe + " B ON A.BPENO=B.BPENO AND B.BPPRG=@BPPRG " + " WHERE A.BPEDY IS NULL AND A.BPENO <> '  ' " + " ORDER BY A.BPENO ")); cmdSelect.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString)); } if (cmdCheckExist == null) { cmdCheckExist = Query.NewCommand(Query.ReplaceParamNamePrefix("SELECT COUNT(1) FROM " + tblBwcpe + " WHERE BPPRG=@BPPRG AND BPENO=@BPENO")); cmdCheckExist.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString)); cmdCheckExist.Parameters.Add(Query.NewParameter("BPENO", DbType.AnsiString)); } if (cmdInsert == null) { cmdInsert = Query.NewCommand(Query.ReplaceParamNamePrefix( "INSERT INTO " + tblBwcpe + " (BPPRG, BPENO, BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP, TRDAT, TRMOD, TRUSR) " + " VALUES (@BPPRG, @BPENO, @BPRT1, @BPRTI, @BPRTM, @BPRTD, @BPRTF, @BPRTP, @TRDAT, 'INSERT', @TRUSR)")); cmdInsert.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString)); cmdInsert.Parameters.Add(Query.NewParameter("BPENO", DbType.AnsiString)); cmdInsert.Parameters.Add(Query.NewParameter("BPRT1", DbType.AnsiString)); cmdInsert.Parameters.Add(Query.NewParameter("BPRTI", DbType.AnsiString)); cmdInsert.Parameters.Add(Query.NewParameter("BPRTM", DbType.AnsiString)); cmdInsert.Parameters.Add(Query.NewParameter("BPRTD", DbType.AnsiString)); cmdInsert.Parameters.Add(Query.NewParameter("BPRTF", DbType.AnsiString)); cmdInsert.Parameters.Add(Query.NewParameter("BPRTP", DbType.AnsiString)); cmdInsert.Parameters.Add(Query.NewParameter("TRDAT", DbType.DateTime)); cmdInsert.Parameters.Add(Query.NewParameter("TRUSR", DbType.AnsiString)); } if (cmdUpdate == null) { cmdUpdate = Query.NewCommand(Query.ReplaceParamNamePrefix( "UPDATE " + tblBwcpe + " SET BPRT1=@BPRT1, BPRTI=@BPRTI, BPRTM=@BPRTM, BPRTD=@BPRTD, BPRTF=@BPRTF," + " BPRTP=@BPRTP, TRDAT=@TRDAT, TRMOD='UPDATE', TRUSR=@TRUSR" + " WHERE BPPRG=@BPPRG AND BPENO=@BPENO")); cmdUpdate.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString)); cmdUpdate.Parameters.Add(Query.NewParameter("BPENO", DbType.AnsiString)); cmdUpdate.Parameters.Add(Query.NewParameter("BPRT1", DbType.AnsiString)); cmdUpdate.Parameters.Add(Query.NewParameter("BPRTI", DbType.AnsiString)); cmdUpdate.Parameters.Add(Query.NewParameter("BPRTM", DbType.AnsiString)); cmdUpdate.Parameters.Add(Query.NewParameter("BPRTD", DbType.AnsiString)); cmdUpdate.Parameters.Add(Query.NewParameter("BPRTF", DbType.AnsiString)); cmdUpdate.Parameters.Add(Query.NewParameter("BPRTP", DbType.AnsiString)); cmdUpdate.Parameters.Add(Query.NewParameter("TRDAT", DbType.DateTime)); cmdUpdate.Parameters.Add(Query.NewParameter("TRUSR", DbType.AnsiString)); } if (cmdSelectRight == null) { cmdSelectRight = Query.NewCommand(Query.ReplaceParamNamePrefix( "SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP " + " FROM " + tblBwcpe + " WHERE BPPRG=@BPPRG AND BPENO=@BPENO ")); cmdSelectRight.Parameters.Add(Query.NewParameter("BPPRG", DbType.AnsiString)); cmdSelectRight.Parameters.Add(Query.NewParameter("BPENO", DbType.AnsiString)); } } public DataTable Select(string bpprg) { PrepareSql(); cmdSelect.Parameters["BPPRG"].Value = bpprg; return Query.Select(cmdSelect); } public bool CheckExist(string bpprg, string bpeno) { PrepareSql(); cmdCheckExist.Parameters["BPPRG"].Value = bpprg; cmdCheckExist.Parameters["BPENO"].Value = bpeno; int i = Convert.ToInt16(Query.ExecuteScalar(cmdCheckExist)); return !(i == 0); } public void Insert(string bpprg, string bpeno, string bprt1, string bprti, string bprtm, string bprtd, string bprtf, string bprtp) { PrepareSql(); FillParameters(cmdInsert, bpprg, bpeno, bprt1, bprti, bprtm, bprtd, bprtf, bprtp); Query.ExecuteNonQuery(cmdInsert); } public void Update(string bpprg, string bpeno, string bprt1, string bprti, string bprtm, string bprtd, string bprtf, string bprtp) { PrepareSql(); FillParameters(cmdUpdate, bpprg, bpeno, bprt1, bprti, bprtm, bprtd, bprtf, bprtp); Query.ExecuteNonQuery(cmdUpdate); } public void SetAllRight(string bpprg, string bpeno, bool right) { string r = right ? "Y" : "N"; if (!CheckExist(bpprg, bpeno)) { Insert(bpprg, bpeno, r, r, r, r, r, r); } else { Update(bpprg, bpeno, r, r, r, r, r, r); } } private void FillParameters(DbCommand cmd, string bpprg, string bpeno, string bprt1, string bprti, string bprtm, string bprtd, string bprtf, string bprtp) { cmd.Parameters["BPPRG"].Value = bpprg; cmd.Parameters["BPENO"].Value = bpeno; cmd.Parameters["BPRT1"].Value = bprt1 == "Y" || bprt1 == "N" ? bprt1 : "N"; cmd.Parameters["BPRTI"].Value = bprti == "Y" || bprti == "N" ? bprti : "N"; cmd.Parameters["BPRTM"].Value = bprtm == "Y" || bprtm == "N" ? bprtm : "N"; cmd.Parameters["BPRTD"].Value = bprtd == "Y" || bprtd == "N" ? bprtd : "N"; cmd.Parameters["BPRTF"].Value = bprtf == "Y" || bprtf == "N" ? bprtf : "N"; cmd.Parameters["BPRTP"].Value = bprtp == "Y" || bprtp == "N" ? bprtp : "N"; cmd.Parameters["TRDAT"].Value = DateTime.UtcNow.AddHours(8); cmd.Parameters["TRUSR"].Value = WGuard1.CUSR; } /// /// 取得員工權限 /// "Y" 表示有權限 "N" 表示無權限 "" 表示未設定 /// /// 程式名稱 /// 員工編號 /// 權限 /// "Y" 表示有權限 "N" 表示無權限 "" 表示未設定 public string GetRight(string bpprg, string bpeno, WRightName right) { PrepareSql(); string funcName = ""; switch (right) { case WRightName.Execute: funcName = "BPRT1"; break; case WRightName.Insert: funcName = "BPRTI"; break; case WRightName.Update: funcName = "BPRTM"; break; case WRightName.Delete: funcName = "BPRTD"; break; case WRightName.Search: funcName = "BPRTF"; break; case WRightName.Print: funcName = "BPRTP"; break; } cmdSelectRight.Parameters["BPPRG"].Value = bpprg; cmdSelectRight.Parameters["BPENO"].Value = bpeno; DataTable data = Query.Select(cmdSelectRight); if (data.Rows.Count != 0) { return data.Rows[0][funcName].ToString(); } return ""; } } public enum WRightName { /// /// 主檔 /// Execute, /// /// 新增 /// Insert, /// /// 更正 /// Update, /// /// 刪除 /// Delete, /// /// 查詢 /// Search, /// /// 印表 /// Print } }