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 CorpDetailResp GetCorpInfo(string symbol, string cookie) { CorpDetailResp resp = new CorpDetailResp(); try { CorpInfo response = RestServiceUtils.MakeGetRestCallByTimeOut <CorpInfo>(string.Format(URLConstants.NSEGetCorpDetail, symbol), "https://www.nseindia.com/", 1, cookie); long p = default(long); resp.mfSold = response.corporate.sastRegulations_29.HasRecords() && response.corporate.sastRegulations_29.Where(x => DateTime.Parse(x.timestamp) > DateTime.Now.AddMonths(-5)).HasRecords() ? response.corporate.sastRegulations_29.Where(x => DateTime.Parse(x.timestamp) > DateTime.Now.AddMonths(-5)).Any(y => long.TryParse(y.noOfShareSale, out p)) : default(bool); resp.pledged = response.corporate.pledgedetails.HasRecords() ? decimal.Parse(response.corporate.pledgedetails.First().per3) > default(decimal) : default(bool); resp.PromoterDetails = response.corporate.shareholdingPatterns.data.HasRecords() ?response.corporate.shareholdingPatterns.data.First().ToJson() : string.Empty; resp.IsNotEligible = resp.mfSold || resp.pledged; return(resp.IsNotEligible ? null : resp); } catch (Exception) { return(null); } }
protected async Task <IActionResult> GetEmptyActionResult(Func <Task> action) { try { await action(); return(ApiOk()); } catch (ApiException ex) { ///Logger.Error(ex); return(RestServiceUtils.CreateErrorResult(ControllerContext.Request, ex)); } catch (Exception ex) { ///Logger.Error(ex); return(RestServiceUtils.CreateErrorResult(ControllerContext.Request, ex)); } }
protected async Task <IActionResult> GetActionResult <T>(Func <Task <T> > action) { try { T result = await action().ConfigureAwait(false); return(ApiOk(result)); } catch (ApiException ex) { ///Logger.Error(ex); return(RestServiceUtils.CreateErrorResult(ControllerContext.Request, ex)); } catch (Exception ex) { ///Logger.Error(ex); return(RestServiceUtils.CreateErrorResult(ControllerContext.Request, ex)); } }
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); } }