Exemplo n.º 1
0
        public ValidationResponse ValidateClientOpenBookOpenTrades(string userName, List <OpenBookPositionData> uiBasedPositionList,
                                                                   int flowRunId, int flowId, string flowName, int testID,
                                                                   string testName)
        {
            var validationResponseresult = new ValidationResponse();

            validationResponseresult.Successful = true;
            //      var stockList = _dataAccess.GetStockListData(1945605);

            List <OpenBookPositionData> dbiPositionListData = _dataAccess.getOpenBookPositionDataList(userName);

            //Verify both position lists are the same size
            if (dbiPositionListData != null)
            {
                if (dbiPositionListData.Count != uiBasedPositionList.Count)
                {
                    List <int> posListDb = dbiPositionListData.Select(d => d.PositionID).ToList();

                    foreach (int y in posListDb)
                    {
                        if (!uiBasedPositionList.Exists(p => p.PositionID == y))
                        {
                            //return p.PositionID dosen't exists

                            validationResponseresult.Successful  = false;
                            validationResponseresult.Information = validationResponseresult.Information + " OpenTrades pos# -" +
                                                                   y + " Instrument  : " + dbiPositionListData.Find(x => x.PositionID == y).InstrumentDisplayName + " was not found in OB \n";
                        }
                    }

                    List <int> posListOb = uiBasedPositionList.Select(d => d.PositionID).ToList();
                    //Validate what missin in UI
                    foreach (int y in posListOb)
                    {
                        if (!dbiPositionListData.Exists(p => p.PositionID == y))
                        {
                            //return p.PositionID dosen't exists

                            validationResponseresult.Successful  = false;
                            validationResponseresult.Information = validationResponseresult.Information + " Open Trades pos# -" +
                                                                   y + " Instrument : " + uiBasedPositionList.Find(x => x.PositionID == y).InstrumentDisplayName + " was not found in DB \n";
                        }
                    }



                    return(validationResponseresult);
                }
            }

            //Validate what is missing in DB

            for (int i = 0; i < dbiPositionListData.Count; i++)
            {
                OpenBookPositionData dbFetchedPosObj =
                    dbiPositionListData.SingleOrDefault(pos => pos.PositionID == uiBasedPositionList.ElementAt(i).PositionID);
                if (dbFetchedPosObj != null)
                {
                    TestFlowInfo tfi = new TestFlowInfo(true, flowName);
                    if (!Comparator.AreObjectsEqual(dbFetchedPosObj, uiBasedPositionList.ElementAt(i), ref tfi, 0, "Pos. ID#" + dbiPositionListData.ElementAt(i).PositionID))
                    //!Comparator.AreObjectsEqual(dbFetchedPosObj, uiBasedPositionList.ElementAt(i), flowRunId, flowId,flowName, testID, testName, 0,"Pos. ID#" + dbiPositionListData.ElementAt(i).PositionID))
                    {
                        validationResponseresult.Successful  = false;
                        validationResponseresult.Information = "Pos. ID#" + dbiPositionListData.ElementAt(i).PositionID;
                    }
                }
                else
                {
                    validationResponseresult.Successful  = false;
                    validationResponseresult.Information = "ValidateClientPositionList failiure pos# -" +
                                                           uiBasedPositionList.ElementAt(i).PositionID + " was not found in DB ";
                }
            }

            return(validationResponseresult);
        }