public string GetGameboardPath(Patron patron, int programGameId) { var patronPoints = PatronPoints.GetTotalPatronPoints(patron.PID); var programGameLevelDs = ProgramGameLevel.GetAll(programGameId); int normalLevelTotalPoints = 0; for (var i = 0; i < programGameLevelDs.Tables[0].Rows.Count; i++) { normalLevelTotalPoints += Convert.ToInt32(programGameLevelDs.Tables[0].Rows[i]["PointNumber"]); } var onBonusLevel = (patronPoints > normalLevelTotalPoints); var gameboardPath = onBonusLevel ? string.Format(BaseBonusGameBoardPath, programGameId) : string.Format(BaseGameBoardPath, programGameId); if (!File.Exists(HttpContext.Current.Server.MapPath(gameboardPath))) { return(null); } return(gameboardPath); }
public void PopulateList() { int pid = int.Parse(lblPID.Text); var ds = PatronPoints.GetAll(pid); rptr.DataSource = ds; rptr.DataBind(); }
protected void LoadData() { var patron = (Patron)Session["Curr_Patron"]; var ds = PatronPoints.GetAll(patron.PID); gv1.DataSource = ds; gv1.DataBind(); }
public AwardPoints(int PID) { patron = Patron.FetchObject(PID); pgm = Programs.FetchObject(patron.ProgID); EarnedBadges = new List <Badge>(); StartingPoints = PatronPoints.GetTotalPatronPoints(patron.PID); EndingPoints = StartingPoints; }
public void LoadData() { var patron = (Patron)Session["Patron"]; int totalPoints = PatronPoints.GetTotalPatronPoints(patron.PID); lblPoints.Text = totalPoints.ToInt(); var pgm = Programs.FetchObject(patron.ProgID); if (pgm.ProgramGameID > 0) { if (ProgramGame.FetchObject(pgm.ProgramGameID) != null) { LoadNextLevelInfo(patron, pgm, totalPoints); } } int readingPoints = PatronPoints.GetPatronReadingPoints(patron.PID); RegistrationSettings settings = RegistrationSettings.FetchObject(patron.TenID); if (settings.Goal_Show) { int totalGoal = patron.GoalCache; int percent = 0; /* avoid divide by zero */ if (totalGoal > 0) { percent = (readingPoints * 100) / totalGoal; } String percentString = $"{percent}%"; lblPercentGoal.Text = percentString; /* display over 100% in label, but do not allow bar to extend outside of bounds */ int widthPercent = Math.Min(percent, 100); String widthPercentString = $"{widthPercent}%"; divGoalProgressBar.Style["width"] = widthPercentString; } else { divGoalProgress.Visible = false; } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { var PID1 = int.Parse(Session["CURR_PATRON_ID"].ToString()); var p = Patron.FetchObject(PID1); PatronNavigation.NavigateUrl = string.Format("~/ControlRoom/Modules/Patrons/PatronDetails.aspx?pid={0}", PID1); txtUsername.Text = p.Username; txtEmail.Text = p.EmailAddress; if (p.DOB == DateTime.MinValue) { DobLabel.Visible = false; txtDOB.Visible = false; } else { DobLabel.Visible = true; txtDOB.Visible = true; txtDOB.Text = p.DOB.ToShortDateString(); } txtFirstName.Text = p.FirstName; txtLastName.Text = p.LastName; if (string.IsNullOrWhiteSpace(p.Gender)) { GenderLabel.Visible = false; txtGender.Visible = false; } else { GenderLabel.Visible = true; txtGender.Visible = true; txtGender.Text = p.Gender; } Registered.Text = p.RegistrationDate.ToString(); PointTotal.Text = PatronPoints.GetTotalPatronPoints(p.PID).ToString(); if (p.ProgID != 0) { txtProgram.Text = Programs.FetchObject(p.ProgID).AdminName; } } }
public void LoadData() { var patron = (Patron)Session["Patron"]; int tp = PatronPoints.GetTotalPatronPoints(patron.PID); lblPoints.Text = tp.ToInt(); var pgm = Programs.FetchObject(patron.ProgID); if (pgm.ProgramGameID > 0) { if (ProgramGame.FetchObject(pgm.ProgramGameID) != null) { LoadNextLevelInfo(patron, pgm, tp); } } }
public void CompleteGamePlay() { var gs = GamePlayStats.FetchObject(int.Parse(GPSID.Text)); gs.Completed = DateTime.Now; gs.CompletedPlay = true; gs.Update(); pnlGame.Visible = false; pnlWinner.Visible = true; //* actually award points and what not ... but only if they have not reaceived points for this minigame already if (!PatronPoints.HasEarnedMinigamePoints(int.Parse(PID.Text), int.Parse(MGID.Text))) { ProcessTheWin(); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["Patron"] == null) { Response.Redirect("/"); } var patron = (Patron)Session["Patron"]; var pgm = Programs.FetchObject(patron.ProgID); int tp = PatronPoints.GetTotalPatronPoints(patron.PID); var gm = ProgramGame.FetchObject(pgm.ProgramGameID); var defMGID1 = 0; var defMGID2 = 0; if (gm != null) { defMGID1 = gm.Minigame1ID; defMGID2 = gm.Minigame2ID; } /* * string LevelIDs = GetGameInfo(patron, pgm, gm, tp); * * var getMinigames0 = DAL.Programs.GetProgramMinigames(LevelIDs, 0, defMGID1); * rptrx1.DataSource = getMinigames0; * rptrx1.DataBind(); * var getMinigames1 = DAL.Programs.GetProgramMinigames(LevelIDs, 1, defMGID2); * rptrx2.DataSource = getMinigames1; * rptrx2.DataBind(); */ var getMinigames0 = DAL.Minigame.GetMinigamesList(GetMGIDs(patron, pgm, gm, tp, defMGID1, 1)); rptrx1.DataSource = getMinigames0; rptrx1.DataBind(); var getMinigames1 = DAL.Minigame.GetMinigamesList(GetMGIDs(patron, pgm, gm, tp, defMGID2, 2)); rptrx2.DataSource = getMinigames1; rptrx2.DataBind(); NoAdventures.Visible = getMinigames0.Tables[0].Rows.Count == 0 && getMinigames1.Tables[0].Rows.Count == 0; } }
public void CompleteGamePlay() { var gs = GamePlayStats.FetchObject(int.Parse(GPSID.Text)); gs.Completed = DateTime.Now; gs.CompletedPlay = true; gs.Update(); bool earnedBadge = false; //* actually award points and what not ... but only if they have not reaceived points for this minigame already if (!PatronPoints.HasEarnedMinigamePoints(int.Parse(PID.Text), int.Parse(MGID.Text))) { earnedBadge = ProcessTheWin(); } string message = StringResources.getString("adventures-success"); string glyphicon = "flag"; if (earnedBadge) { message = StringResources.getString("adventures-success-badge"); glyphicon = "certificate"; } if (message.Contains("{0}")) { new SessionTools(Session).AlertPatron(string.Format(message, MGName.Text), PatronMessageLevels.Success, glyphicon); } else { new SessionTools(Session).AlertPatron(message, PatronMessageLevels.Success, glyphicon); } Response.Redirect("~/Adventures/"); }
public void LoadControl() { if (PatronPointsID != "") { // Update: var o = PatronPoints.FetchObject(int.Parse(PatronPointsID)); AwardReasonCd.SelectedValue = o.AwardReasonCd.ToString(); AwardDate.Text = FormatHelper.ToNormalDate(o.AwardDate); NumPoints.Text = FormatHelper.ToInt(o.NumPoints); if (o.BadgeAwardedFlag) { pnlEditOnly.Visible = true; BadgeAwarded.Text = DAL.Badge.GetBadge(o.BadgeID).AdminName; } EventCode.Text = o.EventCode; if (o.isBookList) { pnlBook.Visible = true; } if (o.isEvent) { pnlEvent.Visible = true; } if (o.isGame) { pnlGame.Visible = true; } if (o.isGameLevelActivity) { pnlMini.Visible = true; var mg = Minigame.FetchObject(o.GameLevelActivityID); if (mg != null) { lblMGame.Text = mg.AdminName; } } } }
public void PopulateList(string filterIds) { int pid = int.Parse(lblPID.Text); var ds = PatronPoints.GetAll(pid); int recordCount = 0; if (!string.IsNullOrEmpty(filterIds)) { DataView dv = new DataView(ds.Tables[0]); dv.RowFilter = string.Format("AwardReasonCd IN ({0})", filterIds); rptr.DataSource = dv; recordCount = dv.Count; } else { rptr.DataSource = ds; recordCount = ds.Tables[0].Rows.Count; } rptr.DataBind(); if (recordCount == 0) { activitiesPanel.Visible = false; noActivitiesLabel.Visible = true; } else { activitiesPanel.Visible = true; noActivitiesLabel.Visible = false; } var patron = Patron.FetchObject(pid); string patronName = DisplayHelper.FormatName(patron.FirstName, patron.LastName, patron.Username); whatShowing.Text = string.Format("{0} for <strong>{1}</strong>", this.FilterButtonText, patronName); }
public string GameBoardImage() { var pp = PatronPoints.GetTotalPatronPoints(((Patron)Session["Patron"]).PID);; //pp = patron points // ------------------------------------------- if (Request["p"] != null) { int.TryParse(Request["p"].ToString(), out pp); } // ------------------------------------------- var ds = ProgramGameLevel.GetAll(GetGame().PGID); var normalLevelTotalPoints = GetGameCompletionPoints(ds); var bonus = (pp > normalLevelTotalPoints); if (bonus) { return(GameBoardBonusImage); } return(string.Format("/images/Games/Board/{0}.png", GetGame().PGID.ToString())); }
protected void Button1_Click(object sender, EventArgs e) { var startPID = int.Parse(txtStart.Text); var numPoints = 500; var cnt1 = 0; var cnt2 = 0; var code = "final_push"; // var strSQL = string.Format("SELECT PID FROM Patron WHERE PID > {0} AND PrimaryLibrary NOT IN ({1}) ORDER BY PID ", startPID, "57,58,59,60,61,62"); var strSQL = string.Format("SELECT PID FROM Patron WHERE PID > {0} AND PrimaryLibrary IN ({1}) ORDER BY PID ", startPID, "62"); var ds = SqlHelper.ExecuteDataset(conn, CommandType.Text, strSQL); foreach (DataRow row in ds.Tables[0].Rows) { cnt1++; cnt2++; int PID = Convert.ToInt32(row["PID"]); //int PGID = Convert.ToInt32(row["ProgID"]); var pa = new AwardPoints(PID); var sBadges = string.Empty; var points = numPoints; if (!PatronPoints.HasRedeemedKeywordPoints(PID, code)) { sBadges = pa.AwardPointsToPatron(points, PointAwardReason.EventAttendance, eventCode: code, eventID: -1); Response.Write(string.Format("{0}: {1}<br>", cnt1, PID)); Response.Flush(); } else { Response.Write(string.Format("XX{0}: {1}<br>", cnt2, PID)); Response.Flush(); } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["Patron"] == null) { Response.Redirect("/"); } var patron = (Patron)Session["Patron"]; var pgm = Programs.FetchObject(patron.ProgID); int tp = PatronPoints.GetTotalPatronPoints(patron.PID); string LevelIDs = GetGameInfo(patron, pgm, tp); var getMinigames0 = DAL.Programs.GetProgramMinigames(LevelIDs, 0); rptrx1.DataSource = getMinigames0; rptrx1.DataBind(); var getMinigames1 = DAL.Programs.GetProgramMinigames(LevelIDs, 1); rptrx2.DataSource = getMinigames1; rptrx2.DataBind(); } }
protected void GvRowCommand(object sender, GridViewCommandEventArgs e) { string editpage = "~/ControlRoom/Modules/Patrons/PatronLogAddEdit.aspx"; if (e.CommandName.ToLower() == "addrecord") { Session["PLID"] = ""; Response.Redirect(editpage); } if (e.CommandName.ToLower() == "editrecord") { int key = Convert.ToInt32(e.CommandArgument); Session["PLID"] = key; Response.Redirect(editpage); } if (e.CommandName.ToLower() == "deleterecord") { int key = Convert.ToInt32(e.CommandArgument); try { var pp = PatronPoints.FetchObject(key); if (pp.IsValid(BusinessRulesValidationMode.DELETE)) { if (pp.isReading) { var prl = PatronReadingLog.FetchObject(pp.LogID); if (prl != null && prl.HasReview) { PatronReview.Delete(PatronReview.FetchObjectByLogId(pp.LogID)); prl.Delete(); } } pp.Delete(); LoadData(); var masterPage = (IControlRoomMaster)Master; if (masterPage != null) { masterPage.PageMessage = SRPResources.DeleteOK; } } else { var masterPage = (IControlRoomMaster)Master; string message = String.Format(SRPResources.ApplicationError1, "<ul>"); foreach (BusinessRulesValidationMessage m in pp.ErrorCodes) { message = string.Format(String.Format("{0}<li>{{0}}</li>", message), m.ErrorMessage); } message = string.Format("{0}</ul>", message); if (masterPage != null) { masterPage.PageError = message; } } } catch (Exception ex) { var masterPage = (IControlRoomMaster)Master; if (masterPage != null) { masterPage.PageError = String.Format(SRPResources.ApplicationError1, ex.Message); } } } }
protected void SubmitActivity() { var txtCount = readingActivityField.Text.Trim(); var intCount = 0; if (txtCount.Length == 0 || !int.TryParse(txtCount, out intCount) || intCount < 0) { Session[SessionKey.PatronMessage] = StringResources.getString("readinglog-entry-invalid"); Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Danger; Session[SessionKey.PatronMessageGlyphicon] = "remove"; return; } var selectedActivityType = activityTypeSelector.SelectedValue; // check that we aren't over the max int maxAmountForLogging = 0; switch (int.Parse(selectedActivityType)) { case 0: maxAmountForLogging = SRPSettings.GetSettingValue("MaxBook").SafeToInt(); break; case 1: maxAmountForLogging = SRPSettings.GetSettingValue("MaxPage").SafeToInt(); break; //case 2: maxAmountForLogging = SRPSettings.GetSettingValue("MaxPar").SafeToInt(); // break; case 3: maxAmountForLogging = SRPSettings.GetSettingValue("MaxMin").SafeToInt(); break; default: maxAmountForLogging = SRPSettings.GetSettingValue("MaxMin").SafeToInt(); break; } if (intCount > maxAmountForLogging) { Session[SessionKey.PatronMessage] = string.Format(StringResources.getString("readinglog-entry-limit"), maxAmountForLogging, ((ActivityType)int.Parse(selectedActivityType)).ToString()); Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Warning; Session[SessionKey.PatronMessageGlyphicon] = "exclamation-sign"; return; } var patronId = ((Patron)Session[SessionKey.Patron]).PID; var programGameId = int.Parse(ViewState[ProgramGameIdKey].ToString()); var pa = new AwardPoints(patronId); var points = 0; // convert pages/minutes/etc. to points var pc = new ProgramGamePointConversion(); pc.FetchByActivityId(programGameId, int.Parse(activityTypeSelector.SelectedValue)); // round up to ensure they get at least 1 point decimal computedPoints = intCount * pc.PointCount / pc.ActivityCount; points = (int)Math.Ceiling(computedPoints); // ensure they aren't over teh day total var allPointsToday = PatronPoints.GetTotalPatronPointsOnDate(patronId, DateTime.Now); int maxPointsPerDayForLogging = SRPSettings.GetSettingValue("MaxPtsDay").SafeToInt(); if (intCount + allPointsToday > maxPointsPerDayForLogging) { Session[SessionKey.PatronMessage] = StringResources.getString("readinglog-daily-limit"); Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Warning; Session[SessionKey.PatronMessageGlyphicon] = "exclamation-sign"; return; } var review = ""; if (ViewState[PatronCanReviewKey] as bool? == true) { review = reviewField.Text; } var earnedBadges = pa.AwardPointsToPatron(points: points, reason: PointAwardReason.Reading, MGID: 0, readingActivity: (ActivityType)pc.ActivityTypeId, readingAmount: intCount, author: authorField.Text, title: titleField.Text, review: review); // clear out the form var bookButton = activityTypeSelector.Items.Count == 1 && int.Parse(activityTypeSelector.Items[0].Value) == (int)ActivityType.Books; if (!bookButton) { readingActivityField.Text = string.Empty; } authorField.Text = string.Empty; titleField.Text = string.Empty; reviewField.Text = string.Empty; // set message and earned badges string earnedMessage = new PointCalculation().EarnedMessage(earnedBadges, points); if (string.IsNullOrEmpty(earnedMessage)) { Session[SessionKey.PatronMessage] = "<strong>Good job!</strong> Your reading activity has been logged."; } else { Session[SessionKey.PatronMessage] = string.Format("<strong>Good job!</strong> Your reading activity has been logged. <strong>{0}</strong>", earnedMessage); } Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Success; Session[SessionKey.PatronMessageGlyphicon] = "thumbs-up"; new SessionTools(Session).EarnedBadges(earnedBadges); }
protected void btnSave_Click(object sender, EventArgs e) { if (!this.ProgramOpen) { return; } var now = DateTime.Now; var onlyCheckedBoxes = true; var selBLI = 0; var readCount = 0; var neeedCount = 0; var BLID = -1; foreach (RepeaterItem item in rptr2.Items) { if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) { if (BLID < 0) { BLID = int.Parse(((Label)item.FindControl("BLID")).Text); neeedCount = BookList.FetchObject(BLID).NumBooksToComplete; } var chkRead = (CheckBox)item.FindControl("chkRead"); var PBLBID = int.Parse(((Label)item.FindControl("PBLBID")).Text); var BLBID = int.Parse(((Label)item.FindControl("BLBID")).Text); selBLI = BLID; var pbl = new PatronBookLists(); if (PBLBID != 0) { pbl = PatronBookLists.FetchObject(PBLBID); } pbl.BLBID = BLBID; pbl.BLID = BLID; pbl.PID = ((Patron)Session["Patron"]).PID; pbl.LastModDate = now; pbl.HasReadFlag = chkRead.Checked; if (!pbl.HasReadFlag) { onlyCheckedBoxes = false; } else { readCount++; } if (PBLBID != 0) { pbl.Update(); } else { pbl.Insert(); } } } string success = StringResources.getString("challenges-progress-saved"); new SessionTools(Session).AlertPatron(success, glyphicon: "check"); // read the entire book list! Award points and badges if ((neeedCount == 0 && onlyCheckedBoxes) || (neeedCount <= readCount)) { success = StringResources.getString("challenges-completed"); new SessionTools(Session).AlertPatron(success, glyphicon: "star"); var bl = BookList.FetchObject(selBLI); if (PatronPoints.HasEarnedBookList(((Patron)Session["Patron"]).PID, selBLI)) { PopulateChallengeList(); return; } if (bl.AwardBadgeID != 0 || bl.AwardPoints != 0) { success = StringResources.getString("challenges-completed-badge"); new SessionTools(Session).AlertPatron(success, glyphicon: "certificate"); var pa = new AwardPoints(((Patron)Session["Patron"]).PID); var sBadges = pa.AwardPointsToPatron(bl.AwardPoints, PointAwardReason.BookListCompletion, bookListID: bl.BLID); if (sBadges.Length > 0) { new SessionTools(Session).EarnedBadges(sBadges); } } } PopulateChallengeList(); }
protected void Page_Load(object sender, EventArgs e) { var patron = Session[SessionKey.Patron] as Patron; if (patron == null) { Response.Redirect("~"); } Programs pg = null; ProgramGame gm = null; var pp = 0; try { pg = Programs.FetchObject(patron.ProgID); gm = GetGame(patron); pp = PatronPoints.GetTotalPatronPoints(patron.PID); } catch { pg = null; gm = null; } if (pg == null || gm == null) { Response.Redirect(Server.MapPath("~/images/game_map_icon.png")); } var PID = pg.PID; var numSquares = gm.BoardWidth; var width = 800; var height = 800; var squareSize = width / numSquares; width = height = squareSize * numSquares; var backImageFile = Server.MapPath(new Logic.Game().GetGameboardPath(patron, gm.PGID)); var stampImageFile = Server.MapPath(string.Format(StampBasePath, gm.PGID)); var avatarImageFile = Server.MapPath(string.Format(AvatarBasePath, patron.AvatarID)); var newBmp = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Image avatarImage = null; System.Drawing.Image stampImage = null; ; try { newBmp.SetResolution(72, 72); newBmp.MakeTransparent(); } catch { } var newGraphic = System.Drawing.Graphics.FromImage(newBmp); try { newGraphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; newGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; var backImage = System.Drawing.Image.FromFile(backImageFile); newGraphic.DrawImage(backImage, 0, 0, width, height); } catch { } try { avatarImage = System.Drawing.Image.FromFile(avatarImageFile); } catch { } try { stampImage = System.Drawing.Image.FromFile(stampImageFile); } catch { } // ---------------------------------------------- if (Request["p"] != null) { int.TryParse(Request["p"].ToString(), out pp); } // ------------------------------------------- var ds = ProgramGameLevel.GetAll(GetGame(patron).PGID); var normalLevelTotalPoints = GetGameCompletionPoints(ds); var bonusLevelTotalPoints = GetGameCompletionBonusPoints(ds, patron); // in bonus levels if we have more points accumulated than the total normal level points var bonus = (pp > normalLevelTotalPoints); var bonusPostfix = (bonus ? "Bonus" : ""); var rp = pp; //remaining points if (bonus) { // if we are on the bonus, eliminate the "fully completed boards/levels) and then see what the remainder of the points is. rp = rp - normalLevelTotalPoints; rp = rp % bonusLevelTotalPoints; } var idx = 0; // ---------------------------------------------- for (var i = 0; i < ds.Tables[0].Rows.Count; i++) { idx++; var multiplier = (bonus ? GetGame(patron).BonusLevelPointMultiplier : 1.00m); var levelPoints = Convert.ToInt32(Convert.ToInt32(ds.Tables[0].Rows[i]["PointNumber"]) * multiplier); var locX = Convert.ToInt32(ds.Tables[0].Rows[i]["LocationX" + bonusPostfix]) - 1; var locY = Convert.ToInt32(ds.Tables[0].Rows[i]["LocationY" + bonusPostfix]) - 1; rp = rp - levelPoints; if (rp < 0) { if (avatarImage != null) { newGraphic.DrawImage(avatarImage, locX * squareSize, locY * squareSize, squareSize, squareSize); } break; } else { if (stampImage != null) { newGraphic.DrawImage(stampImage, locX * squareSize, locY * squareSize, squareSize, squareSize); } } } Response.ContentType = "image/png"; EnableViewState = false; newBmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png); if (stampImage != null) { stampImage.Dispose(); } if (avatarImage != null) { avatarImage.Dispose(); } newGraphic.Dispose(); newBmp.Dispose(); Response.End(); }
// points = 100 // reason = PointAwardReason.MiniGameCompletion // MGID = Mini Game ID, if the reason is MiniGameCompletion, else 0 // // // returns: a string based list of the badges they earned, or an empty string public string AwardPointsToPatron(int points, PointAwardReason reason, // Minigame int MGID = 0, // reading ActivityType readingActivity = ActivityType.Pages, int readingAmount = 0, string author = "", string title = "", string review = "", // event string eventCode = "", int eventID = 0, // book List int bookListID = 0, DateTime?forceDate = null ) { if (forceDate != null) { now = (DateTime)forceDate; } string retValue = string.Empty; #region Reading - Log to PatronReadingLog PatronReadingLog rl = null; if (reason == PointAwardReason.Reading) { rl = new PatronReadingLog { PID = patron.PID, ReadingType = (int)readingActivity, ReadingTypeLabel = (readingActivity).ToString(), ReadingAmount = readingAmount, ReadingPoints = points, LoggingDate = FormatHelper.ToNormalDate(now), Author = author.Trim(), Title = title.Trim(), HasReview = (review.Trim().Length > 0), ReviewID = 0 }; rl.Insert(); // If there is a review, record the review if (review.Trim().Length > 0) { var r = new PatronReview { PID = patron.PID, PRLID = rl.PRLID, Author = rl.Author, Title = rl.Title, Review = review.Trim(), isApproved = false }; r.Insert(); rl.ReviewID = r.PRID; rl.Update(); HttpContext.Current.Session["LastPRID"] = r.PRID; } } #endregion #region Award PatronPoints var pp = new PatronPoints { PID = patron.PID, NumPoints = points, AwardDate = now, AwardReasonCd = (int)reason, AwardReason = PatronPoints.PointAwardReasonCdToDescription(reason), BadgeAwardedFlag = false, isReading = (reason == PointAwardReason.Reading), isEvent = (reason == PointAwardReason.EventAttendance), isGameLevelActivity = (reason == PointAwardReason.MiniGameCompletion), isBookList = (reason == PointAwardReason.BookListCompletion), isGame = false, GameLevelActivityID = MGID, EventCode = eventCode, EventID = eventID, BookListID = bookListID, LogID = (rl == null ? 0 : rl.PRLID) }; pp.Insert(); var badgeAwarded = false; int badgeToAward = 0; // <=========== DAL.Minigame mg = null; if (reason == PointAwardReason.MiniGameCompletion) { mg = DAL.Minigame.FetchObject(MGID); badgeAwarded = mg.AwardedBadgeID > 0; badgeToAward = mg.AwardedBadgeID; } if (reason == PointAwardReason.EventAttendance) { var evt = Event.GetEvent(eventID); badgeAwarded = evt == null ? false : evt.BadgeID > 0; badgeToAward = evt == null ? 0 : evt.BadgeID; } if (reason == PointAwardReason.BookListCompletion) { var bl = BookList.FetchObject(bookListID); ; badgeAwarded = (bl.AwardBadgeID > 0); badgeToAward = bl.AwardBadgeID; } DataSet pbds = null; if (badgeAwarded) { if (AwardBadgeToPatron(badgeToAward, patron, ref EarnedBadges)) { if (pp.PPID != 0) { pp.BadgeAwardedFlag = true; pp.BadgeID = badgeToAward; pp.Update(); } } } #endregion #region If jumped level, award another badge(s) // since thay just earned points, check if they also advanced a level in the board game (if there is a board game for the program) EndingPoints = PatronPoints.GetTotalPatronPoints(patron.PID); EarnedBadge = null; var earnedBadges2 = new List <Badge>(); EarnedBadge = TallyPoints(patron, pgm, StartingPoints, EndingPoints, ref earnedBadges2); pbds = PatronBadges.GetAll(patron.PID); foreach (var badge in earnedBadges2) { EarnedBadge = badge; if (EarnedBadge != null) { AwardBadgeToPatron(EarnedBadge.BID, patron, ref EarnedBadges); } } #endregion #region Check and give awards if any AwardBadgeToPatronViaMatchingAwards(patron, ref EarnedBadges); #endregion #region Prepare return code // did they earn one or more badges? if (EarnedBadges.Count > 0) { retValue = string.Join("|", EarnedBadges.Select(b => b.BID).Distinct()); } #endregion return(retValue); }
// points = 100 // reason = PointAwardReason.MiniGameCompletion // MGID = Mini Game ID, if the reason is MiniGameCompletion, else 0 // // // returns: a string based list of the badges they earned, or an empty string public string AwardPointsToPatron(int points, PointAwardReason reason, // Minigame int MGID = 0, // reading ActivityType readingActivity = ActivityType.Pages, int readingAmount = 0, string author = "", string title = "", string review = "", // event string eventCode = "", int eventID = 0, // book List int bookListID = 0, DateTime?forceDate = null ) { if (forceDate != null) { now = (DateTime)forceDate; } string retValue = ""; #region Reading - Log to PatronReadingLog PatronReadingLog rl = null; if (reason == PointAwardReason.Reading) { rl = new PatronReadingLog { PID = patron.PID, ReadingType = (int)readingActivity, ReadingTypeLabel = (readingActivity).ToString(), ReadingAmount = readingAmount, ReadingPoints = points, LoggingDate = FormatHelper.ToNormalDate(now), Author = author.Trim(), Title = title.Trim(), HasReview = (review.Trim().Length > 0), ReviewID = 0 }; rl.Insert(); // If there is a review, record the review if (review.Trim().Length > 0) { var r = new PatronReview { PID = patron.PID, PRLID = rl.PRLID, Author = rl.Author, Title = rl.Title, Review = review.Trim(), isApproved = false }; r.Insert(); rl.ReviewID = r.PRID; rl.Update(); } } #endregion #region Award PatronPoints var pp = new PatronPoints { PID = patron.PID, NumPoints = points, AwardDate = now, AwardReasonCd = (int)reason, AwardReason = PatronPoints.PointAwardReasonCdToDescription(reason), BadgeAwardedFlag = false, isReading = (reason == PointAwardReason.Reading), isEvent = (reason == PointAwardReason.EventAttendance), isGameLevelActivity = (reason == PointAwardReason.MiniGameCompletion), isBookList = (reason == PointAwardReason.BookListCompletion), isGame = false, GameLevelActivityID = MGID, EventCode = eventCode, EventID = eventID, BookListID = bookListID, LogID = (rl == null ? 0 : rl.PRLID) }; pp.Insert(); var badgeAwarded = false; int badgeToAward = 0; // <=========== DAL.Minigame mg = null; if (reason == PointAwardReason.MiniGameCompletion) { mg = DAL.Minigame.FetchObject(MGID); badgeAwarded = mg.AwardedBadgeID > 0; badgeToAward = mg.AwardedBadgeID; } if (reason == PointAwardReason.EventAttendance) { var evt = Event.GetEvent(eventID); badgeAwarded = evt.BadgeID > 0; badgeToAward = evt.BadgeID; } if (reason == PointAwardReason.BookListCompletion) { var bl = BookList.FetchObject(bookListID);; badgeAwarded = (bl.AwardBadgeID > 0); badgeToAward = bl.AwardBadgeID; } DataSet pbds = null; //DataTable newTable = null; if (badgeAwarded) { if (AwardBadgeToPatron(badgeToAward, patron, ref EarnedBadges)) { if (pp.PPID != 0) { pp.BadgeAwardedFlag = true; pp.BadgeID = badgeToAward; pp.Update(); } } #region AwardBadgeToPatron code //// check if badge was already earned... //pbds = PatronBadges.GetAll(patron.PID); //var a = pbds.Tables[0].AsEnumerable().Where(r => r.Field<int>("BadgeID") == badgeToAward); //newTable = new DataTable(); //try { newTable = a.CopyToDataTable(); } catch { } //// badge not found, award it! //if (newTable.Rows.Count == 0) //{ // var pb = new PatronBadges { BadgeID = badgeToAward, DateEarned = now, PID = patron.PID }; // pb.Insert(); // EarnedBadge = Badge.GetBadge(badgeToAward); // EarnedBadges.Add(EarnedBadge); // //if badge generates notification, then generate the notification // if (EarnedBadge.GenNotificationFlag) // { // var not = new Notifications // { // PID_To = patron.PID, // PID_From = 0, //0 == System Notification // Subject = EarnedBadge.NotificationSubject, // Body = EarnedBadge.NotificationBody, // isQuestion = false, // AddedDate = now, // LastModDate = now, // AddedUser = patron.Username, // LastModUser = "******" // }; // not.Insert(); // } // //if badge generates prize, then generate the prize // if (EarnedBadge.IncludesPhysicalPrizeFlag) // { // var ppp = new DAL.PatronPrizes // { // PID = patron.PID, // PrizeSource = 1, // PrizeName = EarnedBadge.PhysicalPrizeName, // RedeemedFlag = false, // AddedUser = patron.Username, // LastModUser = "******", // AddedDate = now, // LastModDate = now // }; // ppp.Insert(); // } // // if badge generates award code, then generate the code // if (EarnedBadge.AssignProgramPrizeCode) // { // var RewardCode = ""; // // get the Code value // // save the code value for the patron // RewardCode = ProgramCodes.AssignCodeForPatron(patron.ProgID, patron.ProgID); // // generate the notification // var not = new Notifications // { // PID_To = patron.PID, // PID_From = 0, //0 == System Notification // Subject = EarnedBadge.PCNotificationSubject, // Body = EarnedBadge.PCNotificationBody.Replace("{ProgramRewardCode}", RewardCode), // isQuestion = false, // AddedDate = now, // LastModDate = now, // AddedUser = patron.Username, // LastModUser = "******" // }; // not.Insert(); // } // if (pp.PPID != 0) // { // pp.BadgeAwardedFlag = true; // pp.BadgeID = badgeToAward; // pp.Update(); // } //} #endregion } #endregion #region If jumped level, award another badge(s) // since thay just earned points, check if they also advanced a level in the board game (if there is a board game for the program) EndingPoints = PatronPoints.GetTotalPatronPoints(patron.PID); EarnedBadge = null; var earnedBadges2 = new List <Badge>(); EarnedBadge = TallyPoints(patron, pgm, StartingPoints, EndingPoints, ref earnedBadges2); pbds = PatronBadges.GetAll(patron.PID); foreach (var badge in earnedBadges2) { EarnedBadge = badge; if (EarnedBadge != null) { AwardBadgeToPatron(EarnedBadge.BID, patron, ref EarnedBadges); } #region AwardBadgeToPatron call2 //// check if badge was already earned... //if (EarnedBadge != null) //{ // var aa = pbds.Tables[0].AsEnumerable().Where(r => r.Field<int>("BadgeID") == badgeToAward); // newTable = new DataTable(); // try { newTable = aa.CopyToDataTable(); } // catch { } // // badge not found, award it! //} //if (EarnedBadge != null && newTable != null && newTable.Rows.Count == 0) //{ // // Award the badge // EarnedBadges.Add(badge); // Add badge tot he list used to display to user ... // var newPBID = 0; // var pb = new PatronBadges { BadgeID = EarnedBadge.BID, DateEarned = now, PID = patron.PID }; // pb.Insert(); // newPBID = pb.PBID; // //if badge generates notification, then generate the notification // if (EarnedBadge.GenNotificationFlag) // { // var not = new Notifications // { // PID_To = patron.PID, // PID_From = 0, //0 == System Notification // Subject = EarnedBadge.NotificationSubject, // Body = EarnedBadge.NotificationBody, // isQuestion = false, // AddedDate = now, // LastModDate = now, // AddedUser = patron.Username, // LastModUser = "******" // }; // not.Insert(); // } // //if badge generates prize, then generate the prize // if (EarnedBadge.IncludesPhysicalPrizeFlag) // { // var ppp = new DAL.PatronPrizes // { // PID = patron.PID, // PrizeSource = 1, // PrizeName = EarnedBadge.PhysicalPrizeName, // RedeemedFlag = false, // AddedUser = patron.Username, // LastModUser = "******", // AddedDate = now, // LastModDate = now // }; // ppp.Insert(); // } // // if badge generates award code, then generate the code // if (EarnedBadge.AssignProgramPrizeCode) // { // var RewardCode = ""; // // get the Code value // // save the code value for the patron // RewardCode = ProgramCodes.AssignCodeForPatron(patron.ProgID, patron.ProgID); // // generate the notification // var not = new Notifications // { // PID_To = patron.PID, // PID_From = 0, //0 == System Notification // Subject = EarnedBadge.PCNotificationSubject, // Body = EarnedBadge.PCNotificationBody.Replace("{ProgramRewardCode}", RewardCode), // isQuestion = false, // AddedDate = now, // LastModDate = now, // AddedUser = patron.Username, // LastModUser = "******" // }; // not.Insert(); // } //} #endregion } #region deprecated - replaced by abbility to earn multiple badges above //EarnedBadge = TallyPoints(patron, pgm, StartingPoints, EndingPoints, ref EarnedBadges); //// check if badge was already earned... //if (EarnedBadge != null) { // pbds = PatronBadges.GetAll(patron.PID); // var aa = pbds.Tables[0].AsEnumerable().Where(r => r.Field<int>("BadgeID") == badgeToAward); // newTable = new DataTable(); // try { newTable = aa.CopyToDataTable(); } catch { } // // badge not found, award it! //} //if (EarnedBadge != null && newTable!= null && newTable.Rows.Count == 0) //{ // // Award the badge // var newPBID = 0; // var pb = new PatronBadges { BadgeID = EarnedBadge.BID, DateEarned = now, PID = patron.PID }; // pb.Insert(); // newPBID = pb.PBID; // //if badge generates notification, then generate the notification // if (EarnedBadge.GenNotificationFlag) // { // var not = new Notifications // { // PID_To = patron.PID, // PID_From = 0, //0 == System Notification // Subject = EarnedBadge.NotificationSubject, // Body = EarnedBadge.NotificationBody, // isQuestion = false, // AddedDate = now, // LastModDate = now, // AddedUser = patron.Username, // LastModUser = "******" // }; // not.Insert(); // } // //if badge generates prize, then generate the prize // if (EarnedBadge.IncludesPhysicalPrizeFlag) // { // var ppp = new DAL.PatronPrizes // { // PID = patron.PID, // PrizeSource = 1, // PrizeName = EarnedBadge.PhysicalPrizeName, // RedeemedFlag = false, // AddedUser = patron.Username, // LastModUser = "******", // AddedDate = now, // LastModDate = now // }; // ppp.Insert(); // } // // if badge generates award code, then generate the code // if (EarnedBadge.AssignProgramPrizeCode) // { // var RewardCode = ""; // // get the Code value // // save the code value for the patron // RewardCode = ProgramCodes.AssignCodeForPatron(patron.ProgID, patron.ProgID); // // generate the notification // var not = new Notifications // { // PID_To = patron.PID, // PID_From = 0, //0 == System Notification // Subject = EarnedBadge.PCNotificationSubject, // Body = EarnedBadge.PCNotificationBody.Replace("{ProgramRewardCode}", RewardCode), // isQuestion = false, // AddedDate = now, // LastModDate = now, // AddedUser = patron.Username, // LastModUser = "******" // }; // not.Insert(); // } #endregion #endregion #region Check and give awards if any AwardBadgeToPatronViaMatchingAwards(patron, ref EarnedBadges); #endregion #region Prepare return code // did they earn one or more badges? if (EarnedBadges.Count > 0) { var badges = EarnedBadges.Count.ToString(); //foreach(Badge b in EarnedBadges) //{ // badges = badges + "|" + b.BID.ToString(); //} badges = EarnedBadges.Aggregate(badges, (current, b) => current + "|" + b.BID.ToString()); //Response.Redirect("~/BadgeAward.aspx?b=" + badges); retValue = badges; } #endregion return(retValue); }
protected void SubmitActivity() { var txtCount = readingActivityField.Text.Trim(); var intCount = 0; if (txtCount.Length == 0 || !int.TryParse(txtCount, out intCount) || intCount < 0) { Session[SessionKey.PatronMessage] = "You must enter how much you've read as a positive whole number."; Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Danger; Session[SessionKey.PatronMessageGlyphicon] = "remove"; return; } var selectedActivityType = activityTypeSelector.SelectedValue; // check that we aren't over the max int maxAmountForLogging = 0; switch (int.Parse(selectedActivityType)) { case 0: maxAmountForLogging = SRPSettings.GetSettingValue("MaxBook").SafeToInt(); break; case 1: maxAmountForLogging = SRPSettings.GetSettingValue("MaxPage").SafeToInt(); break; //case 2: maxAmountForLogging = SRPSettings.GetSettingValue("MaxPar").SafeToInt(); // break; case 3: maxAmountForLogging = SRPSettings.GetSettingValue("MaxMin").SafeToInt(); break; default: maxAmountForLogging = SRPSettings.GetSettingValue("MaxMin").SafeToInt(); break; } if (intCount > maxAmountForLogging) { Session[SessionKey.PatronMessage] = string.Format("That's an awful lot of reading! You can only submit {0} {1} at a time.", maxAmountForLogging, ((ActivityType)int.Parse(selectedActivityType)).ToString()); Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Warning; Session[SessionKey.PatronMessageGlyphicon] = "exclamation-sign"; return; } var patronId = ((Patron)Session[SessionKey.Patron]).PID; var programGameId = int.Parse(ViewState["ProgramGameId"].ToString()); var pa = new AwardPoints(patronId); var points = 0; // convert pages/minutes/etc. to points var pc = new ProgramGamePointConversion(); pc.FetchByActivityId(programGameId, int.Parse(activityTypeSelector.SelectedValue)); // round up to ensure they get at least 1 point decimal computedPoints = intCount * pc.PointCount / pc.ActivityCount; points = (int)Math.Ceiling(computedPoints); // ensure they aren't over teh day total var allPointsToday = PatronPoints.GetTotalPatronPoints(patronId, DateTime.Now); int maxPointsPerDayForLogging = SRPSettings.GetSettingValue("MaxPtsDay").SafeToInt(); if (intCount + allPointsToday > maxPointsPerDayForLogging) { Session[SessionKey.PatronMessage] = "Sorry but you have already reached the maximum amount of points that you can log in a day. Keep reading and come back tomorrow!"; Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Warning; Session[SessionKey.PatronMessageGlyphicon] = "exclamation-sign"; return; } var earnedBadges = pa.AwardPointsToPatron(points: points, reason: PointAwardReason.Reading, MGID: 0, readingActivity: (ActivityType)pc.ActivityTypeId, readingAmount: intCount, author: authorField.Text, title: titleField.Text); // clear out the form var bookButton = activityTypeSelector.Items.Count == 1 && int.Parse(activityTypeSelector.Items[0].Value) == (int)ActivityType.Books; if (!bookButton) { readingActivityField.Text = string.Empty; } authorField.Text = string.Empty; titleField.Text = string.Empty; // set message and earned badges string earnedMessage = new PointCalculation().EarnedMessage(earnedBadges, points); if (string.IsNullOrEmpty(earnedMessage)) { Session[SessionKey.PatronMessage] = "<strong>Good job!</strong> Your reading activity has been logged."; } else { Session[SessionKey.PatronMessage] = string.Format("<strong>Good job!</strong> Your reading activity has been logged. <strong>{0}</strong>", earnedMessage); } Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Success; Session[SessionKey.PatronMessageGlyphicon] = "thumbs-up"; new SessionTools(Session).EarnedBadges(earnedBadges); }
protected void ImageButton1_Command(object sender, CommandEventArgs e) { var masterPage = (IControlRoomMaster)((BaseControlRoomPage)Page).Master; lblError.Text = ""; Page.Validate(); if (Page.IsValid) { var patron = Patron.FetchObject(int.Parse(PID.Text)); var pgm = Programs.FetchObject(patron.ProgID); if (e.CommandName.ToLower() == "save" || e.CommandName.ToLower() == "saveandback") { //var p = new Patron(); var o = new PatronPoints(); var sBadges = ""; var pa = new AwardPoints(patron.PID); var points = int.Parse(NumPoints.Text); if (!IsAdd()) { //p = Patron.FetchObject(int.Parse(PID.Text)); o = PatronPoints.FetchObject(int.Parse(PatronPointsID)); o.Delete(); var pl = PatronReadingLog.FetchObject(o.LogID); if (pl != null && pl.HasReview) { var r = PatronReview.FetchObjectByLogId(o.LogID); if (r != null) { r.Delete(); } } if (pl != null) { pl.Delete(); } } //o.PID = patron.PID; //o.NumPoints = int.Parse(NumPoints.Text); //o.AwardDate = DateTime.Parse(AwardDate.Text); //o.AwardReasonCd = int.Parse(AwardReasonCd.SelectedValue); //o.AwardReason = PatronPoints.PointAwardReasonCdToDescription((PointAwardReason)o.AwardReasonCd); //o.isReading = o.isBookList = o.isEvent = o.isGame = o.isGameLevelActivity = false; if ((PointAwardReason)o.AwardReasonCd == PointAwardReason.Reading) { var pc = new ProgramGamePointConversion(); pc.FetchByActivityId(pgm.PID, 1);//ActivityType.Pages); var pages = 1; try { Convert.ToInt32(pc.ActivityCount * points / pc.PointCount); } catch {} sBadges = pa.AwardPointsToPatron(points, PointAwardReason.Reading, 0, ActivityType.Pages, pages, "", "", "", forceDate: DateTime.Parse(AwardDate.Text)); } if ((PointAwardReason)o.AwardReasonCd == PointAwardReason.EventAttendance) { var ds = Event.GetEventByEventCode(pa.pgm.StartDate.ToShortDateString(), DateTime.Now.ToShortDateString(), EventCode.Text); var EID = 0; if (ds.Tables[0].Rows.Count == 0) { EID = 0; } else { EID = (int)ds.Tables[0].Rows[0]["EID"]; } sBadges = pa.AwardPointsToPatron(points, PointAwardReason.EventAttendance, eventCode: EventCode.Text, eventID: EID, forceDate: DateTime.Parse(AwardDate.Text)); } if ((PointAwardReason)o.AwardReasonCd == PointAwardReason.BookListCompletion) { var BLID = 0; int.TryParse(lblBookList.Text, out BLID); sBadges = pa.AwardPointsToPatron(points, PointAwardReason.BookListCompletion, bookListID: BLID, forceDate: DateTime.Parse(AwardDate.Text)); } if ((PointAwardReason)o.AwardReasonCd == PointAwardReason.GameCompletion) { var GID = 0; int.TryParse(lblGame.Text, out GID); sBadges = pa.AwardPointsToPatron(points, PointAwardReason.GameCompletion, GID, forceDate: DateTime.Parse(AwardDate.Text)); } if ((PointAwardReason)o.AwardReasonCd == PointAwardReason.MiniGameCompletion) { var MGID = 0; int.TryParse(lblMGame.Text, out MGID); sBadges = pa.AwardPointsToPatron(points, PointAwardReason.MiniGameCompletion, MGID, forceDate: DateTime.Parse(AwardDate.Text)); } PatronPointsID = PatronPoints.GetLastPatronEntryID(int.Parse(PatronID)).ToString(); LoadControl(); masterPage.PageMessage = SRPResources.AddedOK; if (e.CommandName.ToLower() == "saveandback") { Response.Redirect("PatronLog.aspx"); } } } }
protected void Page_Load(object sender, EventArgs e) { var pg = new Programs(); var gm = new ProgramGame(); var pp = 0; try { pg = Programs.FetchObject(int.Parse(Session["PatronProgramID"].ToString())); gm = ProgramGame.FetchObject(pg.ProgramGameID); pp = PatronPoints.GetTotalPatronPoints(((Patron)Session["Patron"]).PID); } catch { Response.Redirect("/images/game_map_icon.png"); } var PID = pg.PID; var numSquares = gm.BoardWidth; var width = 800; var height = 800; //var AID = 5; var squareSize = width / numSquares; width = height = squareSize * numSquares; var backImageFile = Server.MapPath(GameBoardImage()); var stampImageFile = Server.MapPath(GameBoardStamp); var avatarImageFile = Server.MapPath(GameBoardAvatarStamp); var newBmp = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Image avatarImage = null; System.Drawing.Image stampImage = null;; try { newBmp.SetResolution(72, 72); newBmp.MakeTransparent(); }catch {} var newGraphic = System.Drawing.Graphics.FromImage(newBmp); try { newGraphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; newGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; var backImage = System.Drawing.Image.FromFile(backImageFile); newGraphic.DrawImage(backImage, 0, 0, width, height); } catch { } try { avatarImage = System.Drawing.Image.FromFile(avatarImageFile); } catch { } try { stampImage = System.Drawing.Image.FromFile(stampImageFile); } catch { } // ---------------------------------------------- if (Request["p"] != null) { int.TryParse(Request["p"].ToString(), out pp); } // ------------------------------------------- var ds = ProgramGameLevel.GetAll(GetGame().PGID); var normalLevelTotalPoints = GetGameCompletionPoints(ds); var bonusLevelTotalPoints = GetGameCompletionBonusPoints(ds); // in bonus levels if we have more points accumulated than the total normal level points var bonus = (pp > normalLevelTotalPoints); var rp = pp; //remaining points if (bonus) { // if we are on the bonus, eliminate the "fully completed boards/levels) and then see what the remainder of the points is. rp = rp - normalLevelTotalPoints; rp = rp % bonusLevelTotalPoints; } var idx = 0; // ---------------------------------------------- for (var i = 0; i < ds.Tables[0].Rows.Count; i++) { idx++; var multiplier = (bonus ? GetGame().BonusLevelPointMultiplier : 1.00m); var levelPoints = Convert.ToInt32(Convert.ToInt32(ds.Tables[0].Rows[i]["PointNumber"]) * multiplier); //var levelTd = (Convert.ToInt32(ds.Tables[0].Rows[i]["LocationY"]) - 1) * GameBoardWidth + // Convert.ToInt32(ds.Tables[0].Rows[i]["LocationX"]); var locX = Convert.ToInt32(ds.Tables[0].Rows[i]["LocationX"]) - 1; var locY = Convert.ToInt32(ds.Tables[0].Rows[i]["LocationY"]) - 1; rp = rp - levelPoints; if (rp < 0) { //ret = string.Format("{0}\r\n$(\"#Td{1}\").html(\"<img src='{2}' class='BoardSquareImg'/>\");", ret, levelTd, GameBoardAvatarStamp); if (avatarImage != null) { newGraphic.DrawImage(avatarImage, locX * squareSize, locY * squareSize, squareSize, squareSize); } break; } else { //ret = string.Format("{0}\r\n$(\"#Td{1}\").html(\"<img src='{2}' class='BoardSquareImg'/>\");", ret, levelTd, GameBoardStamp); if (stampImage != null) { newGraphic.DrawImage(stampImage, locX * squareSize, locY * squareSize, squareSize, squareSize); } } } Response.ContentType = "image/png"; //Response.AppendHeader("Content-Disposition", "attachment; filename=GameLevelStatsReportResults.xlsx"); EnableViewState = false; newBmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png); if (stampImage != null) { stampImage.Dispose(); } if (avatarImage != null) { avatarImage.Dispose(); } newGraphic.Dispose(); newBmp.Dispose(); Response.End(); }
protected void submitButton_Click(object sender, EventArgs e) { #region Event Attendance // Logging event attendance string codeValue = Logic.Code.SanitizeCode(codeEntryField.Text); codeEntryField.Text = codeValue; int patronId = (int)ViewState["SubmitAsPatronId"]; var pointsAward = new AwardPoints(patronId); var patron = Patron.FetchObject(patronId); var patronName = DisplayHelper.FormatName(patron.FirstName, patron.LastName, patron.Username); if (codeValue.Length == 0) { Session[SessionKey.PatronMessage] = "Please enter a code."; Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Danger; Session[SessionKey.PatronMessageGlyphicon] = "remove"; return; } else { // verify event code was not previously redeemed if (PatronPoints.HasRedeemedKeywordPoints(patronId, codeValue)) { Session[SessionKey.PatronMessage] = string.Format("{0} has already redeemed this code!", patronName); Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Warning; Session[SessionKey.PatronMessageGlyphicon] = "exclamation-sign"; return; } // get event for that code, get the # points var ds = Event.GetEventByEventCode(codeValue); if (ds.Tables[0].Rows.Count == 0) { Session[SessionKey.PatronMessage] = "Sorry, that's an invalid code."; Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Warning; Session[SessionKey.PatronMessageGlyphicon] = "exclamation-sign"; return; } var EID = (int)ds.Tables[0].Rows[0]["EID"]; var evt = Event.GetEvent(EID); var points = evt.NumberPoints; //var newPBID = 0; var earnedBadges = pointsAward.AwardPointsToPatron(points: points, reason: PointAwardReason.EventAttendance, eventCode: codeValue, eventID: EID); // don't show badge earnings to the parent //if(!string.IsNullOrWhiteSpace(earnedBadges)) { // new SessionTools(Session).EarnedBadges(earnedBadges); //} // set message and earned badges string earnedMessage = new PointCalculation().EarnedMessage(earnedBadges, points, patronName); if (string.IsNullOrEmpty(earnedMessage)) { Session[SessionKey.PatronMessage] = string.Format("<strong>Excellent!</strong> Secret code recorded for {0}.", patronName); } else { Session[SessionKey.PatronMessage] = string.Format("<strong>Excellent!</strong> Secret code recorded. <strong>{0}</strong>", earnedMessage); } Session[SessionKey.PatronMessageLevel] = PatronMessageLevels.Success; Session[SessionKey.PatronMessageGlyphicon] = "barcode"; this.codeEntryField.Text = string.Empty; } #endregion }
protected void btnSave_Click(object sender, EventArgs e) { var now = DateTime.Now; var onlyCheckedBoxes = true; var selBLI = 0; foreach (RepeaterItem item in rptr2.Items) { if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) { var chkRead = (CheckBox)item.FindControl("chkRead"); var PBLBID = int.Parse(((Label)item.FindControl("PBLBID")).Text); var BLBID = int.Parse(((Label)item.FindControl("BLBID")).Text); var BLID = int.Parse(((Label)item.FindControl("BLID")).Text); selBLI = BLID; var pbl = new PatronBookLists(); if (PBLBID != 0) { pbl = PatronBookLists.FetchObject(PBLBID); } pbl.BLBID = BLBID; pbl.BLID = BLID; pbl.PID = ((Patron)Session["Patron"]).PID; pbl.LastModDate = now; pbl.HasReadFlag = chkRead.Checked; if (!pbl.HasReadFlag) { onlyCheckedBoxes = false; } if (PBLBID != 0) { pbl.Update(); } else { pbl.Insert(); } } } lblMessage.Visible = true; // read the entire book list! Award points and badges if (onlyCheckedBoxes) { var bl = BookList.FetchObject(selBLI); if (PatronPoints.HasEarnedBookList(((Patron)Session["Patron"]).PID, selBLI)) { return; } if (bl.AwardBadgeID != 0 || bl.AwardPoints != 0) { var pa = new AwardPoints(((Patron)Session["Patron"]).PID); var sBadges = pa.AwardPointsToPatron(bl.AwardPoints, PointAwardReason.BookListCompletion, bookListID: bl.BLID); if (sBadges.Length > 0) { Response.Redirect("~/BadgeAward.aspx?b=" + sBadges); } } } }
protected void rptr_ItemDataBound(object source, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { var patronRecord = (DataRowView)e.Item.DataItem; var patronId = patronRecord["PID"].ToString(); var avatarState = patronRecord["AvatarState"].ToString(); string potentialAvatarPath = null; string avatarPathSm = NoAvatarPathSm; string avatarPathMd = null; string avatarPathLg = null; potentialAvatarPath = string.Format("~/images/AvatarCache/sm_{0}.png", avatarState); if (File.Exists(Server.MapPath(potentialAvatarPath))) { avatarPathSm = potentialAvatarPath; } potentialAvatarPath = string.Format("~/images/AvatarCache/md_{0}.png", avatarState); if (File.Exists(Server.MapPath(potentialAvatarPath))) { avatarPathMd = potentialAvatarPath; } potentialAvatarPath = string.Format("~/images/AvatarCache/{0}.png", avatarState); if (File.Exists(Server.MapPath(potentialAvatarPath))) { avatarPathLg = potentialAvatarPath; } var image = (Image)e.Item.FindControl("avatarImage"); image.ImageUrl = avatarPathSm; if (!string.IsNullOrEmpty(avatarPathMd)) { string srcSet = string.Format("{0} 1x, {1} 2x", VirtualPathUtility.ToAbsolute(avatarPathSm), VirtualPathUtility.ToAbsolute(avatarPathMd)); image.Attributes.Add("srcset", srcSet); } var avatarLink = (HyperLink)e.Item.FindControl("avatarLink"); if (!string.IsNullOrEmpty(avatarPathLg)) { avatarLink.NavigateUrl = avatarPathLg; } var scoreControl = e.Item.FindControl("CurrentScore") as Label; if (scoreControl != null) { var points = PatronPoints.GetTotalPatronPoints((int)patronRecord["PID"]); scoreControl.Text = string.Format("{0} points", points); } var rewardLabel = e.Item.FindControl("ProgramRewardCodes") as Label; var rewardCodesData = DAL.ProgramCodes.GetAllForPatron((int)patronRecord["PID"]); if (rewardCodesData != null && rewardCodesData.Tables.Count > 0 && rewardCodesData.Tables[0].Rows.Count > 0) { var codes = rewardCodesData.Tables[0] .AsEnumerable() .Select(r => r.Field <string>("ShortCode")) .ToArray(); rewardLabel.Text = string.Join("<br>", codes); ProgramCodeLabel.Visible = true; } else { rewardLabel.Text = string.Empty; } } }
protected void submitButton_Click(object sender, EventArgs e) { #region Event Attendance // Logging event attendance string codeValue = Logic.Code.SanitizeCode(codeEntryField.Text); codeEntryField.Text = codeValue; int patronId = ((Patron)Session[SessionKey.Patron]).PID; var pointsAward = new AwardPoints(patronId); if (codeValue.Length == 0) { new SessionTools(Session).AlertPatron("Please enter a code.", PatronMessageLevels.Danger, "remove"); return; } else { // verify event code was not previously redeemed if (PatronPoints.HasRedeemedKeywordPoints(patronId, codeValue)) { new SessionTools(Session).AlertPatron("You've already redeemed this code!", PatronMessageLevels.Warning, "exclamation-sign"); return; } // get event for that code, get the # points var ds = Event.GetEventByEventCode(codeValue); if (ds.Tables[0].Rows.Count == 0) { new SessionTools(Session).AlertPatron("Sorry, that's an invalid code.", PatronMessageLevels.Warning, "exclamation-sign"); return; } var EID = (int)ds.Tables[0].Rows[0]["EID"]; var evt = Event.GetEvent(EID); var points = evt.NumberPoints; //var newPBID = 0; var earnedBadges = pointsAward.AwardPointsToPatron(points: points, reason: PointAwardReason.EventAttendance, eventCode: codeValue, eventID: EID); if (!string.IsNullOrWhiteSpace(earnedBadges)) { new SessionTools(Session).EarnedBadges(earnedBadges); } string userMessage = null; // set message and earned badges string earnedMessage = new PointCalculation().EarnedMessage(earnedBadges, points); if (string.IsNullOrEmpty(earnedMessage)) { userMessage = "<strong>Excellent!</strong> Your secret code has been recorded."; } else { userMessage = string.Format("<strong>Excellent!</strong> Your secret code has been recorded. <strong>{0}</strong>", earnedMessage); } new SessionTools(Session).AlertPatron(userMessage, PatronMessageLevels.Success, "barcode"); this.codeEntryField.Text = string.Empty; } #endregion }
protected void btnSubmit_Click(object sender, EventArgs e) { var txtCount = txtCountSubmitted.Text.Trim(); var txtCode = txtProgramCode.Text.Trim(); // --------------------------------------------------------------------------------------------------- if (txtCount.Length > 0 && txtCode.Length > 0) { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = "Please enter either how much you have read OR a code, but not both.<br><br>"; return; } if (txtCount.Length == 0 && txtCode.Length == 0) { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = "Please enter either how much you have read OR a code.<br><br>"; return; } // --------------------------------------------------------------------------------------------------- int PID = int.Parse(lblPID.Text); int PGID = int.Parse(lblPGID.Text); var StartingPoints = PatronPoints.GetTotalPatronPoints(PID); var pa = new AwardPoints(PID); var sBadges = ""; #region Reading // --------------------------------------------------------------------------------------------------- // Logging reading ... //Badge EarnedBadge; if (txtCount.Length > 0) { var intCount = 0; if (!int.TryParse(txtCount, out intCount)) { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = "How much was read must be a number."; return; } if (intCount < 0) { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = "Hmmm, you must enter a positive number...<br><br>"; return; } int maxAmountForLogging = 0; int maxPointsPerDayForLogging = SRPSettings.GetSettingValue("MaxPtsDay").SafeToInt(); switch (int.Parse(rbActivityType.SelectedValue)) { case 0: maxAmountForLogging = SRPSettings.GetSettingValue("MaxBook").SafeToInt(); break; case 1: maxAmountForLogging = SRPSettings.GetSettingValue("MaxPage").SafeToInt(); break; //case 2: maxAmountForLogging = SRPSettings.GetSettingValue("MaxPar").SafeToInt(); // break; case 3: maxAmountForLogging = SRPSettings.GetSettingValue("MaxMin").SafeToInt(); break; default: maxAmountForLogging = SRPSettings.GetSettingValue("MaxMin").SafeToInt(); break; } if (intCount > maxAmountForLogging) { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = string.Format("That is an awful lot of reading... unfortunately the maximum you can submit at one time is {0} {1}.<br><br>", maxAmountForLogging, ((ActivityType)int.Parse(rbActivityType.SelectedValue)).ToString()); return; } // convert pages/minutes/etc. to points var pc = new ProgramGamePointConversion(); pc.FetchByActivityId(PGID, int.Parse(rbActivityType.SelectedValue)); var points = Convert.ToInt32(intCount * pc.PointCount / pc.ActivityCount); var allPointsToday = PatronPoints.GetTotalPatronPoints(PID, DateTime.Now); if (intCount + allPointsToday > maxPointsPerDayForLogging) { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = string.Format("We are sorry, you have reached the maximum amount of points you are allowed to log in a single day, regardless of how the points were earned. Please come back and and log them tomorrow.<br><br>"); return; } //// convert pages/minutes/etc. to points //var pc = new ProgramGamePointConversion(); //pc.FetchByActivityId(PGID, int.Parse(rbActivityType.SelectedValue)); //var points = Convert.ToInt32(intCount * pc.PointCount / pc.ActivityCount); sBadges = pa.AwardPointsToPatron(points, PointAwardReason.Reading, 0, (ActivityType)pc.ActivityTypeId, intCount, txtAuthor.Text.Trim(), txtTitle.Text.Trim(), Review.Text.Trim()); } #endregion #region Event Attendance // Logging event attendance if (txtCode.Length > 0) { // verify event code was not previously redeemed if (PatronPoints.HasRedeemedKeywordPoints(PID, txtCode)) { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = "This code has already been redeemend for this account."; return; } // get event for that code, get the # points var ds = Event.GetEventByEventCode(pa.pgm.StartDate.ToShortDateString(), DateTime.Now.ToShortDateString(), txtCode); if (ds.Tables[0].Rows.Count == 0) { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = "This code is not valid."; return; } var EID = (int)ds.Tables[0].Rows[0]["EID"]; var evt = Event.GetEvent(EID); var points = evt.NumberPoints; //var newPBID = 0; if (evt.BadgeID != 0) { sBadges = pa.AwardPointsToPatron(points, PointAwardReason.EventAttendance, eventCode: txtCode, eventID: EID); } } #endregion var EndingPoints = PatronPoints.GetTotalPatronPoints(PID); // No need to announcve the badge award lblMessage.ForeColor = System.Drawing.Color.Green; lblMessage.Text = (EndingPoints - StartingPoints).ToInt() + @" points have been added to the account!"; txtAuthor.Text = txtTitle.Text = txtCountSubmitted.Text = Review.Text = txtProgramCode.Text = ""; btnSubmit.Visible = false; btnReSubmit.Visible = true; EntryTable.Visible = false; }