public void ProcessRequest(HttpContext context) { var tenant = context.Session["TenantID"]; int tenantId = tenant as int? ?? -1; if (tenantId == -1) { tenantId = Core.Utilities.Tenant.GetMasterID(); } var sessionTool = new SessionTools(context.Session); var cachedStatus = sessionTool.GetCache(context.Cache, CacheKey.Status, tenantId) as JsonStatus; try { if (cachedStatus != null) { context.Response.ContentType = "application/json"; context.Response.Write(JsonConvert.SerializeObject(cachedStatus)); return; } } catch (Exception ex) { this.Log().Error("Error looking up status data in cache: {0}", ex.Message); } var jsonResponse = new JsonStatus(); try { var result = new TenantStatus(tenantId).CurrentStatus(); jsonResponse.RegisteredPatrons = result.RegisteredPatrons; jsonResponse.PointsEarned = result.PointsEarned; jsonResponse.PointsEarnedReading = result.PointsEarnedReading; jsonResponse.ChallengesCompleted = result.ChallengesCompleted; jsonResponse.SecretCodesRedeemed = result.SecretCodesRedeemed; jsonResponse.AdventuresCompleted = result.AdventuresCompleted; jsonResponse.BadgesAwarded = result.BadgesAwarded; jsonResponse.RedeemedProgramCodes = result.RedeemedProgramCodes; jsonResponse.Since = "All Participants"; jsonResponse.Success = true; } catch (Exception ex) { this.Log().Error("Status update error: {0}", ex.Message); jsonResponse.Success = false; } if (jsonResponse.Success) { try { DateTime cacheUntil = DateTime.UtcNow.AddSeconds(30); if (sessionTool.GetCache(context.Cache, CacheKey.Status, tenantId) == null) { //this.Log().Debug("Caching status data until {0}", // cacheUntil.ToLocalTime().ToLongTimeString()); string tenantCacheKey = sessionTool.GetTenantCacheKey(CacheKey.Status, tenantId); context.Cache.Insert(tenantCacheKey, jsonResponse, null, cacheUntil, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); } } catch (Exception ex) { this.Log().Error("Error caching status response: {0}", ex.Message); } } context.Response.ContentType = "application/json"; context.Response.Write(JsonConvert.SerializeObject(jsonResponse)); }
public void ProcessRequest(HttpContext context) { var tenant = context.Session["TenantID"]; int tenantId = tenant as int? ?? -1; if (tenantId == -1) { tenantId = Core.Utilities.Tenant.GetMasterID(); } var sessionTool = new SessionTools(context.Session); var cachedStatus = sessionTool.GetCache(context.Cache, CacheKey.Feed, tenantId) as JsonStatus; try { if (cachedStatus != null) { context.Response.ContentType = "application/json"; context.Response.Write(JsonConvert.SerializeObject(cachedStatus)); return; } } catch (Exception ex) { this.Log().Error("Error looking up status data in cache: {0}", ex.Message); } var jsonResponse = new JsonStatus(); try { TenantStatusReport result = null; result = new TenantStatus(tenantId).CurrentStatus(); jsonResponse.PointsEarned = result.PointsEarned; jsonResponse.BadgesAwarded = result.BadgesAwarded; jsonResponse.ChallengesCompleted = result.ChallengesCompleted; jsonResponse.Since = "All Participants"; jsonResponse.Success = true; } catch (Exception ex) { this.Log().Error("Status update error: {0}", ex.Message); jsonResponse.Success = false; } if (jsonResponse.Success) { try { DateTime cacheUntil = DateTime.UtcNow.AddSeconds(30); if (sessionTool.GetCache(context.Cache, CacheKey.Feed, tenantId) == null) { //this.Log().Debug("Caching status data until {0}", // cacheUntil.ToLocalTime().ToLongTimeString()); string tenantCacheKey = sessionTool.GetTenantCacheKey(CacheKey.Status, tenantId); context.Cache.Insert(tenantCacheKey, jsonResponse, null, cacheUntil, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); } } catch (Exception ex) { this.Log().Error("Error caching status response: {0}", ex.Message); } } context.Response.ContentType = "application/json"; context.Response.Write(JsonConvert.SerializeObject(jsonResponse)); }
protected void DoFilter(EventSearchCriteria criteria) { StringBuilder sb = new StringBuilder(); if (!string.IsNullOrEmpty(criteria.StartDate)) { sb.Append("Start Date: "); sb.Append("<strong>"); sb.Append(criteria.StartDate); sb.Append("</strong>"); } if (!string.IsNullOrEmpty(criteria.EndDate)) { if (sb.Length > 0) { sb.Append(" / "); } sb.Append("End date: "); sb.Append("<strong>"); sb.Append(criteria.EndDate); sb.Append("</strong>"); } if (criteria.SystemId > 0) { if (sb.Length > 0) { sb.Append(" / "); } sb.Append("System: "); sb.Append("<strong>"); sb.Append(SystemId.Items.FindByValue(criteria.SystemId.ToString()).Text); sb.Append("</strong>"); } if (criteria.BranchId > 0) { if (sb.Length > 0) { sb.Append(" / "); } sb.Append("Branch/library: "); sb.Append("<strong>"); sb.Append(criteria.BranchName); sb.Append("</strong>"); } if (!string.IsNullOrWhiteSpace(criteria.SearchText)) { if (sb.Length > 0) { sb.Append(" / "); } sb.Append("Search text: "); sb.Append("<strong>"); sb.Append(criteria.SearchText); sb.Append("</strong>"); } WhatsShowing.Text = WhatsShowingPrint.Text = sb.ToString(); WhatsShowingPanel.Visible = Filtered = !string.IsNullOrEmpty(WhatsShowing.Text); if (string.IsNullOrEmpty(WhatsShowing.Text)) { // no filter criteria, use cache if possible var st = new SessionTools(Session); var cachedEvents = st.GetCache(Cache, CacheKey.AllEvents) as System.Data.DataSet; if (cachedEvents != null) { rptr.DataSource = cachedEvents; } else { var allEvents = Event.GetUpcomingDisplay( criteria.StartDate, criteria.EndDate, criteria.SystemId, criteria.BranchId, criteria.SearchText); rptr.DataSource = allEvents; string tenantCacheKey = st.GetTenantCacheKey(CacheKey.AllEvents); Cache.Insert(tenantCacheKey, allEvents, null, DateTime.UtcNow.AddHours(2), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); } } else { rptr.DataSource = Event.GetUpcomingDisplay( criteria.StartDate, criteria.EndDate, criteria.SystemId, criteria.BranchId, criteria.SearchText); } rptr.DataBind(); var wt = new WebTools(); if (Filtered) { StartDate.CssClass = wt.CssEnsureClass(StartDate.CssClass, "gra-search-active"); EndDate.CssClass = wt.CssEnsureClass(EndDate.CssClass, "gra-search-active"); BranchId.CssClass = wt.CssEnsureClass(BranchId.CssClass, "gra-search-active"); SystemId.CssClass = wt.CssEnsureClass(SystemId.CssClass, "gra-search-active"); SearchText.CssClass = wt.CssEnsureClass(SearchText.CssClass, "gra-search-active"); } else { StartDate.CssClass = wt.CssRemoveClass(StartDate.CssClass, "gra-search-active"); EndDate.CssClass = wt.CssRemoveClass(EndDate.CssClass, "gra-search-active"); BranchId.CssClass = wt.CssRemoveClass(BranchId.CssClass, "gra-search-active"); SystemId.CssClass = wt.CssRemoveClass(SystemId.CssClass, "gra-search-active"); SearchText.CssClass = wt.CssRemoveClass(SearchText.CssClass, "gra-search-active"); } }
protected void DoFilter(EventSearchCriteria criteria) { StringBuilder sb = new StringBuilder(); if (!string.IsNullOrEmpty(criteria.StartDate)) { sb.Append("Start Date: "); sb.Append("<strong>"); sb.Append(criteria.StartDate); sb.Append("</strong>"); } if (!string.IsNullOrEmpty(criteria.EndDate)) { if (sb.Length > 0) { sb.Append(" / "); } sb.Append("End date: "); sb.Append("<strong>"); sb.Append(criteria.EndDate); sb.Append("</strong>"); } if (criteria.SystemId > 0) { if (sb.Length > 0) { sb.Append(" / "); } sb.Append("System: "); sb.Append("<strong>"); sb.Append(SystemId.Items.FindByValue(criteria.SystemId.ToString()).Text); sb.Append("</strong>"); } if (criteria.BranchId > 0) { if (sb.Length > 0) { sb.Append(" / "); } sb.Append("Branch/library: "); sb.Append("<strong>"); sb.Append(criteria.BranchName); sb.Append("</strong>"); } if (!string.IsNullOrWhiteSpace(criteria.SearchText)) { if (sb.Length > 0) { sb.Append(" / "); } sb.Append("Search text: "); sb.Append("<strong>"); sb.Append(criteria.SearchText); sb.Append("</strong>"); } WhatsShowing.Text = WhatsShowingPrint.Text = sb.ToString(); WhatsShowingPanel.Visible = Filtered = !string.IsNullOrEmpty(WhatsShowing.Text); if (string.IsNullOrEmpty(WhatsShowing.Text)) { // no filter criteria, use cache if possible var st = new SessionTools(Session); var cachedEvents = st.GetCache(Cache, CacheKey.AllEvents) as System.Data.DataSet; if (cachedEvents != null) { rptr.DataSource = cachedEvents; } else { var allEvents = Event.GetUpcomingDisplay( criteria.StartDate, criteria.EndDate, criteria.SystemId, criteria.BranchId, criteria.SearchText); rptr.DataSource = allEvents; string tenantCacheKey = st.GetTenantCacheKey(CacheKey.AllEvents); Cache.Insert(tenantCacheKey, allEvents, null, DateTime.UtcNow.AddHours(2), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); } } else { rptr.DataSource = Event.GetUpcomingDisplay( criteria.StartDate, criteria.EndDate, criteria.SystemId, criteria.BranchId, criteria.SearchText); } rptr.DataBind(); var wt = new WebTools(); if (Filtered) { StartDate.CssClass = wt.CssEnsureClass(StartDate.CssClass, "gra-search-active"); EndDate.CssClass = wt.CssEnsureClass(EndDate.CssClass, "gra-search-active"); BranchId.CssClass = wt.CssEnsureClass(BranchId.CssClass, "gra-search-active"); SystemId.CssClass = wt.CssEnsureClass(SystemId.CssClass, "gra-search-active"); SearchText.CssClass = wt.CssEnsureClass(SearchText.CssClass, "gra-search-active"); } else { StartDate.CssClass = wt.CssRemoveClass(StartDate.CssClass, "gra-search-active"); EndDate.CssClass = wt.CssRemoveClass(EndDate.CssClass, "gra-search-active"); BranchId.CssClass = wt.CssRemoveClass(BranchId.CssClass, "gra-search-active"); SystemId.CssClass = wt.CssRemoveClass(SystemId.CssClass, "gra-search-active"); SearchText.CssClass = wt.CssRemoveClass(SearchText.CssClass, "gra-search-active"); } }
public void ProcessRequest(HttpContext context) { var tenant = context.Session["TenantID"]; int tenantId = tenant as int? ?? -1; if (tenantId == -1) { tenantId = Core.Utilities.Tenant.GetMasterID(); } var sessionTool = new SessionTools(context.Session); var cachedFeed = sessionTool.GetCache(context.Cache, CacheKey.Feed, tenantId) as JsonFeed; try { if (cachedFeed != null) { context.Response.ContentType = "application/json"; context.Response.Write(JsonConvert.SerializeObject(cachedFeed)); return; } } catch (Exception ex) { this.Log().Error("Error looking up feed data in cache: {0}", ex.Message); } var jsonResponse = new JsonFeed(); var entries = new List<JsonFeedEntry>(); int after = 0; int.TryParse(context.Request.QueryString["after"], out after); try { var feed = new ActivityFeed().Latest(after, tenantId); foreach (DataRow dataRow in feed.Rows) { var entry = new JsonFeedEntry { ID = (int)dataRow["PPID"], PatronId = (int)dataRow["PID"], Username = (string)dataRow["Username"], AwardedAt = ((DateTime)dataRow["AwardDate"]).ToString(), AwardReasonId = (int)dataRow["AwardReasonCd"], BadgeId = (int)dataRow["BadgeId"], ChallengeId = dataRow["BLID"] == DBNull.Value ? 0 : (int)dataRow["BLID"], ChallengeProgramId = dataRow["BLProgID"] == DBNull.Value ? 0 : (int)dataRow["BLProgID"], AvatarState = dataRow["AvatarState"] == DBNull.Value ? string.Empty : (string)dataRow["AvatarState"] }; if (entry.ID > jsonResponse.Latest) { jsonResponse.Latest = entry.ID; } switch (entry.AwardReasonId) { case 1: // got badge entry.AchievementName = (string)dataRow["BadgeName"]; break; case 2: // completed challenge entry.AchievementName = (string)dataRow["ListName"]; break; case 4: entry.AchievementName = (string)dataRow["GameName"]; break; } entries.Add(entry); } jsonResponse.Entries = entries.ToArray(); jsonResponse.Success = true; } catch (Exception ex) { this.Log().Error("Error loading feed: {0}", ex.Message); jsonResponse.Success = false; } if (jsonResponse.Success) { try { DateTime cacheUntil = DateTime.UtcNow.AddSeconds(30); if (sessionTool.GetCache(context.Cache, CacheKey.Feed, tenantId) == null) { //this.Log().Debug("Caching feed data until {0}", // cacheUntil.ToLocalTime().ToLongTimeString()); string tenantCacheKey = sessionTool.GetTenantCacheKey(CacheKey.Feed, tenantId); context.Cache.Insert(tenantCacheKey, jsonResponse, null, cacheUntil, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); } } catch (Exception ex) { this.Log().Error("Error caching feed response: {0}", ex.Message); } } context.Response.ContentType = "application/json"; context.Response.Write(JsonConvert.SerializeObject(jsonResponse)); }
public void ProcessRequest(HttpContext context) { var tenant = context.Session["TenantID"]; int tenantId = tenant as int? ?? -1; if (tenantId == -1) { tenantId = Core.Utilities.Tenant.GetMasterID(); } var sessionTool = new SessionTools(context.Session); var cachedFeed = sessionTool.GetCache(context.Cache, CacheKey.Feed, tenantId) as JsonFeed; try { if (cachedFeed != null) { context.Response.ContentType = "application/json"; context.Response.Write(JsonConvert.SerializeObject(cachedFeed)); return; } } catch (Exception ex) { this.Log().Error("Error looking up feed data in cache: {0}", ex.Message); } var jsonResponse = new JsonFeed(); var entries = new List <JsonFeedEntry>(); int after = 0; int.TryParse(context.Request.QueryString["after"], out after); try { var feed = new ActivityFeed().Latest(after, tenantId); foreach (DataRow dataRow in feed.Rows) { var entry = new JsonFeedEntry { ID = (int)dataRow["PPID"], PatronId = (int)dataRow["PID"], Username = (string)dataRow["Username"], AwardedAt = ((DateTime)dataRow["AwardDate"]).ToString(), AwardReasonId = (int)dataRow["AwardReasonCd"], BadgeId = (int)dataRow["BadgeId"], ChallengeId = dataRow["BLID"] == DBNull.Value ? 0 : (int)dataRow["BLID"], ChallengeProgramId = dataRow["BLProgID"] == DBNull.Value ? 0 : (int)dataRow["BLProgID"], AvatarState = dataRow["AvatarState"] == DBNull.Value ? string.Empty : (string)dataRow["AvatarState"] }; if (entry.ID > jsonResponse.Latest) { jsonResponse.Latest = entry.ID; } switch (entry.AwardReasonId) { case 1: // got badge entry.AchievementName = (string)dataRow["BadgeName"]; break; case 2: // completed challenge entry.AchievementName = (string)dataRow["ListName"]; break; case 4: entry.AchievementName = (string)dataRow["GameName"]; break; } entries.Add(entry); } jsonResponse.Entries = entries.ToArray(); jsonResponse.Success = true; } catch (Exception ex) { this.Log().Error("Error loading feed: {0}", ex.Message); jsonResponse.Success = false; } if (jsonResponse.Success) { try { DateTime cacheUntil = DateTime.UtcNow.AddSeconds(30); if (sessionTool.GetCache(context.Cache, CacheKey.Feed, tenantId) == null) { //this.Log().Debug("Caching feed data until {0}", // cacheUntil.ToLocalTime().ToLongTimeString()); string tenantCacheKey = sessionTool.GetTenantCacheKey(CacheKey.Feed, tenantId); context.Cache.Insert(tenantCacheKey, jsonResponse, null, cacheUntil, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); } } catch (Exception ex) { this.Log().Error("Error caching feed response: {0}", ex.Message); } } context.Response.ContentType = "application/json"; context.Response.Write(JsonConvert.SerializeObject(jsonResponse)); }