private void PopulateData()
        {
            try
            {
                oDataAccessLayer.OpenConnection((int)DataAccessLayer.ConnectionDB.TraderEntitlement);

                string strQuery = @"SELECT Branch,TraderGroup,TraderId,ClientViewOnTraderTerminal,OrderPlacementOutClientMaster,ViewClientOnLevel,I4LBlock,I6LBlock,Filler,AuctionBlock,BlockDealBlock,OddLotBlock,InstitutionalTradingBlock, NotApplicable,RevertFromTrader FROM TRADER_ENTITLEMENT";

                SQLiteDataReader oSQLiteDataReader = oDataAccessLayer.ExecuteDataReader((int)ConnectionDB.TraderEntitlement, strQuery, System.Data.CommandType.Text, null);
                while (oSQLiteDataReader.Read())
                {
                    TraderEntitlementModel oTraderEntitlementModel = new TraderEntitlementModel();
                    oTraderEntitlementModel.Branch       = oSQLiteDataReader["Branch"].ToString();
                    oTraderEntitlementModel.TraderGroup  = oSQLiteDataReader["TraderGroup"].ToString();
                    oTraderEntitlementModel.TraderId     = Convert.ToString(oSQLiteDataReader["TraderId"]);
                    oTraderEntitlementModel.TraderIdSort = Convert.ToInt32(oTraderEntitlementModel.TraderId);

                    oTraderEntitlementModel.ClientView       = Convert.ToString(oSQLiteDataReader["ClientViewOnTraderTerminal"]);
                    oTraderEntitlementModel.OrderRights      = oSQLiteDataReader["OrderPlacementOutClientMaster"].ToString();
                    oTraderEntitlementModel.ClientViewAT     = oSQLiteDataReader["ViewClientOnLevel"].ToString();
                    oTraderEntitlementModel.FourLBlock       = Convert.ToBoolean(oSQLiteDataReader["I4LBlock"]);
                    oTraderEntitlementModel.SixLBlock        = Convert.ToBoolean(oSQLiteDataReader["I6LBlock"]);
                    oTraderEntitlementModel.AuctionBlock     = Convert.ToBoolean(oSQLiteDataReader["AuctionBlock"]);
                    oTraderEntitlementModel.BlockDealBlock   = Convert.ToBoolean(oSQLiteDataReader["BlockDealBlock"]);
                    oTraderEntitlementModel.ODDlotBlock      = Convert.ToBoolean(oSQLiteDataReader["OddLotBlock"]);
                    oTraderEntitlementModel.InstTradingBlock = Convert.ToBoolean(oSQLiteDataReader["InstitutionalTradingBlock"]);
                    oTraderEntitlementModel.NotApplicable    = Convert.ToBoolean(oSQLiteDataReader["NotApplicable"].ToString());

                    TraderEntitlementCollection.Add(oTraderEntitlementModel);
                }
                TraderEntitlementCollection = new ObservableCollection <TraderEntitlementModel>(TraderEntitlementCollection.OrderBy(i => i.TraderIdSort));
                RecordCount = TraderEntitlementCollection.Count;
                NewTraderEntitlementCollection = TraderEntitlementCollection;
            }
            catch (Exception ex)
            {
                ExceptionUtility.LogError(ex);
            }
            finally
            {
                oDataAccessLayer.CloseConnection((int)DataAccessLayer.ConnectionDB.TraderEntitlement);
            }
        }
        /// <summary>
        /// Addition of existing trader info : Added By Apoorva Sharma 7/05/2018
        /// </summary>
        public void ModifyGrid()
        {
            try
            {
                Reset();
                bool NullCheckValue = NullCheck();
                if (NullCheckValue)
                {
                    TraderEntitlementModel oTEModel = new TraderEntitlementModel();

                    int index = TraderEntitlementCollection.IndexOf(TraderEntitlementCollection.Where(x => x.TraderId == VTraderId).FirstOrDefault());
                    if (TraderEntitlementCollection.Any(x => x.TraderId == VTraderId))
                    {
                        TraderEntitlementCollection.RemoveAt(index);
                    }
                    else
                    {
                        //    MessageBox.Show("Trader not found in Database", "!Warning!", MessageBoxButton.OK, MessageBoxImage.Error);
                    }

                    oTEModel.Branch           = VBranch.ToString();
                    oTEModel.TraderId         = VTraderId.ToString();
                    oTEModel.TraderIdSort     = Convert.ToInt32(oTEModel.TraderId);
                    oTEModel.TraderGroup      = VGroup.ToString();
                    oTEModel.ClientView       = ClientViewOnTrader.ToString();
                    oTEModel.ClientViewAT     = ViewClientOnLevel.ToString();
                    oTEModel.AuctionBlock     = AuctionBlock;
                    oTEModel.FourLBlock       = I4LBlock;
                    oTEModel.SixLBlock        = I6LBlock;
                    oTEModel.InstTradingBlock = InstitutionalTradingBlock;
                    oTEModel.ODDlotBlock      = OddLotBlock;
                    oTEModel.OrderRights      = OrderPlacementOutClientMaster.ToString();
                    oTEModel.BlockDealBlock   = BlockDealBlock;
                    oTEModel.NotApplicable    = NotApplicable;
                    oTEModel.Revert           = Revert;

                    TraderEntitlementCollection.Add(oTEModel);
                    TraderEntitlementCollection    = new ObservableCollection <TraderEntitlementModel>(TraderEntitlementCollection.OrderBy(i => i.TraderIdSort));
                    NewTraderEntitlementCollection = TraderEntitlementCollection;
                    RecordCount = TraderEntitlementCollection.Count();

                    oDataAccessLayer.OpenConnection((int)DataAccessLayer.ConnectionDB.TraderEntitlement);
                    str = @"UPDATE TRADER_ENTITLEMENT SET Branch = '" + VBranch + "', " +
                          "TraderGroup = '" + VGroup + "', " +
                          "TraderId = '" + VTraderId + "', " +
                          "ClientViewOnTraderTerminal = '" + ClientViewOnTrader + "' ," +
                          "OrderPlacementOutClientMaster = '" + OrderPlacementOutClientMaster + "', " +
                          "ViewClientOnLevel = '" + ViewClientOnLevel + "' ," +
                          "I4LBlock = '" + I4LBlock + "' ," +
                          "I6LBlock = '" + I6LBlock + "' ," +
                          "Filler = '" + "NA" + "' ," +
                          "AuctionBlock = '" + AuctionBlock + "' ," +
                          "BlockDealBlock = '" + BlockDealBlock + "' ," +
                          "OddLotBlock = '" + OddLotBlock + "' ," +
                          "InstitutionalTradingBlock = '" + InstitutionalTradingBlock + "' ," +
                          "NotApplicable = '" + NotApplicable + "' ," +
                          "RevertFromTrader = '" + Revert + "'" +
                          "WHERE TraderId = '" + VTraderId + "'";
                    int result = oDataAccessLayer.ExecuteNonQuery((int)ConnectionDB.TraderEntitlement, str, System.Data.CommandType.Text, null);
                    Replytxt = "Trader Modified";
                }
            }
            catch (Exception ex)
            {
                ExceptionUtility.LogError(ex);
            }
            finally
            {
                oDataAccessLayer.CloseConnection((int)DataAccessLayer.ConnectionDB.TraderEntitlement);
            }
        }
        /// <summary>
        /// Addition of new trader info :Added By Apoorva Sharma 7/05/2018
        /// </summary>
        private void ModelCreation()
        {
            try
            {
                Reset();
                bool NullCheckValue = NullCheck();
                if (NullCheckValue)
                {
                    TraderEntitlementModel oTEModel = new TraderEntitlementModel();
                    oTEModel.Branch           = VBranch?.ToString();
                    oTEModel.TraderId         = VTraderId?.ToString();
                    oTEModel.TraderIdSort     = Convert.ToInt32(oTEModel.TraderId);
                    oTEModel.TraderGroup      = VGroup?.ToString();
                    oTEModel.ClientView       = ClientViewOnTrader?.ToString();
                    oTEModel.ClientViewAT     = ViewClientOnLevel?.ToString();
                    oTEModel.AuctionBlock     = AuctionBlock;
                    oTEModel.FourLBlock       = I4LBlock;
                    oTEModel.SixLBlock        = I6LBlock;
                    oTEModel.InstTradingBlock = InstitutionalTradingBlock;
                    oTEModel.ODDlotBlock      = OddLotBlock;
                    oTEModel.OrderRights      = OrderPlacementOutClientMaster.ToString();;
                    oTEModel.BlockDealBlock   = BlockDealBlock;
                    oTEModel.NotApplicable    = NotApplicable;
                    oTEModel.Revert           = Revert;
                    //check short traderid duplication case
                    if (SelectedTraderADDUpdate == "Add")
                    {
                        if (TraderEntitlementCollection.Count > 0)
                        {
                            if (TraderEntitlementCollection.Any(x => x.TraderId == VTraderId))
                            {
                                Replytxt = "The TraderId Already exist";
                                return;
                            }
                            else
                            {
                                ModifyFlag = false;
                                TraderEntitlementCollection.Add(oTEModel);

                                oDataAccessLayer.OpenConnection((int)DataAccessLayer.ConnectionDB.TraderEntitlement);

                                str = @"INSERT INTO TRADER_ENTITLEMENT(Branch, TraderGroup,
                                   TraderId,
                                   ClientViewOnTraderTerminal,
                                   OrderPlacementOutClientMaster,
                                   ViewClientOnLevel,
                                   I4LBlock,
                                   I6LBlock,
                                   Filler,
                                   AuctionBlock,
                                   BlockDealBlock,
                                   OddLotBlock,
                                   InstitutionalTradingBlock,
                                   NotApplicable,
                                   RevertFromTrader) VALUES( " + "'" + oTEModel.Branch + "'," + "'" + oTEModel.TraderGroup + "'," + "'" + oTEModel.TraderId + "'," + "'" + oTEModel.ClientView + "'," + "'" + oTEModel.OrderRights + "'," + "'" + oTEModel.ClientViewAT + "'," + "'" + oTEModel.FourLBlock + "'," + "'" + oTEModel.SixLBlock + "'," + "'" + "NA" + "'," + "'" + oTEModel.AuctionBlock + "'," + "'" + oTEModel.BlockDealBlock + "'," + "'" + oTEModel.ODDlotBlock + "'," + "'" + oTEModel.InstTradingBlock + "'," + "'" + oTEModel.NotApplicable + "'," + "'" + oTEModel.Revert + "'); ";

                                int result = oDataAccessLayer.ExecuteNonQuery((int)ConnectionDB.TraderEntitlement, str, System.Data.CommandType.Text, null);
                                Replytxt = "Trader added successfully";
                            }
                        }
                    }
                    else if (SelectedTraderADDUpdate == "Modify")
                    {
                        ModifyGrid();
                    }
                    //else if(TraderEntitlementCollection.Count==0)
                    // TraderEntitlementCollection.Add(oTEModel);
                    TraderEntitlementCollection    = new ObservableCollection <TraderEntitlementModel>(TraderEntitlementCollection.OrderBy(i => i.TraderIdSort));
                    NewTraderEntitlementCollection = TraderEntitlementCollection;
                    RecordCount = TraderEntitlementCollection.Count;
                    //MasterSharedMemory.oDataAccessLayer.OpenConnection((int)DataAccessLayer.ConnectionDB.Masters);
                    //int result = MasterSharedMemory.oDataAccessLayer.ExecuteNonQuery((int)ConnectionDB.Mastersstr, System.Data.CommandType.Text, null);
                    //TODO:  insert and update in db
                }
            }

            catch (Exception ex)
            {
                ExceptionUtility.LogError(ex);
            }
            finally
            {
                oDataAccessLayer.CloseConnection((int)DataAccessLayer.ConnectionDB.TraderEntitlement);
            }
        }
        /// <summary>
        /// mirroring desired trader info to other traders : Added by Apoorva Sharma 8/05/2018
        /// </summary>
        private void CopyInfoTrader()
        {
            FrmTraderEntitlementCollection     = new ObservableCollection <TraderEntitlementModel>();
            CopyFrmTraderEntitlementCollection = new ObservableCollection <TraderEntitlementModel>();
            CopyFrmTraderEntitlementCollection = TraderEntitlementCollection;
            try
            {
                if (FrmTraderId != null)
                {
                    string[] tokens      = ToTraderId.Split(',');
                    int      tokenLength = tokens.Length;

                    for (int i = 0; i < tokenLength; i++)
                    {
                        int index = CopyFrmTraderEntitlementCollection.IndexOf(CopyFrmTraderEntitlementCollection.Where(x => x.TraderId == tokens[i]).FirstOrDefault());
                        if (CopyFrmTraderEntitlementCollection.Any(x => x.TraderId == tokens[i]))
                        {
                            CopyFrmTraderEntitlementCollection.RemoveAt(index);
                        }
                    }


                    foreach (var item in CopyFrmTraderEntitlementCollection.Where(x => x.TraderId == FrmTraderId))
                    {
                        FrmTraderEntitlementCollection.Add(item);
                    }
                    // FrmTraderEntitlementCollection.Add(TraderEntitlementCollection.Where(x => x.TraderId == FrmTraderId).FirstOrDefault());


                    for (int i = 0; i < tokenLength; i++)
                    {
                        TraderEntitlementModel oTEModel = new TraderEntitlementModel();
                        oTEModel.Branch           = FrmTraderEntitlementCollection[0].Branch.ToString();
                        oTEModel.TraderId         = tokens[i].ToString();
                        oTEModel.TraderIdSort     = Convert.ToInt32(oTEModel.TraderId);
                        oTEModel.TraderGroup      = FrmTraderEntitlementCollection[0].TraderGroup.ToString();
                        oTEModel.ClientView       = FrmTraderEntitlementCollection[0].ClientView.ToString();
                        oTEModel.ClientViewAT     = FrmTraderEntitlementCollection[0].ClientViewAT.ToString();
                        oTEModel.AuctionBlock     = FrmTraderEntitlementCollection[0].AuctionBlock;
                        oTEModel.FourLBlock       = FrmTraderEntitlementCollection[0].FourLBlock;
                        oTEModel.SixLBlock        = FrmTraderEntitlementCollection[0].SixLBlock;
                        oTEModel.InstTradingBlock = FrmTraderEntitlementCollection[0].InstTradingBlock;
                        oTEModel.ODDlotBlock      = FrmTraderEntitlementCollection[0].ODDlotBlock;
                        oTEModel.OrderRights      = FrmTraderEntitlementCollection[0].OrderRights.ToString();
                        oTEModel.BlockDealBlock   = FrmTraderEntitlementCollection[0].BlockDealBlock;
                        oTEModel.NotApplicable    = FrmTraderEntitlementCollection[0].NotApplicable;
                        oTEModel.Revert           = FrmTraderEntitlementCollection[0].Revert;
                        CopyFrmTraderEntitlementCollection.Add(oTEModel);
                    }

                    CopyFrmTraderEntitlementCollection = new ObservableCollection <TraderEntitlementModel>(CopyFrmTraderEntitlementCollection.OrderBy(i => i.TraderIdSort));

                    int res = InsertCopyTrdrInfo(CopyFrmTraderEntitlementCollection);
                    if (res > 0)
                    {
                        Replytxt = "Trader added successfully";
                        TraderEntitlementCollection = CopyFrmTraderEntitlementCollection;
                    }
                    else
                    {
                        Replytxt = "Error while saving the trader infromation";
                    }
                    RecordCount = TraderEntitlementCollection.Count();
                    NewTraderEntitlementCollection = TraderEntitlementCollection;
                }
            }
            catch (Exception ex)
            {
                ExceptionUtility.LogError(ex);
            }
            finally
            {
                oDataAccessLayer.CloseConnection((int)DataAccessLayer.ConnectionDB.TraderEntitlement);
            }
        }