protected void GvRowCommand(object sender, GridViewCommandEventArgs e)
        {
            string editpage = "~/ControlRoom/Modules/Setup/AwardAddEdit.aspx";
            string addtpage = "~/ControlRoom/Modules/Setup/AwardAddWizard.aspx";

            if (e.CommandName.ToLower() == "addrecord")
            {
                Session["AWD"] = string.Empty;
                Response.Redirect(addtpage);
            }
            if (e.CommandName.ToLower() == "editrecord")
            {
                int key = Convert.ToInt32(e.CommandArgument);
                Session["AWD"] = key;
                Response.Redirect(editpage);
                //Response.Redirect(String.Format("{0}?PK={1}", editpage, key));
            }
            if (e.CommandName.ToLower() == "deleterecord")
            {
                var key = Convert.ToInt32(e.CommandArgument);
                try
                {
                    var obj = Award.FetchObject(key);
                    if (obj.IsValid(BusinessRulesValidationMode.DELETE))
                    {
                        obj.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 obj.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);
                    }
                }
            }

            if (e.CommandName.ToLower() == "applyaward")
            {
                int key    = Convert.ToInt32(e.CommandArgument);
                var awd    = Award.FetchObject(key);
                var pl     = GetMatchingData(awd);
                var pMax   = pl.Tables[0].Rows.Count;
                var pCount = 0;
                Response.Buffer = false;
                Response.Write("<!-- ");
                foreach (DataRow row in pl.Tables[0].Rows)
                {
                    var pid  = Convert.ToInt32(row["PID"]);
                    var list = new List <Badge>();
                    var p    = Patron.FetchObject(pid);
                    if (AwardPoints.AwardBadgeToPatron(awd.BadgeID, p, ref list))
                    {
                        pCount++;
                        // if they got a badge, then maybe they match the criteria to get another as well ...
                        AwardPoints.AwardBadgeToPatronViaMatchingAwards(p, ref list);
                        Response.Write(" :-> "); Response.Flush();
                    }
                }
                Response.Write("-->");

                var masterPage = (IControlRoomMaster)Master;
                if (masterPage != null)
                {
                    masterPage.PageMessage = String.Format("{0} patrons matched the award criteria. Award has been applied to {1} patrons who had not previously received the award.", pMax, pCount);
                }
            }
        }
        protected void DvItemCommand(object sender, DetailsViewCommandEventArgs e)
        {
            string returnURL = "~/ControlRoom/Modules/Patrons/PatronBadges.aspx";

            if (e.CommandName.ToLower() == "back")
            {
                Response.Redirect(returnURL);
            }
            //if (e.CommandName.ToLower() == "refresh")
            //{
            //    try
            //    {
            //        odsData.DataBind();
            //        dv.DataBind();
            //        dv.ChangeMode(DetailsViewMode.Edit);

            //        var masterPage = (IControlRoomMaster)Master;
            //        if (masterPage != null) masterPage.PageMessage = SRPResources.RefreshOK;
            //    }
            //    catch (Exception ex)
            //    {
            //        var masterPage = (IControlRoomMaster)Master;
            //        masterPage.PageError = String.Format(SRPResources.ApplicationError1, ex.Message);
            //    }
            //}
            if (e.CommandName.ToLower() == "add" || e.CommandName.ToLower() == "addandback")
            {
                try
                {
                    var badgeID = FormatHelper.SafeToInt(((DropDownList)((DetailsView)sender).FindControl("BadgeID")).SelectedValue);


                    if (Session["Curr_Patron"] == null)
                    {
                        Response.Redirect("Default.aspx");
                    }
                    var patron = (Patron)Session["Curr_Patron"];

                    var earnedBadges = new List <Badge>();
                    AwardPoints.AwardBadgeToPatron(badgeID, patron, ref earnedBadges);
                    Response.Redirect(returnURL);

                    //var obj = new DAL.PatronBadges();
                    //obj.PID = patron.PID;
                    //obj.BadgeID = FormatHelper.SafeToInt(((DropDownList) ((DetailsView) sender).FindControl("BadgeID")).SelectedValue);
                    //var dt = ((TextBox) ((DetailsView) sender).FindControl("DateEarned")).Text;
                    //obj.DateEarned = (dt == "" ? DateTime.Now : FormatHelper.SafeToDateTime(dt));


                    //if (obj.IsValid(BusinessRulesValidationMode.INSERT))
                    //{
                    //obj.Insert();
                    //var earnedBadge = Badge.GetBadge(obj.BadgeID);



                    //if (earnedBadge.GenNotificationFlag)
                    //{
                    //    var notif = new DAL.Notifications
                    //    {
                    //        PID_To = patron.PID,
                    //        PID_From = 0,  //0 == System Notification
                    //        Subject = earnedBadge.NotificationSubject,
                    //        Body = earnedBadge.NotificationBody,
                    //        isQuestion = false,
                    //        AddedDate = obj.DateEarned,
                    //        LastModDate = obj.DateEarned,
                    //        AddedUser = patron.Username,
                    //        LastModUser = "******"
                    //    };
                    //    notif.Insert();
                    //}

                    // Always go back
                    //if (e.CommandName.ToLower() == "addandback")
                    //{
                    //Response.Redirect(returnURL);
                    //}

                    //lblPK.Text = obj.PBID.ToString();

                    //odsData.DataBind();
                    //dv.DataBind();
                    //dv.ChangeMode(DetailsViewMode.Edit);

                    //var masterPage = (IControlRoomMaster)Master;
                    //masterPage.PageMessage = SRPResources.AddedOK;
                    //}
                    //else
                    //{
                    //    var masterPage = (IControlRoomMaster)Master;
                    //    string message = String.Format(SRPResources.ApplicationError1, "<ul>");
                    //    foreach (BusinessRulesValidationMessage m in obj.ErrorCodes)
                    //    {
                    //        message = string.Format(String.Format("{0}<li>{{0}}</li>", message), m.ErrorMessage);
                    //    }
                    //    message = string.Format("{0}</ul>", message);
                    //    masterPage.PageError = message;
                    //}
                }
                catch (Exception ex)
                {
                    var masterPage = (IControlRoomMaster)Master;
                    masterPage.PageError = String.Format(SRPResources.ApplicationError1, ex.Message);
                }
            }
            //if (e.CommandName.ToLower() == "save" || e.CommandName.ToLower() == "saveandback")
            //{
            //    try
            //    {
            //        var obj = new PatronBadges();
            //        int pk = int.Parse(((DetailsView)sender).Rows[0].Cells[1].Text);
            //        obj.Fetch(pk);

            //        //obj.PID = FormatHelper.SafeToInt(((DropDownList) ((DetailsView) sender).FindControl("PID")).SelectedValue);
            //        obj.PID = FormatHelper.SafeToInt(((TextBox)((DetailsView)sender).FindControl("PID")).Text);
            //        //obj.BadgeID = FormatHelper.SafeToInt(((DropDownList) ((DetailsView) sender).FindControl("BadgeID")).SelectedValue);
            //        obj.BadgeID = FormatHelper.SafeToInt(((TextBox)((DetailsView)sender).FindControl("BadgeID")).Text);
            //        obj.DateEarned = FormatHelper.SafeToDateTime(((TextBox)((DetailsView)sender).FindControl("DateEarned")).Text);

            //        obj.LastModDate = DateTime.Now;
            //        obj.LastModUser = ((SRPUser)Session[SessionData.UserProfile.ToString()]).Username;  //"N/A";  // Get from session

            //        if (obj.IsValid(BusinessRulesValidationMode.UPDATE))
            //        {
            //            obj.Update();
            //            if (e.CommandName.ToLower() == "saveandback")
            //            {
            //                Response.Redirect(returnURL);
            //            }

            //            odsData.DataBind();
            //            dv.DataBind();
            //            dv.ChangeMode(DetailsViewMode.Edit);

            //            var masterPage = (IControlRoomMaster)Master;
            //            masterPage.PageMessage = SRPResources.SaveOK;
            //        }
            //        else
            //        {
            //            var masterPage = (IControlRoomMaster)Master;
            //            string message = String.Format(SRPResources.ApplicationError1, "<ul>");
            //            foreach (BusinessRulesValidationMessage m in obj.ErrorCodes)
            //            {
            //                message = string.Format(String.Format("{0}<li>{{0}}</li>", message), m.ErrorMessage);
            //            }
            //            message = string.Format("{0}</ul>", message);
            //            masterPage.PageError = message;
            //        }
            //    }
            //    catch (Exception ex)
            //    {
            //        var masterPage = (IControlRoomMaster)Master;
            //        masterPage.PageError = String.Format(SRPResources.ApplicationError1, ex.Message);
            //    }
            //}
        }
