예제 #1
0
        public bool load(string id)
        {
            #region 싱글데이터 로드하기
            //this.OBJECT_ID = id;
            OraDB DB = new OraDB();

            OracleDataReader rd = DB.ExecuteQuery(string.Format(sql_getinfo, id));
            try
            {
                if (rd.HasRows)
                {
                    rd.Read();
                    this.loadFromReader(rd);
                }
            }
            finally
            {
                if (rd != null)
                {
                    rd.Close();
                }
                rd = null;
                DB.Close();
            }
            #endregion
            return(true);
        }
예제 #2
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);
            }
        }
예제 #3
0
        public bool update(string person_id)
        {
            string sql = string.Format(sql_update, OBJECT_ID, person_id, CLASSIFICATION_CODE, CATE_NAME, CATE_ORDER, CATE_COMMENT, DESCR);
            OraDB  DB  = new OraDB();

            DB.Execute(sql);
            DB.Close();

            return(true);
        }
예제 #4
0
        private bool _update(string person_id)
        {
            // 자아..
            // 업데이트 문법 만들어주기..
            // 이거는 내부 함수이다..
            // 실제 데이터를 넣어 주기 위한 것이고..
            // 고정된 값에 대해서는 업데이트 등을 해주지 않는다..
            // insert 또는 update 를 통해서 초기 값 또는 이력을 만든 이후..
            // 이놈을 통해서 실제 값을 업데이트 하도록 하자..

            // 자아.. 기본적으로는 다음과 같다.. {2} 번에 해당하는 값만 만들어주면 된다..
            string sql_update = "UPDATE " + __TABLE_NAME__ + " SET UPDATE_DATE = TO_CHAR( SYSDATE, 'YYYYMMDDHH24MISS'), UPDATOR_ID = '{1}' {2} WHERE OBJECT_ID = '{0}'";


            string update_str = "";

            for (int i = 0; i < COLUMN_NAME.Length; i++)
            {
                if (FIXED_COLUMNS.Contains(COLUMN_NAME[i]))
                {
                    continue;                                           // FIXED에 있으면 무시..
                }
                string value = COLUMNS[COLUMN_NAME[i]];

                if (value == "")
                {
                    continue;
                }
                // "" 인 경우는 무시하자.. null 이 들어 갈수 있을지 모르겠는데..
                // 값을 지우려면 null 을 넣어주어야 할듯..

                if (value == null)
                {
                    value = "";
                }

                update_str += "," + COLUMN_NAME[i] + "='" + COLUMNS[COLUMN_NAME[i]] + "'";
                //res += "'" + COLUMN_NAME[i] + "':'" + COLUMNS[COLUMN_NAME[i]] + "'";
            }

            if ("".Equals(update_str))      // 변경할게 없으면 리턴.. .. 진짜 그런가..??
            {
                return(false);
            }


            string sql = string.Format(sql_update, OBJECT_ID, person_id, update_str);
            OraDB  DB  = new OraDB();

            DB.Execute(sql);
            DB.Close();

            return(true);
        }
