public bool UpdateVariantAssetPortfolio(ModelPortfolioVo modelPortfolioVo, int adviserId, int userId)
        {
            bool bResult = false;
            ModelPortfolioDao modelPortfolioDao = new ModelPortfolioDao();

            try
            {
                bResult = modelPortfolioDao.UpdateVariantAssetPortfolio(modelPortfolioVo, adviserId, userId);
            }
            catch (BaseApplicationException Ex)
            {
                throw Ex;
            }
            catch (Exception Ex)
            {
                BaseApplicationException exBase       = new BaseApplicationException(Ex.Message, Ex);
                NameValueCollection      FunctionInfo = new NameValueCollection();
                FunctionInfo.Add("Method", "ModelPortfolioBo.cs:UpdateVariantAssetPortfolio()");

                object[] objects = new object[2];
                objects[0] = modelPortfolioVo;
                objects[1] = adviserId;
                objects[2] = userId;

                FunctionInfo = exBase.AddObject(FunctionInfo, objects);
                exBase.AdditionalInformation = FunctionInfo;
                ExceptionManager.Publish(exBase);
                throw exBase;
            }
            return(bResult);
        }
        public void EditModelPortfolioRecords(ModelPortfolioVo modelPortfolioVo, int AMPTBValueId)
        {
            ModelPortfolioDao modelPortfolioDao = new ModelPortfolioDao();

            try
            {
                modelPortfolioDao.EditModelPortfolioRecords(modelPortfolioVo, AMPTBValueId);
            }
            catch (BaseApplicationException Ex)
            {
                throw Ex;
            }
            catch (Exception Ex)
            {
                BaseApplicationException exBase       = new BaseApplicationException(Ex.Message, Ex);
                NameValueCollection      FunctionInfo = new NameValueCollection();
                FunctionInfo.Add("Method", "ModelPortfolioBo.cs:EditModelPortfolioRecords()");

                object[] objects = new object[1];
                objects[0] = modelPortfolioVo;
                objects[1] = AMPTBValueId;

                FunctionInfo = exBase.AddObject(FunctionInfo, objects);
                exBase.AdditionalInformation = FunctionInfo;
                ExceptionManager.Publish(exBase);
                throw exBase;
            }
        }
        public DataTable SchemeAssetChartOnSubCategory(ModelPortfolioVo modelPortfolioVo, int adviserId)
        {
            DataTable         dtSchemeAssetChart = new DataTable();
            ModelPortfolioDao modelPortfolioDao  = new ModelPortfolioDao();

            try
            {
                dtSchemeAssetChart = modelPortfolioDao.SchemeAssetChartOnSubCategory(modelPortfolioVo, adviserId);
            }
            catch (BaseApplicationException Ex)
            {
                throw Ex;
            }
            catch (Exception Ex)
            {
                BaseApplicationException exBase       = new BaseApplicationException(Ex.Message, Ex);
                NameValueCollection      FunctionInfo = new NameValueCollection();
                FunctionInfo.Add("Method", "ModelPortfolioBo.cs:SchemeAssetChartOnSubCategory()");

                object[] objects = new object[1];
                objects[0] = modelPortfolioVo;
                objects[1] = adviserId;

                FunctionInfo = exBase.AddObject(FunctionInfo, objects);
                exBase.AdditionalInformation = FunctionInfo;
                ExceptionManager.Publish(exBase);
                throw exBase;
            }
            return(dtSchemeAssetChart);
        }
        public DataTable SchemeAssetChartOnSubCategory(ModelPortfolioVo modelPortfolioVo, int adviserId)
        {
            DataTable dtSchemeAsset = new DataTable();
            DataSet   dsSchemeAsset;
            Database  db;
            DbCommand SchemeAssetCmd;

            try
            {
                db             = DatabaseFactory.CreateDatabase("wealtherp");
                SchemeAssetCmd = db.GetStoredProcCommand("SP_AttachedSchemeAssetOnSubCategory");
                db.AddInParameter(SchemeAssetCmd, "@adviserId", DbType.Int32, adviserId);
                db.AddInParameter(SchemeAssetCmd, "@modelPortfolioCode", DbType.Int32, modelPortfolioVo.ModelPortfolioCode);
                dsSchemeAsset = db.ExecuteDataSet(SchemeAssetCmd);
                dtSchemeAsset = dsSchemeAsset.Tables[0];
            }
            catch (BaseApplicationException Ex)
            {
                throw Ex;
            }
            catch (Exception Ex)
            {
                BaseApplicationException exBase       = new BaseApplicationException(Ex.Message, Ex);
                NameValueCollection      FunctionInfo = new NameValueCollection();
                FunctionInfo.Add("Method", "ModelPortfolioDao.cs:SchemeAssetChartOnSubCategory()");
                object[] objects = new object[1];
                objects[0] = adviserId;

                FunctionInfo = exBase.AddObject(FunctionInfo, objects);
                exBase.AdditionalInformation = FunctionInfo;
                ExceptionManager.Publish(exBase);
                throw exBase;
            }
            return(dtSchemeAsset);
        }
        //********************************************** Code for Asset Allocation Starts***********************************************************


        public bool CreateVariantAssetPortfolio(ModelPortfolioVo modelPortfolioVo, int adviserId, int userId)
        {
            bool      bResult = false;
            Database  db;
            DbCommand AttachedVariantCmd;

            try
            {
                db = DatabaseFactory.CreateDatabase("wealtherp");
                AttachedVariantCmd = db.GetStoredProcCommand("SP_InsertVariantAssetToModelPortfolio");
                db.AddInParameter(AttachedVariantCmd, "@adviserId", DbType.Int32, adviserId);
                db.AddInParameter(AttachedVariantCmd, "@modelPortfolioCode", DbType.Int32, modelPortfolioVo.ModelPortfolioCode);
                db.AddInParameter(AttachedVariantCmd, "@PortfolioName", DbType.String, modelPortfolioVo.PortfolioName);
                db.AddInParameter(AttachedVariantCmd, "@MinAge", DbType.Int32, modelPortfolioVo.MinAge);
                db.AddInParameter(AttachedVariantCmd, "@MaxAge", DbType.Int32, modelPortfolioVo.MaxAge);
                db.AddInParameter(AttachedVariantCmd, "@MinTimeHorizon", DbType.Int32, modelPortfolioVo.MinTimeHorizon);
                db.AddInParameter(AttachedVariantCmd, "@MaxTimeHorizon", DbType.Int32, modelPortfolioVo.MaxTimeHorizon);
                db.AddInParameter(AttachedVariantCmd, "@MinAUM", DbType.Double, modelPortfolioVo.MinAUM);
                db.AddInParameter(AttachedVariantCmd, "@MaxAUM", DbType.Double, modelPortfolioVo.MaxAUM);
                db.AddInParameter(AttachedVariantCmd, "@VariantDescription", DbType.String, modelPortfolioVo.VariantDescription);
                db.AddInParameter(AttachedVariantCmd, "@RiskClassCode", DbType.String, modelPortfolioVo.RiskClassCode);


                db.AddInParameter(AttachedVariantCmd, "@CashAllocation", DbType.Decimal, modelPortfolioVo.CashAllocation);
                db.AddInParameter(AttachedVariantCmd, "@DebtAllocation", DbType.Decimal, modelPortfolioVo.DebtAllocation);
                db.AddInParameter(AttachedVariantCmd, "@EquityAllocation", DbType.Decimal, modelPortfolioVo.EquityAllocation);
                db.AddInParameter(AttachedVariantCmd, "@AlternateAllocation", DbType.Decimal, modelPortfolioVo.AlternateAllocation);

                db.AddInParameter(AttachedVariantCmd, "@ROR", DbType.Decimal, modelPortfolioVo.ROR);
                db.AddInParameter(AttachedVariantCmd, "@RiskPercentage", DbType.Decimal, modelPortfolioVo.RiskPercentage);
                db.AddInParameter(AttachedVariantCmd, "@IsRiskClass", DbType.String, modelPortfolioVo.IsRiskClass);

                db.AddInParameter(AttachedVariantCmd, "@userId", DbType.Int32, userId);
                if (db.ExecuteNonQuery(AttachedVariantCmd) != 0)
                {
                    bResult = true;
                }
            }
            catch (BaseApplicationException Ex)
            {
                throw Ex;
            }
            catch (Exception Ex)
            {
                BaseApplicationException exBase       = new BaseApplicationException(Ex.Message, Ex);
                NameValueCollection      FunctionInfo = new NameValueCollection();
                FunctionInfo.Add("Method", "ModelPortfolioDao.cs:CreateVariantAssetPortfolio()");
                object[] objects = new object[1];
                objects[0] = adviserId;

                FunctionInfo = exBase.AddObject(FunctionInfo, objects);
                exBase.AdditionalInformation = FunctionInfo;
                ExceptionManager.Publish(exBase);
                throw exBase;
            }
            return(bResult);
        }
        public bool AttachSchemeToPortfolio(ModelPortfolioVo modelPortfolioVo, int adviserId, int IsActiveFlag)
        {
            bool      bResult = false;
            Database  db;
            DbCommand modelPortfolioCmd;

            try
            {
                db = DatabaseFactory.CreateDatabase("wealtherp");
                modelPortfolioCmd = db.GetStoredProcCommand("SP_InsertSchemeToModelPortfolio");
                db.AddInParameter(modelPortfolioCmd, "@schemeCode", DbType.Int32, modelPortfolioVo.SchemeCode);
                db.AddInParameter(modelPortfolioCmd, "@weightage", DbType.Int32, modelPortfolioVo.Weightage);
                db.AddInParameter(modelPortfolioCmd, "@modelPortfolioCode", DbType.Int32, modelPortfolioVo.ModelPortfolioCode);
                db.AddInParameter(modelPortfolioCmd, "@IsActiveflag", DbType.Int32, IsActiveFlag);
                db.AddInParameter(modelPortfolioCmd, "@schemeDescription", DbType.String, modelPortfolioVo.SchemeDescription);
                db.AddInParameter(modelPortfolioCmd, "@adviserId", DbType.Int32, adviserId);
                if (modelPortfolioVo.ArchiveReason != 0)
                {
                    db.AddInParameter(modelPortfolioCmd, "@archiveReason", DbType.Int32, modelPortfolioVo.ArchiveReason);
                }
                else
                {
                    db.AddInParameter(modelPortfolioCmd, "@archiveReason", DbType.Int32, 0);
                }
                if (db.ExecuteNonQuery(modelPortfolioCmd) != 0)
                {
                    bResult = true;
                }
            }
            catch (BaseApplicationException Ex)
            {
                throw Ex;
            }
            catch (Exception Ex)
            {
                BaseApplicationException exBase       = new BaseApplicationException(Ex.Message, Ex);
                NameValueCollection      FunctionInfo = new NameValueCollection();
                FunctionInfo.Add("Method", "ModelPortfolioDao.cs:AttachSchemeToPortfolio()");

                object[] objects = new object[2];
                objects[0] = modelPortfolioVo;
                objects[1] = adviserId;
                objects[2] = IsActiveFlag;

                FunctionInfo = exBase.AddObject(FunctionInfo, objects);
                exBase.AdditionalInformation = FunctionInfo;
                ExceptionManager.Publish(exBase);
                throw exBase;
            }

            return(bResult);
        }
        public bool InsertModelPortfolioDetails(ModelPortfolioVo modelPortfolioVo, int adviserId)
        {
            bool      bResult = false;
            Database  db;
            DbCommand modelPortfolioCmd;

            try
            {
                db = DatabaseFactory.CreateDatabase("wealtherp");
                modelPortfolioCmd = db.GetStoredProcCommand("SP_InsertModelPortfolioDetails");
                db.AddInParameter(modelPortfolioCmd, "@portfolioName", DbType.String, modelPortfolioVo.PortfolioName);
                db.AddInParameter(modelPortfolioCmd, "@description", DbType.String, modelPortfolioVo.Description);
                db.AddInParameter(modelPortfolioCmd, "@lowerScore", DbType.Int32, modelPortfolioVo.LowerScore);
                db.AddInParameter(modelPortfolioCmd, "@upperScore", DbType.Int32, modelPortfolioVo.UpperScore);
                db.AddInParameter(modelPortfolioCmd, "@adviserId", DbType.Int32, adviserId);
                db.AddInParameter(modelPortfolioCmd, "@basisId", DbType.String, modelPortfolioVo.BasisId);
                db.AddOutParameter(modelPortfolioCmd, "@modelPortfolioCode", DbType.Int32, modelPortfolioVo.ModelPortfolioCode);
                db.AddOutParameter(modelPortfolioCmd, "@AMPBU_Id", DbType.Int32, modelPortfolioVo.AMPBU_Id);
                if (modelPortfolioVo.RiskClassCode != null)
                {
                    db.AddInParameter(modelPortfolioCmd, "@riskClassCode", DbType.String, modelPortfolioVo.RiskClassCode);
                }
                else
                {
                    db.AddInParameter(modelPortfolioCmd, "@riskClassCode", DbType.String, DBNull.Value);
                }
                if (db.ExecuteNonQuery(modelPortfolioCmd) != 0)
                {
                    bResult = true;
                }
            }
            catch (BaseApplicationException Ex)
            {
                throw Ex;
            }
            catch (Exception Ex)
            {
                BaseApplicationException exBase       = new BaseApplicationException(Ex.Message, Ex);
                NameValueCollection      FunctionInfo = new NameValueCollection();

                FunctionInfo.Add("Method", "ModelPortfolioDao.cs:InsertModelPortfolioDetails()");
                object[] objects = new object[1];
                objects[0] = modelPortfolioVo;
                objects[1] = adviserId;

                FunctionInfo = exBase.AddObject(FunctionInfo, objects);
                exBase.AdditionalInformation = FunctionInfo;
                ExceptionManager.Publish(exBase);
                throw exBase;
            }
            return(bResult);
        }
        public void EditModelPortfolioRecords(ModelPortfolioVo modelPortfolioVo, int AMPTBValueId)
        {
            Database  db;
            DbCommand EditRecordsCmd;

            try
            {
                db             = DatabaseFactory.CreateDatabase("wealtherp");
                EditRecordsCmd = db.GetStoredProcCommand("SP_EditModelPortfolioDetails");
                db.AddInParameter(EditRecordsCmd, "@amptbv_Id", DbType.Int32, AMPTBValueId);
                db.AddInParameter(EditRecordsCmd, "@portfolioName", DbType.String, modelPortfolioVo.PortfolioName);
                db.AddInParameter(EditRecordsCmd, "@description", DbType.String, modelPortfolioVo.Description);
                db.AddInParameter(EditRecordsCmd, "@lowerScore", DbType.Int32, modelPortfolioVo.LowerScore);
                db.AddInParameter(EditRecordsCmd, "@upperScore", DbType.Int32, modelPortfolioVo.UpperScore);
                db.AddOutParameter(EditRecordsCmd, "@modelPortfolioCode", DbType.Int32, modelPortfolioVo.ModelPortfolioCode);
                if (modelPortfolioVo.RiskClassCode != null)
                {
                    db.AddInParameter(EditRecordsCmd, "@riskClassCode", DbType.String, modelPortfolioVo.RiskClassCode);
                }
                else
                {
                    db.AddInParameter(EditRecordsCmd, "@riskClassCode", DbType.String, DBNull.Value);
                }
                db.ExecuteNonQuery(EditRecordsCmd);
            }
            catch (BaseApplicationException Ex)
            {
                throw Ex;
            }
            catch (Exception Ex)
            {
                BaseApplicationException exBase       = new BaseApplicationException(Ex.Message, Ex);
                NameValueCollection      FunctionInfo = new NameValueCollection();
                FunctionInfo.Add("Method", "ModelPortfolioDao.cs:EditModelPortfolioRecords()");

                object[] objects = new object[1];
                objects[0] = modelPortfolioVo;
                objects[1] = AMPTBValueId;

                FunctionInfo = exBase.AddObject(FunctionInfo, objects);
                exBase.AdditionalInformation = FunctionInfo;
                ExceptionManager.Publish(exBase);
                throw exBase;
            }
        }