Пример #1
0
        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);
        }
Пример #2
0
        public void PopulateList()
        {
            int pid = int.Parse(lblPID.Text);
            var ds  = PatronPoints.GetAll(pid);

            rptr.DataSource = ds;
            rptr.DataBind();
        }
Пример #3
0
        protected void LoadData()
        {
            var patron = (Patron)Session["Curr_Patron"];

            var ds = PatronPoints.GetAll(patron.PID);

            gv1.DataSource = ds;
            gv1.DataBind();
        }
Пример #4
0
        public AwardPoints(int PID)
        {
            patron       = Patron.FetchObject(PID);
            pgm          = Programs.FetchObject(patron.ProgID);
            EarnedBadges = new List <Badge>();

            StartingPoints = PatronPoints.GetTotalPatronPoints(patron.PID);
            EndingPoints   = StartingPoints;
        }
Пример #5
0
        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;
            }
        }
Пример #6
0
        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();
            }
        }
Пример #9
0
        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;
            }
        }
Пример #10
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();
            }
        }
Пример #16
0
        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);
        }
Пример #18
0
        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();
        }
Пример #19
0
        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();
        }
Пример #20
0
        // 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
        }
Пример #26
0
        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);
                    }
                }
            }
        }
Пример #27
0
        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
        }
Пример #29
0
        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;
        }