public DailyText GetTodaysText() { var easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); var easternTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, easternZone); //First Check Redis Cache var dailyText = _redisManager.GetDailyText(easternTime); if (dailyText != null) { return(dailyText); } //Next Check SQL Server dailyText = _dailyTextManagerQuery.GetDailyText(easternTime); if (dailyText != null) { _logger.Info(string.Format("Daily Text Found in SQL Server with date: {0}", easternTime)); _redisManager.InsertDailyText(dailyText); return(dailyText); } //Retrieve the text from the online library var url = string.Format("http://wol.jw.org/en/wol/dt/r1/lp-e/{0}/{1}/{2}", easternTime.Year, easternTime.Month, easternTime.Day); var web = new HtmlWeb(); var doc = web.Load(url); /* * dailyText = new DailyText * { * Id = Guid.NewGuid(), * DateLine = ParseNode(doc, "//p[@class='ss']"), * Header = ParseNode(doc, "//p[@class='sa']"), * Body = ParseNode(doc, "//p[@class='sb']"), * DateEntered = easternTime * }; */ dailyText = new DailyText { Id = Guid.NewGuid(), DateLine = DateTime.Now.ToLongDateString(), Header = ParseNode(doc, "//p[@class='themeScrp']"), Body = ParseNode(doc, "//p[@class='sb']"), DateEntered = easternTime }; _logger.Info(string.Format("Daily Text retrieved from WOL with date: {0}", easternTime)); //Put the text into the cache & SQL Server _redisManager.InsertDailyText(dailyText); //Put the text into SQL Server _dailyTextManagerQuery.InsertDailyText(dailyText); return(dailyText); }