public bool Approve_Equity_CIS(Invest_Equity_CISRepo Equity_CISRepo)
        {
            var app = new AppSettings();

            // get the pending record
            Equity_CISRepo.GetINVESTMENTRECORDList(Invest_No);


            TransactionOptions tsOp = new TransactionOptions();

            tsOp.IsolationLevel = System.Transactions.IsolationLevel.Snapshot;
            TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew, tsOp);

            tsOp.Timeout = TimeSpan.FromMinutes(20);

            using (OracleConnection conn = new OracleConnection(app.conString()))  //
            {
                try
                {
                    // update Invest_Equity table
                    DynamicParameters param_E = new DynamicParameters();
                    param_E.Add(name: "P_INVEST_NO", value: Invest_No, dbType: DbType.String, direction: ParameterDirection.Input);
                    param_E.Add(name: "P_INVEST_STATUS", value: "ACTIVE", dbType: DbType.String, direction: ParameterDirection.Input);
                    param_E.Add(name: "P_AUTH_STATUS", value: "AUTHORIZED", dbType: DbType.String, direction: ParameterDirection.Input);
                    param_E.Add(name: "P_AUTH_ID", value: GlobalValue.User_ID, dbType: DbType.String, direction: ParameterDirection.Input);
                    param_E.Add(name: "P_AUTH_DATE", value: GlobalValue.Scheme_Today_Date, dbType: DbType.DateTime, direction: ParameterDirection.Input);
                    conn.Execute("APP_INVEST_EQUITY_CIS", param_E, commandType: CommandType.StoredProcedure);

                    //Update Invest_Equity_Balance table
                    DynamicParameters param_B = new DynamicParameters();
                    param_B.Add(name: "P_SCHEME_FUND_ID", value: Scheme_Fund_Id, dbType: DbType.String, direction: ParameterDirection.Input);
                    param_B.Add(name: "P_PRODUCT_ID", value: Product_Id, dbType: DbType.String, direction: ParameterDirection.Input);
                    param_B.Add(name: "P_CURRENT_QUANTITY", value: Order_Quantity, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                    param_B.Add(name: "P_TOTAL_COST", value: Total_Cost, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                    param_B.Add(name: "P_UNIT_PRICE", value: Order_Unit_Price, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                    param_B.Add(name: "P_FUND_MANAGER_ID", value: Fund_Manager_Id, dbType: DbType.String, direction: ParameterDirection.Input);

                    conn.Execute("MIX_INVEST_EQUITY_AFTER", param_B, commandType: CommandType.StoredProcedure);

                    ts.Complete();

                    return(true);
                }
                catch (Exception ex)
                {
                    string xx = ex.ToString();
                    throw;
                }
                finally
                {
                    ts.Dispose();
                    if (this.conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
        }
        public void sellSaveRecord(Invest_Equity_CISRepo EquityCISRepo)
        {
            try
            {
                //EquityCISRepo.Gain_Loss = EquityCISRepo.Total_Cost - EquityCISRepo.Current_Total_Cost;


                //Get Connection
                AppSettings app = new AppSettings();
                conn = app.GetConnection();
                DynamicParameters param = new DynamicParameters();

                param.Add(name: "P_INVEST_NO", value: EquityCISRepo.Product_Id + EquityCISRepo.Scheme_Fund_Id + EquityCISRepo.Order_Date.ToString("ddMMyy"), dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_INVEST_DESCRIPTION", value: EquityCISRepo.Invest_Description, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_SCHEME_FUND_ID", value: EquityCISRepo.Scheme_Fund_Id, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_PRODUCT_ID", value: EquityCISRepo.Product_Id, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_FUND_MANAGER_ID", value: EquityCISRepo.Fund_Manager_Id, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_ISSUER_ID", value: EquityCISRepo.Issuer_Id, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_ORDER_QUANTITY", value: EquityCISRepo.Order_Quantity, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                param.Add(name: "P_ORDER_UNIT_PRICE", value: EquityCISRepo.Order_Unit_Price, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                param.Add(name: "P_CONSIDERATION", value: EquityCISRepo.Consideration, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                param.Add(name: "P_ORDER_DATE", value: EquityCISRepo.Order_Date, dbType: DbType.Date, direction: ParameterDirection.Input);
                param.Add(name: "P_INVEST_STATUS", value: "PENDING", dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_TRANS_TYPE", value: "SELL", dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_TOTAL_LEVIES", value: EquityCISRepo.Total_Levies, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                param.Add(name: "P_TOTAL_COST", value: EquityCISRepo.Total_Cost, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                param.Add(name: "P_AUTHORIZER", value: EquityCISRepo.User_Id, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_MAKER_ID", value: GlobalValue.User_ID, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_MAKE_DATE", value: GlobalValue.Scheme_Today_Date, dbType: DbType.DateTime, direction: ParameterDirection.Input);
                param.Add(name: "P_AUTH_STATUS", value: "PENDING", dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_GL_ACCOUNT_NO", value: EquityCISRepo.GL_Account_No, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_EQUITY_CIS", value: EquityCISRepo.Class_Id, dbType: DbType.String, direction: ParameterDirection.Input);
                param.Add(name: "P_CAUC", value: EquityCISRepo.CURRENTAVERAGEUNITCOST, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                param.Add(name: "P_CTC", value: EquityCISRepo.Current_Total_Cost, dbType: DbType.Decimal, direction: ParameterDirection.Input);
                // param.Add(name: "P_GL", value: 0, dbType: DbType.Decimal, direction: ParameterDirection.Input);

                conn.Execute("ADD_INVEST_EQUITY_CIS", param, commandType: CommandType.StoredProcedure);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                    if (conn != null)
                    {
                        conn = null;
                    }
                }
            }
        }
 //GET GL BALANCE FROM GL ACCOUNT TABLE
 public void Get_GL_Balance(Invest_Equity_CISRepo ECIDRepo)
 {
     try
     {
         //Get connection
         var con   = new AppSettings();
         var param = new DynamicParameters();
         param.Add("P_GL_ACCOUNT_NO", ECIDRepo.GL_Account_No, DbType.String, ParameterDirection.Input);
         param.Add("VDATA", null, DbType.Decimal, ParameterDirection.Output);
         con.GetConnection().Execute("SEL_GL_BALANCE", param, commandType: CommandType.StoredProcedure);
         ECIDRepo.GL_Balance = param.Get <decimal>("VDATA");
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 //check issuer id exist
 public void ck_issuer(Invest_Equity_CISRepo Equity_CISRepo)
 {
     try
     {
         //Get connection
         var con   = new AppSettings();
         var param = new DynamicParameters();
         param.Add("P_ISSUERID", Equity_CISRepo.Issuer_Id, DbType.String, ParameterDirection.Input);
         param.Add("VDATA", null, DbType.Decimal, ParameterDirection.Output);
         con.GetConnection().Execute("CK_ISSUER", param, commandType: CommandType.StoredProcedure);
         Equity_CISRepo.CH_NUMBER = param.Get <Decimal>("VDATA");
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 //GET CURRENT PRODUCT QUANTITY FROM EQUITY BALANCE TABLE TABLE
 public void Get_Product_Current_Quantity(Invest_Equity_CISRepo ECIDRepo)
 {
     try
     {
         //Get connection
         var con   = new AppSettings();
         var param = new DynamicParameters();
         param.Add("P_SCHEME_FUND_ID", ECIDRepo.Scheme_Fund_Id, DbType.String, ParameterDirection.Input);
         param.Add("P_PRODUCT_ID", ECIDRepo.Product_Id, DbType.String, ParameterDirection.Input);
         param.Add("VDATA", null, DbType.Decimal, ParameterDirection.Output);
         con.GetConnection().Execute("SEL_CURRENT_PRODUCT_QUANTITY", param, commandType: CommandType.StoredProcedure);
         ECIDRepo.Current_Quantity = param.Get <decimal>("VDATA");
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }