protected void grdTeams_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //look for the id to be deleted
            Int32 TeamID = Convert.ToInt32(grdTeams.DataKeys[e.RowIndex].Values["TeamID"]);

            //connect to db
            using (DefaultConnection db = new DefaultConnection())
            {
                Team team = (from t in db.Teams
                             where t.TeamID == TeamID
                             select t).FirstOrDefault();
                //delete record
                db.Teams.Remove(team);
                db.SaveChanges();

                GetTeams();
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            using (DefaultConnection db = new DefaultConnection())
            {
                //create new team
                Team team = new Team();

                //check for url
                if(!String.IsNullOrEmpty(Request.QueryString["TeamID"]))
                {
                    Int32 TeamID = Convert.ToInt32(Request.QueryString["TeamID"]);

                    //look up team
                    team = (from t in db.Teams where t.TeamID == TeamID select t).FirstOrDefault();
                }

                    //fill properties of new team
                    team.TeamName = txtTeam.Text;
                    team.Wins = Convert.ToInt32(txtWins.Text);
                    team.Losses = Convert.ToInt32(txtLosses.Text);
                    team.RunsScored = Convert.ToInt32(txtRunsScored.Text);
                    team.RunsAgainst = Convert.ToInt32(txtRunsAgainst.Text);
                    team.ExpectedWinningPercentage = Convert.ToDecimal(txtExpectedWinPercentage.Text);
                    team.RelativePowerIndex = Convert.ToDecimal(txtRelativePowerIndex.Text);

                    //add if we have no url id
                    if (String.IsNullOrEmpty(Request.QueryString["TeamID"]))
                    {
                        db.Teams.Add(team);
                    }

                    //save the new team
                    db.SaveChanges();

                    //redirect
                    Response.Redirect("standings.aspx");

            }
        }
        protected void btnRegister_Click(object sender, EventArgs e)
        {
            //connect
            using (DefaultConnection db = new DefaultConnection())
            {
                //create a new user
                User objU = new User();

                //fill properties
                objU.Name = txtName.Text;
                objU.Username = txtUsername.Text;

                //salt and hash plain text pw
                String password = txtPassword.Text;
                String salt = CreateSalt(8);
                String pass_and_salt = password + salt;

                // Create a new instance of the hash crypto service provider.
                HashAlgorithm hashAlg = new SHA256CryptoServiceProvider();

                // Convert the data to hash to an array of Bytes.
                byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(pass_and_salt);

                // Compute the Hash. This returns an array of Bytes.
                byte[] bytHash = hashAlg.ComputeHash(bytValue);

                // Optionally, represent the hash value as a base64-encoded string,
                // For example, if you need to display the value or transmit it over a network.
                string base64 = Convert.ToBase64String(bytHash);

                objU.Password = base64;
                objU.Salt = salt;

                //save
                db.Users.Add(objU);
                db.SaveChanges();
            }
        }