internal bool PravoExist(int poplatek, PrtabTable table, SQLPerm pravo) { if (prtab == null) { Util.Util.WriteLog(string.Format("PravoExist return false: prtab == null, poplatek: {0}, table: {1}, pravo: {2}, user: {3}", poplatek, table, pravo, _user)); return(false); } List <int> poplList = new List <int>(); bool result = false; foreach (P_PRISTUP_TABLE item in prtab) { if (item.pk.PRTAB_POPLATEK == "*") { return(_pravoExist(item, table, pravo)); } string[] prtabPopl = item.pk.PRTAB_POPLATEK.Split(','); string pops; foreach (string ps in prtabPopl) { pops = ps.Trim(); if (pops.IndexOf('-') > 0) { int minP = Convert.ToInt32(pops.Substring(0, pops.IndexOf('-'))); int maxP = Convert.ToInt32(pops.Substring(pops.IndexOf('-') + 1, pops.Length - pops.IndexOf('-') - 1)); for (int i = minP; i <= maxP; i++) { poplList.Add(i); } } else { int popl = -1; if (int.TryParse(pops, out popl)) //0.28 (int)pops { poplList.Add(popl); } else { throw new Exception(string.Format("Chybné přidělení práva pro poplatek, či skupinu \"{0}\". ", pops)); } } } if (poplList.IndexOf(poplatek) >= 0) { result = (result || _pravoExist(item, table, pravo)); } } if (!result) { Util.Util.WriteLog(string.Format("PravoExist return false: poplatek: {0}, table: {1}, pravo: {2}, poplList: {3}, user: {4}", poplatek, table, pravo, String.Join(",", poplList), _user)); } if (System.Diagnostics.Debugger.IsAttached) { Util.Util.WriteLog(string.Format("PravoExist return {5}: poplatek: {0}, table: {1}, pravo: {2}, poplList: {3}, user: {4}", poplatek, table, pravo, String.Join(",", poplList), _user, result)); } return(result); }
private bool _pravoExist(P_PRISTUP_TABLE item, PrtabTable table, SQLPerm pravo) { switch (pravo) { case SQLPerm.SELECT: switch (table) { case PrtabTable.RGP: return(item.PRTAB_RGP != "N"); break; case PrtabTable.PRPL: return(item.PRTAB_PRPL != "N"); break; case PrtabTable.PLATBA: return(item.PRTAB_PLATBA != "N"); break; default: return(false); break; } break; case SQLPerm.INSERT: switch (table) { case PrtabTable.RGP: return(item.PRTAB_RGP == "A"); break; case PrtabTable.PRPL: return(item.PRTAB_PRPL == "A"); break; case PrtabTable.PLATBA: return(item.PRTAB_PLATBA == "A"); break; default: return(false); break; } break; case SQLPerm.UPDATE: return(false); break; case SQLPerm.DELETE: return(false); break; default: return(false); break; } }