using System; using DeiNiu.wms.Data.Model; using System.Data; using System.Collections; using System.Collections.Generic; using System.Linq; using WcfServiceAuthentication; namespace DeiNiu.wms.Logical { [Serializable] public class LAuthority { Authority _obj; public LAuthority() { Initialize(); } public Authority GetAuthority { get { return _obj; } } /// /// get all data /// public DataSet GetAllData() { return _obj.Query(); } /// /// get all data /// public DataSet getAllActiveData() { return _obj.QueryActived(); } /* private void leavetypeDsConstruct() { return; } */ /// /// get a record by id /// public void Initialize(int id) { _obj = id != 0 ? new Authority(id) : new Authority(); } /// /// get a record by id 0 /// public void Initialize() { Initialize(0); } public List getAuthorities() { List auths = new List(); DataTable dt = getAllActiveData().Tables[0]; foreach (DataRow row in dt.Rows) { int id = Convert.ToInt32(row["id"].ToString()); Authority ath = new Authority(id); auths.Add(ath); } return auths; } public List getAuthorities(int empId, int warehouse) { List auths = new List(); RoleAuthority ll = new RoleAuthority(); DataTable dt = ll.GetAuthByEm(empId, warehouse); foreach (DataRow row in dt.Rows) { int id = Convert.ToInt32(row["id"].ToString()); Authority ath = new Authority(id); auths.Add(ath); } return auths; } public Dictionary> getMobileAuthorities(int empId) { Dictionary> auths = new Dictionary>(); // DataView dv = new DataView(getAllActiveData().Tables[0]); DataView dv = _obj.queryCateAuths().DefaultView; List subAuths = getAuthorities(empId,-1); foreach (Authority a in subAuths) { dv.RowFilter = "id =" + a.auth_uplevel; string key; foreach (DataRowView dr in dv) { key = dr["auth_name"].ToString(); if (auths.ContainsKey(key)) { auths[key].Add(a); } else { List sa = new List(); sa.Add(a); auths.Add(key, sa); } } } return auths; } // public Dictionary> getCatedAuthorities(int empId,int warehouse=-1) public Dictionary> getCatedAuthorities(int empId,int warehouse=-1) { Dictionary> auths = new Dictionary>(); // DataView dv = new DataView(getAllActiveData().Tables[0]); DataView dv = _obj.queryCateAuths().DefaultView; List subAuths = getAuthorities(empId, warehouse ); /* * foreach (Authority a in subAuths) { dv.RowFilter = "id =" + a.auth_uplevel; string key; foreach (DataRowView dr in dv) { key = dr["auth_name"].ToString(); if (auths.ContainsKey(key)) { auths[key].Add(a); } else { List sa = new List(); sa.Add(a); auths.Add(key, sa); } } } */ foreach (DataRowView dr in dv) { string formexists = dr["auth_class"].ToString(); string special = dr["auth_special"].ToString(); if (string.IsNullOrEmpty(formexists) && string.IsNullOrEmpty(special) ) { continue; } List sa = new List(); string key = dr["auth_name"].ToString(); auths.Add(key, sa); foreach (Authority a in subAuths) { if (a.auth_uplevel == Convert.ToInt16(dr["id"].ToString())) { // string key = dr["auth_name"].ToString(); if (auths.ContainsKey(key)) { auths[key].Add(a); } else { // List sa = new List(); // sa.Add(a); // auths.Add(key, sa); } } } } return auths; } bool validUser(string userId,string passwd) { Employee emp = new Employee(); return emp.login(userId,passwd); } public int validUserRole(string userId, string passwd, string role) { Employee emp = new Employee(); int id = emp.ValidUser(userId, passwd); if (id > 0) { Dictionary> auths = getMobileAuthorities(id); List auth = new List(); if (auths.ContainsKey("细分权限")) { List portAuth = auths["细分权限"]; foreach (Authority au in portAuth) { if (au.auth_name == role) { return id; } } } } return 0; } public Employee login(string account,string passwd) { Employee em = new Employee(); if (em.login(account, passwd)) { em.em_passwd = ""; em.AuthForms = getAuthObjLst(em.ID, "移动设备"); em.AuthSpecials = getAuthObjLst(em.ID, "细分权限"); } AuthenticationInspector.checkRestrictUsers(em.ID); return em; } public List getAuthObjLst(int userId, string type = "") { Dictionary> auths = getMobileAuthorities(userId); List auth = new List(); if (string.IsNullOrEmpty(type)) { if (auths.Keys.Contains("移动设备")) { List portAuth = auths["移动设备"]; foreach (Authority au in portAuth) { auth.Add(au); } } if (auths.Keys.Contains("细分权限")) { List portAuth = auths["细分权限"]; foreach (Authority au in portAuth) { auth.Add(au); } } } else { if (auths.Keys.Contains(type)) { return auths[type]; } } return auth; } } }