public void AddInvalidNewUser()
        {
            //Arrange
            Gebruiker newUser = new Gebruiker()
            {
                GebruikerID = 1,
                Gebruikersnaam = "Admin",
                Wachtwoord = string.Empty,
                Email = "*****@*****.**",
                OverMij = string.Empty,
                Naam = "Voor Achternaam",
                Land = "Nederland",
                Provincie = "Gelderland",
                Woonplaats = string.Empty,
                Voorkeurstaal = string.Empty,
                Geslacht = "f",
                Geboortedatum = DateTime.Now,
                Profielfoto = string.Empty,
                Verzamelingstoegankelijkheid = "public",
                Nieuwsbrief = true
            };

            //Act
            bool result = db.AddNewUser(newUser);

            //Assert
            Assert.IsFalse(result);
        }
        public void AddNewUser()
        {
            //Arrange
            Gebruiker newUser = new Gebruiker()
            {
                Gebruikersnaam = "unittestgebruiker",
                Wachtwoord = "ww",
                Email = "*****@*****.**",
                OverMij = string.Empty,
                Naam = "Voor Achternaam",
                Land = "Nederland",
                Provincie = "Gelderland",
                Woonplaats = string.Empty,
                Voorkeurstaal = string.Empty,
                Geslacht = "f",
                Geboortedatum = DateTime.Now,
                Profielfoto = string.Empty,
                Verzamelingstoegankelijkheid = "public",
                Nieuwsbrief = true
            };

            //Act
            bool result = db.AddNewUser(newUser);
            db.DeleteUser(db.GetHighestUserID());

            //Assert
            Assert.IsTrue(result);
        }
        protected void ButtonLogin_Click(object sender, EventArgs e)
        {
            bool loggedIn = (bool)Session["LoggedIn"];
            if (loggedIn)
            {
                Session["LoggedIn"] = false;
                if (HttpContext.Current.Request.Url.AbsolutePath == "/MijnProfiel.aspx")
                {
                    Response.Redirect("/Home.aspx");
                }
            }
            else
            {
                if (txtGebruikersnaam.Text == string.Empty || txtWachtwoord.Text == string.Empty)
                {
                    if(txtGebruikersnaam.Text == string.Empty)
                    {
                        validateGebruikersnaam.Visible = true;
                    }
                    if(txtWachtwoord.Text == string.Empty)
                    {
                        validateWachtwoord.Visible = true;
                    }
                }
                else
                {
                    validateGebruikersnaam.Visible = false;
                    validateWachtwoord.Visible = false;

                    Gebruiker gevondenGebruiker;
                    gevondenGebruiker = db.LogUserIn(txtGebruikersnaam.Text, txtWachtwoord.Text);

                    if (gevondenGebruiker.GebruikerID != 0)
                    {
                        Session["loggedIn"] = true;
                        loggeddInUser = gevondenGebruiker;
                        Session["loggedInUser"] = loggeddInUser;
                    }
                    else
                    {
                        txtGebruikersnaam.Text = string.Empty;
                        txtWachtwoord.Text = string.Empty;
                    }
                }
            }
            SetUCState();
            Response.Redirect(Request.RawUrl);
        }
        public void UpdateExistingUser()
        {
            //Arrange
            Random rnd = new Random();
            int willekeurigGetal = rnd.Next(10, 1000);
            int userID = db.GetUserID("jandeverzamelaar");

            Gebruiker userToBeUpdated = new Gebruiker()
            {
                GebruikerID = userID,
                Gebruikersnaam = "jandeverzamelaar",
                Wachtwoord = "ww",
                Email = "*****@*****.**",
                OverMij = "UPDATED OVERMIJ willekeurig getal: " + willekeurigGetal.ToString(),
                Naam = "Jan Jansen",
                Land = "Nederland",
                Provincie = "Utrecht",
                Woonplaats = "Utrecht",
                Voorkeurstaal = "Nederlands",
                Geslacht = "",
                Geboortedatum = new DateTime(1984, 10, 13),
                Profielfoto = string.Empty,
                Verzamelingstoegankelijkheid = "public",
                Nieuwsbrief = true
            };

            //Act
            bool result = db.UpdateUser(userToBeUpdated);

            //Assert
            Assert.IsTrue(result);
        }
        public void CheckInvalidLogin()
        {
            //Arrange
            string username = "******";
            string password = "******";

            //Act
            Gebruiker found = new Gebruiker();
            found = db.LogUserIn(username, password);

            //Assert
            Assert.AreEqual(0, found.GebruikerID);
        }
        public void CheckAdminLoginForNull()
        {
            //Arrange
            string username = "******";
            string password = "******";

            //Act
            Gebruiker found = new Gebruiker();
            found = db.LogUserIn(username, password);

            //Assert
            Assert.AreEqual(16, found.GebruikerID);
        }
        protected void BtnSlaOp_Click(object sender, EventArgs e)
        {
            bool success = false;
            bool boolNieuwsbrief;
            string strProvincie = string.Empty;

            if (chbNieuwsbrief.Checked)
            {
                boolNieuwsbrief = true;
            }
            else
            {
                boolNieuwsbrief = false;
            }

            if (ddlLand.SelectedItem.ToString() == "Nederland")
            {
                strProvincie = ddlProvincie.SelectedItem.ToString();
            }
            else
            {
                strProvincie = null;
            }

            if (txtWachtwoord1.Text == txtWachtwoord2.Text)
            {
                Gebruiker updatedUser = new Gebruiker()
                {
                    GebruikerID = Convert.ToInt32(lblID.Text),
                    Gebruikersnaam = txtGebruikersnaam.Text,
                    Email = txtEmail.Text,
                    Wachtwoord = txtWachtwoord1.Text,
                    OverMij = txtOverMij.Text,
                    Naam = txtNaam.Text,
                    Land = ddlLand.SelectedItem.ToString(),
                    Provincie = strProvincie,
                    Woonplaats = txtWoonplaats.Text,
                    Voorkeurstaal = ddlVoorkeurstaal.SelectedItem.ToString(),
                    Geslacht = rblGeslacht.SelectedItem.ToString(),
                    Geboortedatum = calGeboortedatum.SelectedDate,
                    Profielfoto = txtProfielfoto.Text,
                    Verzamelingstoegankelijkheid = rblVerzameling.SelectedItem.ToString(),
                    Nieuwsbrief = boolNieuwsbrief
                };

                if (updatedUser.Geboortedatum == DateTime.Now.Date)
                {
                    updatedUser.Geboortedatum = DateTime.MinValue;
                }

                success = db.UpdateUser(updatedUser);
            }

            if (success)
            {
                //Session["loggedIn"] = false;
                //Response.Redirect("Home.aspx");
            }
            else
            {
                //lblResult.ForeColor = Color.Red;
                //lblResult.Text = "Deze gebruiker kan niet toegevoegd worden.";
            }
        }
        public bool UpdateUser(Gebruiker updatedUser)
        {
            bool result = true;
            string nieuwsbrief;

            connection.Open();
            OracleCommand cmdUpdate = new OracleCommand();
            cmdUpdate.Connection = connection;

            if (updatedUser.Nieuwsbrief == true)
            {
                nieuwsbrief = "Y";
            }
            else
            {
                nieuwsbrief = "N";
            }

            OracleParameter parGebruikerid = new OracleParameter("gebruikerID", updatedUser.GebruikerID);
            OracleParameter parGebruikersnaam = new OracleParameter("gebruikersnaam", updatedUser.Gebruikersnaam);
            OracleParameter parEmail = new OracleParameter("email", updatedUser.Email);
            OracleParameter parWachtwoord = new OracleParameter("wachtwoord", updatedUser.Wachtwoord);
            OracleParameter parOverMij = new OracleParameter("overmij", updatedUser.OverMij);
            OracleParameter parNaam = new OracleParameter("naam", updatedUser.Naam);
            OracleParameter parLand = new OracleParameter("land", updatedUser.Land);
            OracleParameter parProvincie = new OracleParameter("provincie", updatedUser.Provincie);
            OracleParameter parWoonplaats = new OracleParameter("woonplaats", updatedUser.Woonplaats);
            OracleParameter parVoorkeurstaal = new OracleParameter("voorkeurstaal", updatedUser.Voorkeurstaal);
            OracleParameter parGeslacht = new OracleParameter("geslacht", string.Empty);
            if (updatedUser.Geslacht == "Man")
            {
                parGeslacht.Value = "m";
            }
            else
            {
                parGeslacht.Value = "f";
            }
            OracleParameter parGeboortedatum = new OracleParameter("geboortedatum", updatedUser.Geboortedatum);
            OracleParameter parProfielfoto = new OracleParameter("profielfoto", updatedUser.Profielfoto);
            OracleParameter parVerz = new OracleParameter("verz", updatedUser.Verzamelingstoegankelijkheid);
            OracleParameter parNieuwsbrief = new OracleParameter("nieuwsbrief", nieuwsbrief);

            cmdUpdate.Parameters.Add(parGebruikerid);
            cmdUpdate.Parameters.Add(parGebruikersnaam);
            cmdUpdate.Parameters.Add(parEmail);
            cmdUpdate.Parameters.Add(parWachtwoord);
            cmdUpdate.Parameters.Add(parOverMij);
            cmdUpdate.Parameters.Add(parNaam);
            cmdUpdate.Parameters.Add(parLand);
            cmdUpdate.Parameters.Add(parProvincie);
            cmdUpdate.Parameters.Add(parWoonplaats);
            cmdUpdate.Parameters.Add(parVoorkeurstaal);
            cmdUpdate.Parameters.Add(parGeslacht);
            cmdUpdate.Parameters.Add(parGeboortedatum);
            cmdUpdate.Parameters.Add(parProfielfoto);
            cmdUpdate.Parameters.Add(parVerz);
            cmdUpdate.Parameters.Add(parNieuwsbrief);

            cmdUpdate.CommandText = "DELETE FROM GEBRUIKER WHERE GEBRUIKERID = :gebruikerID";
            try
            {
                cmdUpdate.ExecuteNonQuery();
            }
            catch (OracleException ex)
            {
                Console.WriteLine("Record is not inserted into the database table.");
                Console.WriteLine("Exception Message: " + ex.Message);
                Console.WriteLine("Exception Source: " + ex.Source);
                result = false;
            }

            cmdUpdate.CommandText = "INSERT INTO GEBRUIKER VALUES (:gebruikerID, :gebruikersnaam, :email, :wachtwoord, :overmij, :naam, :land, :provincie, :woonplaats, :voorkeurstaal, :geslacht, :geboortedatum, :profielfoto, :verz, :nieuwsbrief)";
            try
            {
                cmdUpdate.ExecuteNonQuery();
            }
            catch (OracleException ex)
            {
                Console.WriteLine("Record is not inserted into the database table.");
                Console.WriteLine("Exception Message: " + ex.Message);
                Console.WriteLine("Exception Source: " + ex.Source);
                result = false;
            }
            finally
            {
                connection.Close();
            }

            return result;
        }
        public Gebruiker LogUserIn(string username, string password)
        {
            Gebruiker gevondenGebruiker = new Gebruiker();

            connection.Open();
            OracleCommand command = new OracleCommand();
            command.Connection = connection;

            OracleParameter parGebruikernaam = new OracleParameter("gebruikersnaam", username);
            command.Parameters.Add(parGebruikernaam);

            OracleParameter parWachtwoord = new OracleParameter("wachtwoord", password);
            command.Parameters.Add(parWachtwoord);

            command.CommandText = "SELECT * FROM GEBRUIKER WHERE GEBRUIKERSNAAM = :gebruikersnaam AND WACHTWOORD = :wachtwoord";
            OracleDataReader dataReader = command.ExecuteReader();
            while (dataReader.Read())
            {
                if (dataReader["GEBRUIKERID"] != null)
                {
                    bool boolNieuwsbrief;
                    if (dataReader["NIEUWSBRIEF"].ToString().ToUpper() == "Y")
                    {
                        boolNieuwsbrief = true;
                    }
                    else
                    {
                        boolNieuwsbrief = false;
                    }

                    gevondenGebruiker.GebruikerID = (int)dataReader["GEBRUIKERID"];
                    if (dataReader["GEBRUIKERSNAAM"] != DBNull.Value)
                    {
                        gevondenGebruiker.Gebruikersnaam = (string)dataReader["GEBRUIKERSNAAM"];
                    }
                    if (dataReader["EMAILADRES"] != DBNull.Value)
                    {
                        gevondenGebruiker.Email = (string)dataReader["EMAILADRES"];
                    }
                    if (dataReader["WACHTWOORD"] != DBNull.Value)
                    {
                        gevondenGebruiker.Wachtwoord = (string)dataReader["WACHTWOORD"];
                    }
                    if (dataReader["OVERMIJ"] != DBNull.Value)
                    {
                        gevondenGebruiker.OverMij = (string)dataReader["OVERMIJ"];
                    }
                    if (dataReader["NAAM"] != DBNull.Value)
                    {
                        gevondenGebruiker.Naam = (string)dataReader["NAAM"];
                    }
                    if (dataReader["LAND"] != DBNull.Value)
                    {
                        gevondenGebruiker.Land = (string)dataReader["LAND"];
                    }
                    if (dataReader["PROVINCIE"] != DBNull.Value)
                    {
                        gevondenGebruiker.Provincie = (string)dataReader["PROVINCIE"];
                    }
                    if (dataReader["WOONPLAATS"] != DBNull.Value)
                    {
                        gevondenGebruiker.Woonplaats = (string)dataReader["WOONPLAATS"];
                    }
                    if (dataReader["VOORKEURSTAAL"] != DBNull.Value)
                    {
                        gevondenGebruiker.Voorkeurstaal = (string)dataReader["VOORKEURSTAAL"];
                    }
                    if (dataReader["GESLACHT"] != DBNull.Value)
                    {
                        gevondenGebruiker.Geslacht = (string)dataReader["GESLACHT"];
                    }
                    if (dataReader["GEBOORTEDATUM"] != DBNull.Value)
                    {
                        gevondenGebruiker.Geboortedatum = (DateTime)dataReader["GEBOORTEDATUM"];
                    }
                    if (dataReader["PROFIELFOTO"] != DBNull.Value)
                    {
                        gevondenGebruiker.Profielfoto = (string)dataReader["PROFIELFOTO"];
                    }
                    if (dataReader["VERZAMELINGSTOEGANGKELIJKHEID"] != DBNull.Value)
                    {
                        gevondenGebruiker.Verzamelingstoegankelijkheid = (string)dataReader["VERZAMELINGSTOEGANGKELIJKHEID"];
                    }
                    gevondenGebruiker.Nieuwsbrief = boolNieuwsbrief;
                }
            }

            connection.Close();
            dataReader.Close();

            return gevondenGebruiker;
        }
        public List<Verzamelobject> GetUserCollection(Gebruiker user)
        {
            List<Verzamelobject> objects = new List<Verzamelobject>();
            connection.Open();
            //werkt niet, waarschijnlijk door tabelnaam 'OBJECT'. Query werkt wel in Oracle SQL Developer
            OracleCommand command = new OracleCommand("SELECT * FROM OBJECT WHERE OBJECTID IN (SELECT OBJECTID FROM OBJECTPERGEBRUIKER WHERE GEBRUIKERID = :userID)", connection);
            OracleParameter parUserID = new OracleParameter("userID", user.GebruikerID);
            command.Parameters.Add(parUserID);

            OracleDataReader reader;
            try
            {
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Verzamelobject newObject = new Verzamelobject();
                    newObject.ObjectID = (int)reader["OBJECTID"];
                    newObject.CategorieID = (int)reader["CATEGORIEID"];
                    newObject.Omschrijving = (string)reader["OMSCHRIJVING"];
                    if (reader["LAND"] != DBNull.Value)
                    {
                        newObject.Land = (string)reader["LAND"];
                    }
                    else
                    {
                        newObject.Land = null;
                    }

                    newObject.DatumToegevoegd = (DateTime)reader["DATUMTOEGEVOEGD"];
                    newObject.LaatsteWijziging = (DateTime)reader["DATUMLAATSTEWIJZIGING"];
                    if (reader["IDENTIFICATIECODE"] != DBNull.Value)
                    {
                        newObject.Identificatiecode = (string)reader["IDENTIFICATIECODE"];
                    }
                    else
                    {
                        newObject.Identificatiecode = null;
                    }

                    if (reader["JAARTAL"] != DBNull.Value)
                    {
                        newObject.Jaartal = (string)reader["JAARTAL"];
                    }
                    else
                    {
                        newObject.Jaartal = null;
                    }
                    objects.Add(newObject);
                }
                connection.Close();
                reader.Close();
                return objects;
            }
            catch (OracleException ex)
            {
                Console.WriteLine("Record is not inserted into the database table.");
                Console.WriteLine("Exception Message: " + ex.Message);
                Console.WriteLine("Exception Source: " + ex.Source);
                return null;
            }
        }
        private void SetUCState()
        {
            bool loggedIn = false;

            if(Session["loggedIn"] != null)
            {
                loggedIn = (bool)Session["loggedIn"];
            }

            if (!loggedIn)
            {
                loggeddInUser = null;
                lblLoggedIn.Visible = false;
                linMijnProfiel.Visible = false;

                lblGebruikersnaam.Visible = true;
                lblWachtwoord.Visible = true;
                txtGebruikersnaam.Visible = true;
                txtWachtwoord.Visible = true;
                linRegistreer.Visible = true;

                ButtonLogin.Text = "Login";
            }
            else
            {
                lblLoggedIn.Text = "Welkom, " + loggeddInUser.Naam;
                lblLoggedIn.Visible = true;
                linMijnProfiel.Visible = true;

                lblGebruikersnaam.Visible = false;
                lblWachtwoord.Visible = false;
                txtGebruikersnaam.Visible = false;
                txtWachtwoord.Visible = false;
                linRegistreer.Visible = false;

                ButtonLogin.Text = "Log uit";
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (HttpContext.Current.Request.Url.AbsolutePath == "/Register.aspx")
            {
                this.Visible = false;
            }

            if (!IsPostBack && HttpContext.Current.Request.Url.AbsolutePath == "/Home.aspx" && Session["loggedInUser"] == null)
            {
                Session["loggedIn"] = false;
            }
            else
            {
                loggeddInUser = (Gebruiker)Session["loggedInUser"];
            }

            SetUCState();
        }
 public bool VoegGebruikerToe(Gebruiker nieuweGebruiker)
 {
     return false;
 }