Exemple #3
0
        protected bool RegisterPatron()
        {
            var patron = new Patron();

            patron.ProgID      = Programs.GetDefaultProgramForAgeAndGrade(0, 0);
            patron.Username    = Username.Text;
            patron.NewPassword = Password.Text;
            // hardcoding over 18 because there's no facility to ask here
            patron.Over18Flag   = true;
            patron.FirstName    = FirstName.Text.Trim();
            patron.LastName     = LastName.Text.Trim();
            patron.EmailAddress = EmailAddress.Text.Trim();
            patron.LibraryCard  = LibraryCard.Text.Replace(" ", "");
            int primaryLibrary = 0;

            if (int.TryParse(PrimaryLibrary.SelectedValue, out primaryLibrary))
            {
                patron.PrimaryLibrary = primaryLibrary;
            }
            if (!string.IsNullOrEmpty(MasterPID.Text))
            {
                int masterPid = 0;
                if (int.TryParse(MasterPID.Text, out masterPid))
                {
                    var masterPatron = Patron.FetchObject(masterPid);
                    if (!masterPatron.IsMasterAccount)
                    {
                        masterPatron.IsMasterAccount = true;
                        masterPatron.Update();
                        new SessionTools(Session).EstablishPatron(masterPatron);
                    }
                    patron.MasterAcctPID           = masterPid;
                    patron.ParentGuardianFirstName = masterPatron.FirstName;
                    patron.ParentGuardianLastName  = masterPatron.LastName;
                }
            }
            try {
                if (patron.IsValid(BusinessRulesValidationMode.INSERT))
                {
                    patron.Insert();
                    this.Log().Info("New participant: {0} {1} ({2})",
                                    patron.FirstName,
                                    patron.LastName,
                                    patron.LibraryCard);
                }
                else
                {
                    StringBuilder message = new StringBuilder("<strong>");
                    message.AppendFormat(SRPResources.ApplicationError1, "<ul>");
                    foreach (BusinessRulesValidationMessage m in patron.ErrorCodes)
                    {
                        this.Log().Warn("Business rule error creating patron: {0}", m.ErrorMessage);
                        message.AppendFormat("<li>{0}</li>", m.ErrorMessage);
                    }
                    message.Append("</ul></strong>");
                    new SessionTools(Session).AlertPatron(
                        message.ToString(),
                        PatronMessageLevels.Warning,
                        "exclamation-sign");
                    return(false);
                }

                var prog             = Programs.FetchObject(patron.ProgID);
                var earnedBadgesList = new List <Badge>();
                if (prog.RegistrationBadgeID != 0)
                {
                    AwardPoints.AwardBadgeToPatron(prog.RegistrationBadgeID,
                                                   patron,
                                                   ref earnedBadgesList);
                }
                AwardPoints.AwardBadgeToPatronViaMatchingAwards(patron, ref earnedBadgesList);

                if (string.IsNullOrEmpty(MasterPID.Text))
                {
                    EarnedBadges.Text = string.Join("|", earnedBadgesList.Select(b => b.BID).Distinct());
                    MasterPID.Text    = patron.PID.ToString();
                    new SessionTools(Session).EstablishPatron(patron);
                }
                else
                {
                    new SessionTools(Session).AlertPatron(
                        string.Format("Account created for: <strong>{0}</strong>",
                                      DisplayHelper.FormatName(
                                          patron.FirstName,
                                          patron.LastName,
                                          patron.Username)),
                        glyphicon: "thumbs-up");
                }
            } catch (Exception ex) {
                this.Log().Error(string.Format("A problem occurred during registration: {0}",
                                               ex.Message));
                new SessionTools(Session).AlertPatron(
                    string.Format("<strong>{0}</strong>", ex.Message),
                    PatronMessageLevels.Warning,
                    "exclamation-sign");
                return(false);
            }
            return(true);
        }
