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); } }