public static long AddLibraryMaterial(ATTLibraryMaterial obj, Previlege pobj)
        {
            string InsertSP;

            OracleParameter[] paramArray;
            if (obj.Action == "A")
            {
                InsertSP       = "SP_ADD_LIBRARY_MATERIAL";
                paramArray     = new OracleParameter[18];
                paramArray[17] = Utilities.GetOraParam(":p_ENTRY_BY", obj.EntryBy, OracleDbType.Varchar2, ParameterDirection.Input);
            }
            else
            {
                InsertSP   = "SP_EDIT_LIBRARY_MATERIAL";
                paramArray = new OracleParameter[17];
            }

            paramArray[0]  = Utilities.GetOraParam(":p_ORG_ID", obj.OrgID, OracleDbType.Int64, ParameterDirection.Input);
            paramArray[1]  = Utilities.GetOraParam(":p_LIBRARY_ID", obj.LibraryID, OracleDbType.Int64, ParameterDirection.Input);
            paramArray[2]  = Utilities.GetOraParam(":p_L_MATERIAL_ID", obj.LMaterialID, OracleDbType.Decimal, ParameterDirection.InputOutput);
            paramArray[3]  = Utilities.GetOraParam(":p_MT_ID", obj.LibraryMaterialType, OracleDbType.Int64, ParameterDirection.Input);
            paramArray[4]  = Utilities.GetOraParam(":p_CATEGORY_ID", obj.LibraryMaterialCategory, OracleDbType.Int64, ParameterDirection.Input);
            paramArray[5]  = Utilities.GetOraParam(":p_CALL_NO", obj.CallNo, OracleDbType.Varchar2, ParameterDirection.Input);
            paramArray[6]  = Utilities.GetOraParam(":p_CORPORATE_BODY", obj.CorporateBody, OracleDbType.Varchar2, ParameterDirection.Input);
            paramArray[7]  = Utilities.GetOraParam(":p_TITLE", obj.Title, OracleDbType.Varchar2, ParameterDirection.Input);
            paramArray[8]  = Utilities.GetOraParam(":p_SERIES_STATE", obj.SeriesStatement, OracleDbType.Varchar2, ParameterDirection.Input);
            paramArray[9]  = Utilities.GetOraParam(":p_NOTE", obj.Note, OracleDbType.Varchar2, ParameterDirection.Input);
            paramArray[10] = Utilities.GetOraParam(":p_BRD_SUBJECT_HEADING", obj.BoardSubjectHeading, OracleDbType.Varchar2, ParameterDirection.Input);
            paramArray[11] = Utilities.GetOraParam(":p_GEO_DESC", obj.GeoDescription, OracleDbType.Varchar2, ParameterDirection.Input);
            paramArray[12] = Utilities.GetOraParam(":p_LANG_ID", obj.LanguageID, OracleDbType.Int64, ParameterDirection.Input);
            paramArray[13] = Utilities.GetOraParam(":p_PHY_DESC", obj.PhysicalDescription, OracleDbType.Varchar2, ParameterDirection.Input);
            paramArray[14] = Utilities.GetOraParam(":p_PUBLISHER_ID", obj.PublisherID, OracleDbType.Int64, ParameterDirection.Input);
            paramArray[15] = Utilities.GetOraParam(":p_CONTENT_FILE", obj.ContentFile, OracleDbType.Blob, ParameterDirection.Input);
            paramArray[16] = Utilities.GetOraParam(":p_FILE_TYPE", obj.CFileType, OracleDbType.Varchar2, ParameterDirection.Input);

            GetConnection    GetConn = new GetConnection();
            OracleConnection DBConn  = GetConn.GetDbConn(Module.LIS);

            string modeName = "";

            if (obj.Action == "A")
            {
                modeName = "add";
            }
            else if (obj.Action == "M")
            {
                modeName = "update";
            }

            if (Previlege.HasPrevilege(pobj, DBConn) == false)
            {
                throw new ArgumentException(Utilities.PreviledgeMsg + " " + modeName + " Library Material.");
            }

            OracleTransaction Tran = DBConn.BeginTransaction();

            try
            {
                SqlHelper.ExecuteNonQuery(DBConn, CommandType.StoredProcedure, InsertSP, paramArray);
                obj.LMaterialID = long.Parse(paramArray[2].Value.ToString());



                DLLLibraryMaterialKeyword.AddLibraryMaterialKeyword(obj.LstLMKeyword, obj.LMaterialID, Tran);

                DLLLibraryMaterialAuthor.AddLibraryMaterialAuthor(obj.LstLMAuthor, obj.LMaterialID, Tran);



                Tran.Commit();

                return(obj.LMaterialID);
            }
            catch (Exception ex)
            {
                Tran.Rollback();
                throw ex;
            }
            finally
            {
                GetConn.CloseDbConn();
            }
        }