public IActionResult Swing(NSEInsiderResponse request)
 {
     try
     {
         NSEInsider response = RestServiceUtils.MakeGetRestCallByTimeOut <NSEInsider>(URLConstants.NSEInsiderAPI, "https://www.nseindia.com/", 2, request.Cookie);
         if (response.IsNull())
         {
             return(View(new NSEInsiderResponse()
             {
                 ErrorMessage = CommonError.FailedToFetchData
             }));
         }
         if (!response.data.HasRecords())
         {
             return(View(new NSEInsiderResponse()
             {
                 ErrorMessage = CommonError.FailedToFetchData
             }));
         }
         List <StockData> filteredData = response.data.Where(x => x.acqMode == "Market Purchase" && (x.personCategory == "Promoter Group" || x.personCategory == "Promoters"))
                                         .GroupBy(r => r.symbol)
                                         .Select(a => new StockData()
         {
             Symbol = a.Key, Value = a.Sum(b => long.Parse(b.secVal))
         })
                                         .Where(p => p.Value > long.Parse("10000000")).OrderByDescending(x => x.Value)
                                         .ToList();
         TempData["Cookie"]  = request.Cookie;
         TempData["Symbols"] = string.Join(",", filteredData.Select(x => x.Symbol).ToList());
         if (filteredData.HasRecords())
         {
             return(View(new NSEInsiderResponse()
             {
                 IsSuccess = true, Stocks = filteredData, Cookie = request.Cookie, Symbols = string.Join(",", filteredData.Select(x => x.Symbol).ToList())
             }));
         }
         return(View(new NSEInsiderResponse()
         {
             ErrorMessage = CommonError.NoRecordsFound
         }));
     }
     catch (Exception)
     {
         return(View(new NSEInsiderResponse()
         {
             IsCookieRequired = true, ErrorMessage = CommonError.CookieExpired
         }));
     }
 }
        public long GetAveragePrice(string symbol, string cookie)
        {
            StockData stock = null;

            try
            {
                NSEInsider response = RestServiceUtils.MakeGetRestCallByTimeOut <NSEInsider>(string.Format(URLConstants.NSEInsiderCorporateAPI, symbol), "https://www.nseindia.com/", 1, cookie);
                if (response.IsNotNull())
                {
                    var filteredData = response.data.Where(x => x.symbol == symbol && x.acqMode == "Market Purchase" && (x.personCategory == "Promoter Group" || x.personCategory == "Promoters") && DateTime.Parse(x.acqfromDt) > DateTime.Now.AddMonths(-3));
                    stock = filteredData.GroupBy(r => r.symbol)
                            .Select(a => new StockData()
                    {
                        Symbol = a.Key, Value = a.Sum(b => long.Parse(b.secVal)), AveragePrice = a.Sum(b => long.Parse(b.secVal)) / a.Sum(b => long.Parse(b.secAcq))
                    })
                            .FirstOrDefault();
                }
                return(stock.AveragePrice);
            }
            catch (Exception)
            {
                return(-1);
            }
        }