Пример #1
0
        public bool checkAuth(string person_id, string object_id)
        {
            if (true)
            {
                return(true);
            }

            string sql = "SELECT NVL ( (SELECT 1 FROM TB_OBJECT WHERE OBJECT_ID = '" + person_id + "' AND ( ATTR3 IS NULL OR ATTR3 = (SELECT USER_ID FROM TB_PERSON WHERE OBJECT_ID = '" + object_id + "' ) ) ), 0 ) AUTH FROM DUAL";

            // 신규 쿼리..
            // ADMIN은 수정이 되어야 해..
            sql = "SELECT RESULT1 + RESULT2 RESULT FROM ( "
                  + " SELECT NVL ( (SELECT 1 FROM TB_OBJECT WHERE OBJECT_ID = '" + person_id + "' AND ( ATTR3 IS NULL OR ATTR3 = (SELECT USER_ID FROM TB_PERSON WHERE OBJECT_ID = '" + object_id + "') ) ), 0 ) RESULT1, "
                  + " (SELECT NVL( MAX(OBJECT_ID), 0 ) RES FROM TB_ADMINTEAM WHERE CODE IN ( SELECT DEPT_CODE FROM TB_PERSON WHERE OBJECT_ID = '" + person_id + "' ) ) RESULT2 FROM DUAL ) ";

            OraDB DB = new OraDB();

            string result = DB.GetQueryResult <string>(sql, delegate(OracleDataReader reader)
            {
                string val = reader[0].ToString();
                return(val);
            });

            if ("0".Equals(result))
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Пример #2
0
        public bool insert(string person_id, string parent_id)
        {
            //private string sql_insert = "INSERT INTO " + __TABLE_NAME__ + " VALUES ( " + __SEQUENCE_NAME__ + ".nextval, TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', '{1}', '{2}', '{3}', '{4}', 'S', '{5}' )";

            // insert 를 해주는 것인데..
            // 일단은 최소한의 값으로 값을 insert 해주면 된다.. ( row )
            // 그 이후 _update 를 호출 하자..
            // 자아.. 일단.. insert, update 시에는 FIXED COLUMN 항목들에 대해서는 별도로 처리를 해줄수 있도록 하자..


            string sql_object_id = "SELECT " + __SEQUENCE_NAME__ + ".NEXTVAL FROM DUAL";
            // 자아.. 사실은.. INSERT 에서 NEXTVAL 을 여러개를 써도 하나로 처리가 된다..
            // 하지만.. INSERT 한 이후에 UPDATE를 해줘야 하는데.. 어차피 OBJECT_ID 를 알아야 하기 때문에..
            // 그냥 따로 빼서 사용하도록 하자..
            // 최초로 만드는 것이기 때문에 OBJECT_ID 와 MASTER_ID 는 동일..
            // VERSION 은 0 으로 설정이 된다..
            // owner에 대해서는 조금 생각을 해줘야 할것 같기는 한데..
            // 일단은.. 나중에 팀코드를 넣어주어야 할것 같기도 하다..
            string sql_insert = "INSERT INTO " + __TABLE_NAME__ + " ( OBJECT_ID, CREATE_DATE, CREATOR_ID, UPDATE_DATE, UPDATOR_ID, MASTER_ID, VERSION, STATUS ) VALUES ( '{1}',TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}',TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), '{0}', '{1}', 0, 'W' )";

            OraDB DB = new OraDB();

            string object_id = DB.GetQueryResult <string>(sql_object_id, delegate(OracleDataReader reader)
            {
                string val = reader[0].ToString();
                return(val);
            });


            if (object_id != null && !"".Equals(object_id))
            {
                // 일단은 신규 object_id 를 가져왔으면..
                string sql = string.Format(sql_insert, person_id, object_id);
                DB.Execute(sql);

                COLUMNS["CATE_PCODE"] = parent_id;
                this.OBJECT_ID        = object_id; // 자아.. 일단 값을 넣고..
                // 마지막으로 실제 업데이트..
                _update(person_id);
            }
            DB.Close();

            return(true);
        }
Пример #3
0
        public bool update(string person_id)
        {
            // update.....
            // 자아.. UPDATE를 해주자..
            // UPDATE는 INSERT와 유사하다..
            // 하나의 ROW를 만들어 주고.. ( 물론 이때 MASTER_ID만 동일.. VERSION등이 변경. .)
            // OBJECT_ID를 얻고..
            // 신규로 만들어 진놈에 _update를 호출한다..

            string sql_object_id = "SELECT " + __SEQUENCE_NAME__ + ".NEXTVAL FROM DUAL";
            // 자아.. 똑같아.. 일단은 신규 ID를 가져와..


            string column_str = "";

            for (int i = 0; i < COLUMN_NAME.Length; i++)
            {
                string _name = COLUMN_NAME[i];
                if (FIXED_COLUMNS.Contains(_name))
                {
                    continue;
                }

                column_str += "," + _name;
            }

            string sql_update = "INSERT INTO " + __TABLE_NAME__ + " ( OBJECT_ID, CREATE_DATE, CREATOR_ID, UPDATE_DATE, UPDATOR_ID, MASTER_ID, VERSION, STATUS " + column_str + " ) "
                                + " SELECT '{2}' OBJECT_ID, CREATE_DATE, CREATOR_ID, TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS') UPDATE_DATE , "
                                + " '{0}' UPDATOR_ID, MASTER_ID, VERSION+1 VERSION, STATUS " + column_str
                                + " FROM " + __TABLE_NAME__ + " "
                                + " WHERE OBJECT_ID = (SELECT MAX(OBJECT_ID) FROM " + __TABLE_NAME__ + " WHERE MASTER_ID IN ( "
                                + " SELECT MASTER_ID FROM " + __TABLE_NAME__ + " WHERE OBJECT_ID = '{1}' ) )";
            // 자아.. SQL설명..
            // 신규로 ROW를 하나 만드는 것이다..



            OraDB DB = new OraDB();

            string ori_object_id = this.OBJECT_ID;  // 일단 예전것..

            string object_id = DB.GetQueryResult <string>(sql_object_id, delegate(OracleDataReader reader)
            {
                string val = reader[0].ToString();
                return(val);
            });


            if (object_id != null && !"".Equals(object_id))
            {
                // 일단은 신규 object_id 를 가져왔으면..
                string sql = string.Format(sql_update, person_id, ori_object_id, object_id);
                DB.Execute(sql);
                this.OBJECT_ID = object_id; // 자아.. 일단 값을 넣고..
                // 마지막으로 실제 업데이트..
                _update(person_id);
            }
            DB.Close();

            return(true);
        }
Пример #4
0
        public string getJson()
        {
            OraDB  DB  = new OraDB();
            string res = null;

            string sql = "select OBJECT_ID, CODE, NAME from " + __TABLE_NAME__ + " order by code";

            if ("TB_DEPT".Equals(__TABLE_NAME__))
            {
                // 부서 가져올때는 별도로..
                sql = "select OBJECT_ID, DEPT_CODE, DEPT_NAME from TB_DEPT order by DEPT_NAME";
            }


            if ("TB_PERSON".Equals(__TABLE_NAME__))
            {
                sql = "SELECT OBJECT_ID, USER_ID, PERSON_NAME || ' ' || POS_NAME AS NAME, DEPT_CODE FROM TB_PERSON WHERE STATUS = 'Y'";



                string _object_id = DB.GetQueryResult <string>(sql, delegate(OracleDataReader reader)
                {
                    string o    = reader[0].ToString();
                    string code = reader[1].ToString();
                    string name = reader[2].ToString();
                    string dept = reader[3].ToString();

                    if (res == null)
                    {
                        res = "";
                    }
                    else
                    {
                        res += ",";
                    }

                    res += "{'value':'" + code + "','view':'" + name + "','filter':'" + dept + "' }";

                    return(o);
                });

                return(res);
            }

            string object_id = DB.GetQueryResult <string>(sql, delegate(OracleDataReader reader)
            {
                string o    = reader[0].ToString();
                string code = reader[1].ToString();
                string name = reader[2].ToString();

                if (res == null)
                {
                    res = "";
                }
                else
                {
                    res += ",";
                }

                res += "{'value':'" + code + "','view':'" + name + "' }";

                return(o);
            });

            return(res);
        }