예제 #5
0
        public static List <clsClassfication> getList(string person_id, string cls_code, bool expandAll)
        {
            #region 싱글데이터 로드하기
            OraDB DB = new OraDB();
            List <clsClassfication> res = new List <clsClassfication>();

            string likecondition = "_____";

            if (expandAll == true)
            {
                likecondition = "%";
            }

            string sql_getlist = "SELECT * FROM " + __TABLE_NAME__ + " WHERE CATE_STATE != 'D' AND CLASSIFICATION_CODE LIKE '{0}" + likecondition + "' ORDER BY NVL( SUBSTR( CLASSIFICATION_CODE, 0, LENGTH( CLASSIFICATION_CODE ) -5 ), CLASSIFICATION_CODE ) , CATE_ORDER";

            OracleDataReader rd = DB.ExecuteQuery(string.Format(sql_getlist, cls_code));
            try
            {
                if (rd.HasRows)
                {
                    while (rd.Read())
                    {
                        clsClassfication cls = new clsClassfication();
                        cls.OBJECT_ID           = rd["OBJECT_ID"].ToString();
                        cls.CREATE_DATE         = rd["CREATE_DATE"].ToString();
                        cls.CREATOR_ID          = rd["CREATOR_ID"].ToString();
                        cls.UPDATE_DATE         = rd["UPDATE_DATE"].ToString();
                        cls.UPDATOR_ID          = rd["UPDATOR_ID"].ToString();
                        cls.CLASSIFICATION_CODE = rd["CLASSIFICATION_CODE"].ToString();
                        cls.CATE_NAME           = rd["CATE_NAME"].ToString();
                        cls.CATE_ORDER          = rd["CATE_ORDER"].ToString();
                        cls.CATE_COMMENT        = rd["CATE_COMMENT"].ToString();
                        cls.CATE_STATE          = rd["CATE_STATE"].ToString();
                        cls.DESCR = rd["DESCR"].ToString();

                        res.Add(cls);
                    }
                }
            }
            finally
            {
                if (rd != null)
                {
                    rd.Close();
                }
                rd = null;
                DB.Close();
            }
            #endregion
            return(res);
        }
예제 #6
0
        public bool delete(string person_id)
        {
            if (OBJECT_ID == null || "".Equals(OBJECT_ID))
            {
                return(false);
            }

            string sql = string.Format(sql_delete, OBJECT_ID);
            OraDB  DB  = new OraDB();

            DB.Execute(sql);
            DB.Close();
            return(true);
        }
예제 #7
0
        public bool insert(string person_id, string parent_id)
        {
            // 자아.. INSERT..
            // 그나마 복잡한게 INSERT라고 보면 된다..
            // 우선 CLS코드를 직접 구해줘야만 하고..
            // 그에 맞는 ORDER도 만들어주어야 한다..
            // 그외에는 머.. 별겨 없다..

            if (parent_id == null || "".Equals(parent_id))
            {
                parent_id = "0";
            }

            OraDB DB = new OraDB();

            try
            {
                string           sql_getCls = "SELECT PARENTCODE || CHILDCODE RES, CHILDCODE FROM ( SELECT (SELECT CLASSIFICATION_CODE CLASSIFICATION_CODE FROM TB_OBJECT_CLASSIFICATION WHERE OBJECT_ID = {0} ) PARENTCODE, CHILDCODE FROM  (SELECT SUBSTR( CHILDCODE, LENGTH(CHILDCODE)-4 ) CHILDCODE FROM (SELECT MAX( B.CLASSIFICATION_CODE ) PARENTCODE, '0000000' || ( NVL( SUBSTR( MAX(A.CLASSIFICATION_CODE), LENGTH( NVL( MAX( B.CLASSIFICATION_CODE ), 0 )  ) + 1 ), 0 ) + 1 ) CHILDCODE FROM TB_OBJECT_CLASSIFICATION A, (SELECT MAX(CLASSIFICATION_CODE) CLASSIFICATION_CODE, COUNT(*) CNT FROM TB_OBJECT_CLASSIFICATION WHERE OBJECT_ID = {0} ) B WHERE A.CLASSIFICATION_CODE LIKE B.CLASSIFICATION_CODE || '_____' ) ))";
                OracleDataReader rd         = DB.ExecuteQuery(String.Format(sql_getCls, parent_id));
                try
                {
                    if (rd.HasRows)
                    {
                        rd.Read();
                        CLASSIFICATION_CODE = rd["RES"].ToString();
                        CATE_ORDER          = rd["CHILDCODE"].ToString();
                    }
                    else
                    {
                        return(false);
                    }
                }
                finally
                {
                    if (rd != null)
                    {
                        rd.Close();
                    }
                    rd = null;
                }
                string sql = string.Format(sql_insert, person_id, CLASSIFICATION_CODE, CATE_NAME, CATE_ORDER, CATE_COMMENT, DESCR);
                DB.Execute(sql);
            }
            finally
            {
                DB.Close();
            }
            return(true);
        }