Exemple #4
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 rptr.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();
                    }
                }
            }

            new SessionTools(Session).AlertPatron("Your progress has been saved!",
                                                  glyphicon: "check");

            // read the entire book list!  Award points and badges
            if ((neeedCount == 0 && onlyCheckedBoxes) || (neeedCount <= readCount))
            {
                new SessionTools(Session).AlertPatron("Good work, you've completed a Challenge!",
                                                      glyphicon: "star");

                var bl = BookList.FetchObject(selBLI);

                if (PatronPoints.HasEarnedBookList(((Patron)Session["Patron"]).PID, selBLI))
                {
                    return;
                }

                if (bl.AwardBadgeID != 0 || bl.AwardPoints != 0)
                {
                    new SessionTools(Session).AlertPatron("Congratulations, you completed a Challenge and were awarded a badge!",
                                                          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);
                    }
                }
            }
        }
        protected void ImageButton1_Command(object sender, CommandEventArgs e)
        {
            var masterPage = (IControlRoomMaster)((BaseControlRoomPage)Page).Master;

            lblError.Text = string.Empty;
            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 = string.Empty;
                    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(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 rptr_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            var masterPage = (IControlRoomMaster)((BaseControlRoomPage)Page).Master;

            if (e.CommandName.ToLower() == "back")
            {
                Response.Redirect("Default.aspx");
            }
            if (e.CommandName.ToLower() == "refresh")
            {
                LoadControl();
                if (masterPage != null)
                {
                    masterPage.PageMessage = SRPResources.RefreshOK;
                }
                return;
            }

            lblError.Text = string.Empty;
            Page.Validate();
            if (Page.IsValid)
            {
                if (e.CommandName.ToLower() == "save" || e.CommandName.ToLower() == "saveandback")
                {
                    var p = new Patron();
                    if (!IsAdd())
                    {
                        p = Patron.FetchObject(int.Parse(SA.Text));
                    }

                    DateTime _d;

                    p.Username = ((TextBox)(e.Item).FindControl("Username")).Text;
                    var password = ((TextBox)(e.Item).FindControl("Password")).Text;
                    if (!password.StartsWith(PasswordFiller) && !password.EndsWith(PasswordFiller))
                    {
                        p.NewPassword = password;
                    }

                    var DOB = e.Item.FindControl("DOB") as TextBox;
                    if (DOB != null && DOB.Text != "")
                    {
                        if (DateTime.TryParse(DOB.Text, out _d))
                        {
                            p.DOB = _d;
                        }
                    }



                    p.Age = FormatHelper.SafeToInt(((TextBox)(e.Item).FindControl("Age")).Text);
                    //p.Custom2 = (((TextBox)(e.Item).FindControl("Custom2")).Text);

                    p.MasterAcctPID = int.Parse(MasterPatronID);

                    p.SchoolGrade    = ((TextBox)(e.Item).FindControl("SchoolGrade")).Text;
                    p.FirstName      = ((TextBox)(e.Item).FindControl("FirstName")).Text;
                    p.MiddleName     = ((TextBox)(e.Item).FindControl("MiddleName")).Text;
                    p.LastName       = ((TextBox)(e.Item).FindControl("LastName")).Text;
                    p.Gender         = ((DropDownList)(e.Item).FindControl("Gender")).SelectedValue;
                    p.EmailAddress   = ((TextBox)(e.Item).FindControl("EmailAddress")).Text;
                    p.PhoneNumber    = ((TextBox)(e.Item).FindControl("PhoneNumber")).Text;
                    p.PhoneNumber    = FormatHelper.FormatPhoneNumber(p.PhoneNumber);
                    p.StreetAddress1 = ((TextBox)(e.Item).FindControl("StreetAddress1")).Text;
                    p.StreetAddress2 = ((TextBox)(e.Item).FindControl("StreetAddress2")).Text;
                    p.City           = ((TextBox)(e.Item).FindControl("City")).Text;
                    p.State          = ((TextBox)(e.Item).FindControl("State")).Text;
                    p.ZipCode        = ((TextBox)(e.Item).FindControl("ZipCode")).Text;
                    p.ZipCode        = FormatHelper.FormatZipCode(p.ZipCode);

                    p.Country = ((TextBox)(e.Item).FindControl("Country")).Text;
                    p.County  = ((TextBox)(e.Item).FindControl("County")).Text;
                    p.ParentGuardianFirstName  = ((TextBox)(e.Item).FindControl("ParentGuardianFirstName")).Text;
                    p.ParentGuardianLastName   = ((TextBox)(e.Item).FindControl("ParentGuardianLastName")).Text;
                    p.ParentGuardianMiddleName = ((TextBox)(e.Item).FindControl("ParentGuardianMiddleName")).Text;
                    p.LibraryCard = ((TextBox)(e.Item).FindControl("LibraryCard")).Text;

                    //p.PrimaryLibrary = ((DropDownList)(e.Item).FindControl("PrimaryLibrary")).SelectedValue.SafeToInt();
                    //p.SchoolName = ((DropDownList)(e.Item).FindControl("SchoolName")).SelectedValue;
                    //p.District = ((DropDownList)(e.Item).FindControl("District")).SelectedValue;
                    //p.SDistrict = ((DropDownList)(e.Item).FindControl("SDistrict")).SelectedValue.SafeToInt();
                    //p.SchoolType = ((DropDownList)(e.Item).FindControl("SchoolType")).SelectedValue.SafeToInt();

                    p.PrimaryLibrary = ((DropDownList)(e.Item).FindControl("PrimaryLibrary")).SelectedValue.SafeToInt();
                    p.SchoolName     = ((DropDownList)(e.Item).FindControl("SchoolName")).SelectedValue;
                    p.SchoolType     = ((DropDownList)(e.Item).FindControl("SchoolType")).SelectedValue.SafeToInt();

                    var lc = LibraryCrosswalk.FetchObjectByLibraryID(p.PrimaryLibrary);
                    if (lc != null)
                    {
                        p.District = lc.DistrictID == 0 ? ((DropDownList)(e.Item).FindControl("District")).SelectedValue : lc.DistrictID.ToString();
                    }
                    else
                    {
                        p.District = ((DropDownList)(e.Item).FindControl("District")).SelectedValue;
                    }
                    var sc = SchoolCrosswalk.FetchObjectBySchoolID(p.SchoolName.SafeToInt());
                    if (sc != null)
                    {
                        p.SDistrict  = sc.DistrictID == 0 ? ((DropDownList)(e.Item).FindControl("SDistrict")).SelectedValue.SafeToInt() : sc.DistrictID;
                        p.SchoolType = sc.SchTypeID == 0 ? FormatHelper.SafeToInt(((DropDownList)(e.Item).FindControl("SchoolType")).SelectedValue) : sc.SchTypeID;
                    }
                    else
                    {
                        p.SDistrict = ((DropDownList)(e.Item).FindControl("SDistrict")).SelectedValue.SafeToInt();
                    }



                    p.Teacher = ((TextBox)(e.Item).FindControl("Teacher")).Text;

                    p.GroupTeamName  = ((TextBox)(e.Item).FindControl("GroupTeamName")).Text;
                    p.LiteracyLevel1 = ((TextBox)(e.Item).FindControl("LiteracyLevel1")).Text.SafeToInt();
                    p.LiteracyLevel2 = ((TextBox)(e.Item).FindControl("LiteracyLevel2")).Text.SafeToInt();
                    try
                    {
                        p.ParentPermFlag = ((CheckBox)(e.Item).FindControl("ParentPermFlag")).Checked;
                        p.Over18Flag     = ((CheckBox)(e.Item).FindControl("Over18Flag")).Checked;
                        p.ShareFlag      = ((CheckBox)(e.Item).FindControl("ShareFlag")).Checked;
                        p.TermsOfUseflag = ((CheckBox)(e.Item).FindControl("TermsOfUseflag")).Checked;
                    }
                    catch { }



                    var cr = CustomRegistrationFields.FetchObject();
                    p.Custom1 = cr.DDValues1 == "" ? ((TextBox)(e.Item).FindControl("Custom1")).Text : ((DropDownList)(e.Item).FindControl("Custom1DD")).SelectedValue;
                    p.Custom2 = cr.DDValues2 == "" ? ((TextBox)(e.Item).FindControl("Custom2")).Text : ((DropDownList)(e.Item).FindControl("Custom2DD")).SelectedValue;
                    p.Custom3 = cr.DDValues3 == "" ? ((TextBox)(e.Item).FindControl("Custom3")).Text : ((DropDownList)(e.Item).FindControl("Custom3DD")).SelectedValue;
                    p.Custom4 = cr.DDValues4 == "" ? ((TextBox)(e.Item).FindControl("Custom4")).Text : ((DropDownList)(e.Item).FindControl("Custom4DD")).SelectedValue;
                    p.Custom5 = cr.DDValues5 == "" ? ((TextBox)(e.Item).FindControl("Custom5")).Text : ((DropDownList)(e.Item).FindControl("Custom5DD")).SelectedValue;

                    p.ProgID          = FormatHelper.SafeToInt(((DropDownList)e.Item.FindControl("ProgID")).SelectedValue);
                    p.IsMasterAccount = ((CheckBox)(e.Item).FindControl("IsMasterAccount")).Checked;
                    // do the save

                    p.SuppressFromFeed = ((CheckBox)(e.Item).FindControl("SuppressFromFeed")).Checked;

                    if (IsAdd())
                    {
                        if (p.IsValid(BusinessRulesValidationMode.INSERT))
                        {
                            p.Insert();
                            PatronID = p.PID.ToString();
                            SA.Text  = PatronID;
                            Session["CURR_PATRON_MODE"] = "EDIT";
                            LoadControl();

                            // award any required sign-up badges
                            var prog             = Programs.FetchObject(p.ProgID);
                            var earnedBadgesList = new List <Badge>();
                            if (prog.RegistrationBadgeID != 0)
                            {
                                AwardPoints.AwardBadgeToPatron(prog.RegistrationBadgeID,
                                                               p,
                                                               ref earnedBadgesList);
                            }
                            AwardPoints.AwardBadgeToPatronViaMatchingAwards(p,
                                                                            ref earnedBadgesList);

                            masterPage.PageMessage = SRPResources.AddedOK;

                            if (earnedBadgesList.Count > 0)
                            {
                                masterPage.PageMessage = string.Format("{0}{1}",
                                                                       SRPResources.PatronAddedOkWithBadges,
                                                                       string.Join(", ", earnedBadgesList.Select(b => b.UserName)));
                            }

                            if (e.CommandName.ToLower() == "saveandback")
                            {
                                Response.Redirect("Default.aspx");
                            }
                        }
                        else
                        {
                            string message = String.Format(SRPResources.ApplicationError1, "<ul>");
                            foreach (BusinessRulesValidationMessage m in p.ErrorCodes)
                            {
                                message = string.Format(String.Format("{0}<li>{{0}}</li>", message), m.ErrorMessage);
                            }
                            message = string.Format("{0}</ul>", message);
                            masterPage.PageError = message;
                        }

                        var parent = Patron.FetchObject(p.MasterAcctPID);
                        if (parent != null && !parent.IsMasterAccount)
                        {
                            parent.IsMasterAccount = true;
                            parent.Update();
                            Session["CURR_PATRON"] = parent;
                            PatronsRibbon.GetByAppContext((BaseControlRoomPage)Page);
                        }
                    }
                    else
                    {
                        if (p.IsValid(BusinessRulesValidationMode.UPDATE))
                        {
                            p.Update();
                            masterPage.PageMessage = SRPResources.SaveOK;

                            if (e.CommandName.ToLower() == "saveandback")
                            {
                                Response.Redirect("Default.aspx");
                            }
                            else
                            {
                                LoadControl();
                            }
                        }
                        else
                        {
                            string message = String.Format(SRPResources.ApplicationError1, "<ul>");
                            foreach (BusinessRulesValidationMessage m in p.ErrorCodes)
                            {
                                message = string.Format(String.Format("{0}<li>{{0}}</li>", message), m.ErrorMessage);
                            }
                            message = string.Format("{0}</ul>", message);
                            masterPage.PageError = message;
                        }
                    }
                }
            }
        }