protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { var patron = Session[SessionKey.Patron] as DAL.Patron; if (patron == null) { return; } var program = DAL.Programs.FetchObject(patron.ProgID); if (program == null || !program.IsOpen || !program.DisplayDailyImage || DateTime.Now < program.LoggingStart || DateTime.Now > program.LoggingEnd) { return; } string imagePath = string.Format(DailyImagePath, program.PID, (DateTime.Now - program.LoggingStart).Days + 1); if (System.IO.File.Exists(Server.MapPath(imagePath))) { DailyImageButton.HRef = Page.ResolveUrl(imagePath); DailyImageButton.Visible = true; } else { var sessionTools = new SessionTools(Session); var cached = sessionTools.GetCache(Cache, "LoggedAboutDailyImage"); if (cached == null) { this.Log().Warn("Unable to show daily image - file doesn't exist: {0}", Server.MapPath(imagePath)); sessionTools.SetCache(Cache, "LoggedAboutDailyImage", true); } } } }
public int UnreadCrMail(HttpContext context) { if (context.Session == null) { return(0); } var tenant = context.Session[GRA.SRP.ControlRoom.CRSessionKey.TenantID]; int tenantId = tenant as int? ?? -1; if (tenantId == -1) { return(0); } var sessionTool = new SessionTools(context.Session); var cachedFeed = sessionTool.GetCache(context.Cache, GRA.SRP.ControlRoom.CRSessionKey.UnreadMail, tenantId) as int?; if (cachedFeed != null) { return((int)cachedFeed); } else { var unread = SRP.DAL.Notifications.GetAllUnreadToPatron(0); if (unread != null && unread.Tables.Count > 0) { int unreadMessages = unread.Tables[0].Rows.Count; sessionTool.SetCache(context.Cache, GRA.SRP.ControlRoom.CRSessionKey.UnreadMail, unreadMessages, tenantId, 60); return(unreadMessages); } return(0); } }
public int UnreadCrMail(HttpContext context) { if (context.Session == null) { return 0; } var tenant = context.Session[GRA.SRP.ControlRoom.CRSessionKey.TenantID]; int tenantId = tenant as int? ?? -1; if (tenantId == -1) { return 0; } var sessionTool = new SessionTools(context.Session); var cachedFeed = sessionTool.GetCache(context.Cache, GRA.SRP.ControlRoom.CRSessionKey.UnreadMail, tenantId) as int?; if (cachedFeed != null) { return (int)cachedFeed; } else { var unread = SRP.DAL.Notifications.GetAllUnreadToPatron(0); if (unread != null && unread.Tables.Count > 0) { int unreadMessages = unread.Tables[0].Rows.Count; sessionTool.SetCache(context.Cache, GRA.SRP.ControlRoom.CRSessionKey.UnreadMail, unreadMessages, tenantId, 60); return unreadMessages; } return 0; } }
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 Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["Patron"] == null) { Response.Redirect("~"); } var patron = (Patron)Session[SessionKey.Patron]; var program = Programs.FetchObject(patron.ProgID); ViewState[RequireBookDetailsKey] = program.RequireBookDetails; ViewState[PatronCanReviewKey] = program.PatronReviewFlag; if (program == null || !program.IsOpen) { readingLogControlPanel.Visible = false; return; } ViewState[ProgramGameIdKey] = program.PID.ToString(); if (Request.Cookies[CookieKey.LogBookDetails] != null) { enterBookDetails.Checked = true; } foreach (ActivityType activityTypeValue in Enum.GetValues(typeof(ActivityType))) { int activityTypeId = (int)activityTypeValue; var sessionTool = new SessionTools(Session); string lookupString = string.Format("{0}.{1}.{2}", CacheKey.PointGameConversionStub, patron.ProgID, activityTypeId); var pgc = sessionTool.GetCache(Cache, lookupString) as ProgramGamePointConversion; if (pgc == null) { this.Log().Debug("Cache miss looking up {0}", lookupString); pgc = ProgramGamePointConversion.FetchObjectByActivityId(patron.ProgID, activityTypeId); sessionTool.SetCache(Cache, lookupString, pgc); } if (pgc != null && pgc.PointCount > 0) { activityTypeSelector.Items.Add(new ListItem(activityTypeValue.ToString(), activityTypeId.ToString())); } } if (activityTypeSelector.Items.Count == 1) { var singleOption = activityTypeSelector.Items[0]; if (int.Parse(singleOption.Value) == (int)ActivityType.Books) { countSubmittedLabel.Visible = false; readingActivityField.Text = "1"; readingActivityField.Attributes.Remove("style"); readingActivityField.Attributes.Add("style", "display: none;"); activityTypeSelector.Attributes.Remove("style"); activityTypeSelector.Attributes.Add("style", "display: none;"); activityTypeSingleLabel.Visible = false; submitButton.Text = StringResources.getString("readinglog-read-a-book"); } else { activityTypeSelector.Attributes.Remove("style"); activityTypeSelector.Attributes.Add("style", "display: none;"); activityTypeSingleLabel.Text = singleOption.Text; activityTypeSingleLabel.Visible = true; } } else { activityTypeSingleLabel.Visible = false; } } }
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)); }