예제 #8
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);
        }
예제 #9
0
        public bool delete(string person_id)
        {
            // 자아.. DELETE 해주는 부분..
            // 실제로 삭제는 하지 않고 상태만 바꿔준다..
            // 바꿔줘야 하는 것은 MASTER_ID를 기준으로 동일한 것을 전체 처리..

            if (OBJECT_ID == null || "".Equals(OBJECT_ID))
            {
                return(false);
            }

            string sql_delete = "UPDATE " + __TABLE_NAME__ + " SET STATUS = 'D' WHERE MASTER_ID IN ( SELECT MASTER_ID FROM " + __TABLE_NAME__ + " WHERE OBJECT_ID = '{0}' )";
            string sql        = string.Format(sql_delete, OBJECT_ID);
            OraDB  DB         = new OraDB();

            DB.Execute(sql);
            DB.Close();
            return(true);
        }
예제 #10
0
        public static List <clsObject> getList(string person_id, string cls_code, string where)
        {
            #region 목록 데이터 로드하기
            OraDB            DB  = new OraDB();
            List <clsObject> res = new List <clsObject>();

            if (cls_code == null || "".Equals(cls_code))
            {
                cls_code = "%";
            }

            string sql_getlist = "SELECT A.*, B.PERSON_NAME FROM TB_OBJECT A, TB_PERSON B WHERE A.STATUS != 'D' AND A.UPDATOR_ID = B.OBJECT_ID AND A.OBJECT_ID IN ( SELECT MAX( A.OBJECT_ID ) FROM TB_OBJECT A, TB_OBJECT_CLASSIFICATION B "
                                 + " WHERE A.CATE_PCODE = B.OBJECT_ID AND B.CLASSIFICATION_CODE LIKE '" + cls_code + "' " + where + " GROUP BY MASTER_ID ) ORDER BY CODE, TITLE";


            OracleDataReader rd = DB.ExecuteQuery(string.Format(sql_getlist, ""));
            try
            {
                if (rd.HasRows)
                {
                    while (rd.Read())
                    {
                        clsObject obj = new clsObject();
                        // 실제 데이터 읽기..
                        obj.loadFromReader(rd);
                        res.Add(obj);
                    }
                }
            }
            finally
            {
                if (rd != null)
                {
                    rd.Close();
                }
                rd = null;
                DB.Close();
            }
            #endregion
            return(res);
        }
예제 #11
0
        public bool load(string id)
        {
            #region 싱글데이터 로드하기
            this.OBJECT_ID = id;
            OraDB DB = new OraDB();

            OracleDataReader rd = DB.ExecuteQuery(string.Format(sql_getinfo, id));
            try
            {
                if (rd.HasRows)
                {
                    rd.Read();
                    OBJECT_ID           = rd["OBJECT_ID"].ToString();
                    CREATE_DATE         = rd["CREATE_DATE"].ToString();
                    CREATOR_ID          = rd["CREATOR_ID"].ToString();
                    UPDATE_DATE         = rd["UPDATE_DATE"].ToString();
                    UPDATOR_ID          = rd["UPDATOR_ID"].ToString();
                    CLASSIFICATION_CODE = rd["CLASSIFICATION_CODE"].ToString();
                    CATE_NAME           = rd["CATE_NAME"].ToString();
                    CATE_ORDER          = rd["CATE_ORDER"].ToString();
                    CATE_COMMENT        = rd["CATE_COMMENT"].ToString();
                    CATE_STATE          = rd["CATE_STATE"].ToString();
                    DESCR = rd["DESCR"].ToString();
                }
            }
            finally
            {
                if (rd != null)
                {
                    rd.Close();
                }
                rd = null;
                DB.Close();
            }
            #endregion
            return(true);
        }
예제 #12
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);
        }
예제 #13
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);
        }