示例#1
0
        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);
        }
示例#2
0
        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;
            }
        }