public void RegisterTestWithValidMember()
        {
            var customer = new RegisteringMember
            {
                First           = "First",
                Last            = "Last",
                Email           = "Test",
                ConfirmEmail    = "Test",
                Password        = "******",
                ConfirmPassword = "******",
                Address         = new Address
                {
                    StreetAddress = "Address",
                    State         = "GA",
                    Zip           = "31035"
                }
            };
            var mockCustomerDal = new MockMemberDal
            {
                ThrowError = false
            };
            var controller = new AccountsController(mockCustomerDal, new MockRentalDal());
            var result     = (ViewResult)controller.Register(customer);

            Assert.IsInstanceOfType(result, typeof(ViewResult));
            Assert.AreEqual("Register", result.ViewName);
            Assert.AreEqual("You're Registered!", result.ViewData["SuccessMessage"]);
        }
示例#2
0
 public void RegisterMember(RegisteringMember member)
 {
     if (this.ThrowError)
     {
         throw new Exception();
     }
 }
        public void RegisterCustomerValidTest()
        {
            var customerDal = new MemberDal();
            var customer    = new RegisteringMember
            {
                ConfirmEmail    = "confirmEmail",
                ConfirmPassword = "******",
                Email           = "confirmEmail",
                First           = "TestCustomerForTesting",
                Last            = "TestCustomer",
                Password        = "******",
                Address         = new Address
                {
                    StreetAddress = "Address",
                    State         = "GA",
                    Zip           = "30135"
                }
            };

            customerDal.RegisterMember(customer);

            var result = customerDal.Authenticate("confirmEmail", "confirmPassword");

            this.cleanDataBase(customer);
            Assert.AreEqual(1, result);
        }
        public IActionResult Login(Member user)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (this.memberDal.Authenticate(user.Email, user.Password) == 1)
                    {
                        CurrentUser = new Member {
                            Email = user.Email, Password = user.Password
                        };

                        var members = this.memberDal.GetAllMembers();
                        var member  = new RegisteringMember();
                        try
                        {
                            member = members.First(curr => curr.Email == user.Email);
                        }
                        catch (Exception e)
                        {
                            ViewBag.Error = "Invalid login";
                            return(View("Index"));
                        }


                        if (member.IsBlacklisted == 0)
                        {
                            return(RedirectToAction("LibrariansChoice", "Borrow"));
                        }
                        else
                        {
                            ViewBag.ErrorMessage = "Blacklisted";
                            ViewBag.Error        = "Sorry, you have been blacklisted.";
                            CurrentUser          = null;
                            return(View("Index"));
                        }
                    }
                    if (this.librarianDal.Authenticate(user.Email, user.Password) == 1)
                    {
                        CurrentLibrarian = new Librarian {
                            Email = user.Email, Password = user.Password
                        };
                        return(RedirectToAction("LibrariansChoice", "Borrow"));
                    }
                }
            }
            catch (Exception ex)
            {
                ViewBag.ErrorMessage = ex.Message;
                ViewBag.Error        = "Whoops, try again. Something went wrong.";
                return(View("Index"));
            }

            ViewBag.Error = "Invalid login";
            return(View("Index"));
        }
        private void cleanDataBase(RegisteringMember customer)
        {
            try
            {
                var conn = DbConnection.GetConnection();
                using (conn)
                {
                    conn.Open();
                    using var transaction = conn.BeginTransaction();
                    var query = "delete from address where memberID = (select memberID from member where email = @email);";

                    using (var cmd = new MySqlCommand(query, conn))
                    {
                        cmd.Transaction = transaction;

                        cmd.Parameters.Add("@email", MySqlDbType.VarChar);
                        cmd.Parameters["@email"].Value = customer.Email;

                        if (cmd.ExecuteNonQuery() != 1)
                        {
                            transaction.Rollback();
                        }
                        cmd.Parameters.Clear();

                        cmd.CommandText = "delete from member where email = @email;";
                        cmd.Parameters.Add("@email", MySqlDbType.VarChar);
                        cmd.Parameters["@email"].Value = customer.Email;

                        if (cmd.ExecuteNonQuery() != 1)
                        {
                            transaction.Rollback();
                        }
                        cmd.Parameters.Clear();

                        cmd.CommandText =
                            "delete from user where fname = @fname";
                        cmd.Parameters.Add("@fname", MySqlDbType.VarChar);
                        cmd.Parameters["@fname"].Value = customer.First;

                        if (cmd.ExecuteNonQuery() != 1)
                        {
                            transaction.Rollback();
                        }

                        transaction.Commit();
                    }
                }
                conn.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#6
0
        /// <summary>
        /// Gets all members that have overdue rentals
        /// </summary>
        /// <returns> all members that have overdue rentals or an error if something went wrong with thd DB</returns>
        public List <RegisteringMember> GetOverdueMembers()
        {
            var members = new List <RegisteringMember>();

            try
            {
                var conn = DbConnection.GetConnection();
                using (conn)
                {
                    conn.Open();
                    var query = "select DISTINCT(email), member.memberID, fname, lname from member, user, rental_transaction, status_history, `status` " +
                                "where member.memberID = userID and member.memberID = rental_transaction.memberID " +
                                "and rentalTransactionID = rentalID and status_history.statusID = `status`.statusID and returnDateTime < CURDATE() and `status`.`status` != 'Returned' and status_history.statusID = (select max(s1.statusID) from status_history s1 where " +
                                "s1.rentalTransactionID = rental_transaction.rentalID);";
                    using (var cmd = new MySqlCommand(query, conn))
                    {
                        using (var reader = cmd.ExecuteReader())
                        {
                            var emailOrdinal = reader.GetOrdinal("email");
                            var idOrdinal    = reader.GetOrdinal("memberID");
                            var fNameOrdinal = reader.GetOrdinal("fname");
                            var lNameOrdinal = reader.GetOrdinal("lname");

                            while (reader.Read())
                            {
                                var email    = reader[emailOrdinal] == DBNull.Value ? "null" : reader.GetString(emailOrdinal);
                                var fName    = reader[fNameOrdinal] == DBNull.Value ? "null" : reader.GetString(fNameOrdinal);
                                var lName    = reader[lNameOrdinal] == DBNull.Value ? "null" : reader.GetString(lNameOrdinal);
                                var memberId = reader.GetInt32(idOrdinal);



                                var member = new RegisteringMember
                                {
                                    Email = email, First = fName, Last = lName, MemberId = memberId
                                };
                                members.Add(member);
                            }
                        }
                    }
                    conn.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(members);
        }
示例#7
0
        /// <summary>
        /// Gets all the members from the db
        /// </summary>
        /// <returns>all the members from the db or an error if something went wrong</returns>
        public List <RegisteringMember> GetAllMembers()
        {
            var members = new List <RegisteringMember>();

            try
            {
                var conn = DbConnection.GetConnection();
                using (conn)
                {
                    conn.Open();
                    var query = "select * from member, user where memberID = userID";
                    using (var cmd = new MySqlCommand(query, conn))
                    {
                        using (var reader = cmd.ExecuteReader())
                        {
                            var emailOrdinal       = reader.GetOrdinal("email");
                            var idOrdinal          = reader.GetOrdinal("memberID");
                            var fNameOrdinal       = reader.GetOrdinal("fname");
                            var lNameOrdinal       = reader.GetOrdinal("lname");
                            var blacklistedOrdinal = reader.GetOrdinal("blacklisted");

                            while (reader.Read())
                            {
                                var email       = reader[emailOrdinal] == DBNull.Value ? "null" : reader.GetString(emailOrdinal);
                                var fName       = reader[fNameOrdinal] == DBNull.Value ? "null" : reader.GetString(fNameOrdinal);
                                var lName       = reader[lNameOrdinal] == DBNull.Value ? "null" : reader.GetString(lNameOrdinal);
                                var memberId    = reader.GetInt32(idOrdinal);
                                var blacklisted = reader.GetInt32(blacklistedOrdinal);



                                var member = new RegisteringMember
                                {
                                    Email = email, First = fName, Last = lName, MemberId = memberId, IsBlacklisted = blacklisted
                                };
                                members.Add(member);
                            }
                        }
                    }
                    conn.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(members);
        }
        public void RegisterTestWithExceptionThrownFromDb()
        {
            var customer        = new RegisteringMember();
            var mockCustomerDal = new MockMemberDal
            {
                ThrowError = true
            };
            var controller = new AccountsController(mockCustomerDal, new MockRentalDal());

            var result = (ViewResult)controller.Register(customer);

            Assert.IsInstanceOfType(result, typeof(ViewResult));
            Assert.AreEqual(null, result.ViewName);
            Assert.AreEqual(customer, result.Model);
            Assert.AreEqual("Exception of type 'System.Exception' was thrown.", result.ViewData["ErrorMessage"]);
        }
        public void RegisterTestWithInValidCustomer()
        {
            var customer        = new RegisteringMember();
            var mockCustomerDal = new MockMemberDal
            {
                ThrowError = false
            };
            var controller = new AccountsController(mockCustomerDal, new MockRentalDal());

            controller.ModelState.AddModelError("test", "test");
            var result = (ViewResult)controller.Register(customer);

            Assert.IsInstanceOfType(result, typeof(ViewResult));
            Assert.AreEqual(null, result.ViewName);
            Assert.AreEqual(customer, result.Model);
        }
        public IActionResult Register(RegisteringMember member)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    this.memberDal.RegisterMember(member);
                }
                catch (Exception ex)
                {
                    ViewBag.ErrorMessage = ex.Message;
                    return(View(member));
                }

                ModelState.Clear();
                ViewBag.SuccessMessage = "You're Registered!";

                return(View("Register", new RegisteringMember()));
            }
            else
            {
                return(View(member));
            }
        }
示例#11
0
        /// <summary>
        /// Registers the member on the database
        /// </summary>
        /// <param name="member">The member being registered </param>
        /// @precondition none
        /// @postcondition the member is registered or an error is thrown if something goes wrong on the database
        public void RegisterMember(RegisteringMember member)
        {
            try
            {
                var conn = DbConnection.GetConnection();
                using (conn)
                {
                    conn.Open();

                    using var transaction = conn.BeginTransaction();
                    var query = "insert into user(fname, lname, password) values (@fname, @lname, @password)";

                    using (var cmd = new MySqlCommand(query, conn))
                    {
                        cmd.Transaction = transaction;

                        cmd.Parameters.Add("@fname", MySqlDbType.VarChar);
                        cmd.Parameters["@fname"].Value = member.First;

                        cmd.Parameters.Add("@lname", MySqlDbType.VarChar);
                        cmd.Parameters["@lname"].Value = member.Last;

                        cmd.Parameters.Add("@password", MySqlDbType.VarChar);
                        cmd.Parameters["@password"].Value = member.Password;

                        if (cmd.ExecuteNonQuery() != 1)
                        {
                            transaction.Rollback();
                        }

                        cmd.Parameters.Clear();
                        cmd.CommandText =
                            "insert into member(memberID, email) values (last_insert_id(), @email)";

                        cmd.Parameters.Add("@email", MySqlDbType.VarChar);
                        cmd.Parameters["@email"].Value = member.Email;


                        if (cmd.ExecuteNonQuery() != 1)
                        {
                            transaction.Rollback();
                        }

                        cmd.Parameters.Clear();
                        cmd.CommandText = "insert into address(memberID, address, state, zip) values " +
                                          "((select memberID from member where email = @memberEmail), @address, @state, @zip)";

                        cmd.Parameters.AddWithValue("@memberEmail", member.Email);
                        cmd.Parameters.AddWithValue("@address", member.Address.StreetAddress);
                        cmd.Parameters.AddWithValue("@state", member.Address.State);
                        cmd.Parameters.AddWithValue("@zip", member.Address.Zip);

                        if (cmd.ExecuteNonQuery() != 1)
                        {
                            transaction.Rollback();
                        }
                        transaction.Commit();
                    }
                    conn.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }