using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Text;
using WebLib;
namespace Education
{
///
/// 取得權限設定
///
public class MWEB: DAC
{
public MWEB()
{
}
///
/// 檢查目前登入的員工是否有某程式的權限
///
/// 程式編號
/// 權限名稱
/// 員工編號
///
public bool CheckRight(string programId, WRightName rightName, string employeeId)
{
if (programId == null)
programId = "NO PROGRAM ID";
if (employeeId == null)
employeeId = "NOBODY";
// 取得員工權限
string right1 = BWCPE_GetRight(programId, employeeId, rightName);
// 取得這個員工隸屬的群組
string[] bpglps = BWEH_GetBpglpListByBpeno(employeeId);
// 取得各群組權限
string[] right2 = new string[bpglps.Length];
for (int i = 0; i < right2.Length; i++)
{
right2[i] = BWCPG_GetRight(programId, bpglps[i], rightName);
}
// 綜合判斷權限
string right = "";
if (right1 != "")
right = right1;
if (right != "Y")
for (int i = 0; i < right2.Length; i++)
{
if (right2[i] != "")
{
if (right != "Y" && right2[i] == "Y")
right = "Y";
else if (right != "Y" && right2[i] == "N")
right = "N";
}
}
return right == "Y";
}
///
/// 取員工權限
///
/// 權限編號
/// 員工編號
/// 功能名稱
///
private string BWCPE_GetRight(string rightId, string employId, WRightName functionName)
{
string funcName = "";
switch (functionName)
{
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;
}
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP FROM BWCPE WHERE BPPRG=@BPPRG AND BPENO=@BPENO";
AddParam(cmd, "BPPRG", rightId);
AddParam(cmd, "BPENO", employId);
DataTable data = Select(cmd);
if (data.Rows.Count != 0)
{
return data.Rows[0][funcName].ToString();
}
return "";
}
///
/// 取員工所屬群組
///
///
///
private string[] BWEH_GetBpglpListByBpeno(string employeeId)
{
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT E.BPGLP AS BPGLP
FROM BWEG E, BWEH G
WHERE E.BPGLP=G.BPGLP AND G.BPENO=@BPENO
ORDER BY E.BPGLP ";
AddParam(cmd, "BPENO", employeeId);
DataTable inGroup = Select(cmd);
if (inGroup.Rows.Count == 0)
return new string[0];
else
{
string[] result = new string[inGroup.Rows.Count];
for (int i = 0; i < inGroup.Rows.Count; i++)
{
result[i] = inGroup.Rows[i][0].ToString();
}
return result;
}
}
///
/// 取群組權限
///
/// 權限編號
/// 群組編號
/// 功能名稱
///
///
private string BWCPG_GetRight(string rightId, string groupId, WRightName functionName)
{
string funcName = "";
switch (functionName)
{
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;
}
DbCommand cmd = NewCommand();
cmd.CommandText = @"SELECT BPRT1, BPRTI, BPRTM, BPRTD, BPRTF, BPRTP FROM BWCPG WHERE BPPRG=@BPPRG AND BPGLP=@BPGLP";
AddParam(cmd, "BPPRG", rightId);
AddParam(cmd, "BPGLP", groupId);
DataTable data = Select(cmd);
if (data.Rows.Count != 0)
{
return data.Rows[0][funcName].ToString();
}
return "";
}
}
public enum WRightName
{
///
/// 主檔
///
Execute,
///
/// 新增
///
Insert,
///
/// 更正
///
Update,
///
/// 刪除
///
Delete,
///
/// 查詢
///
Search,
///
/// 印表
///
Print
}
public class ProgramID
{
public const string 匯出基本資料 = "TR_EXPORT";
}
}