# Project 2 checklist
- [ ] Log in
- [x] Task 2
- [x] Searching (title, year, star, director)
- [x] Single and multiple conditions
- [x] Fast and efficient
- [x] Describe using LIKE and ILIKE in README
- [x] Browsing
- [x] Genres
- [x] Sorted list of hyperlinked genres
- [x] Each link takes a genres.html page
- [x] Movie Titles
- [x] Sorted 0 - 9, A – Z, char "*" should show all titles with non-alphanumeric characters
- [x] Same as genres (hyperlinked, each link to a new html page)
- [ ] Task3:
- [x] Movie List Page
- [x] Pagination
- [x] Implemented Pagination. Frontend cache and backend cache both can not exceed 100 records
- [x] Use "Prev/Next" buttons.
- [x] Change the number of listings "N" per page
- [x] Sorting
- [x] Sort by "title" then "rating", or first "rating" then "title", or both in either ascending or descending order.
- [ ] Search or browse results will be on this page
- [x] title (hyperlinked to Single Movie Page)
- [x] year
- [x] director
- [ ] first three genres
- [ ] sorted by alphabetical order
- [x] hyperlinked equivalent to Browsing
- [ ] first three stars
- [ ] Sorted by number of movies played in (Decreasing Order), Then Alphabetical Order
- [x] Hyperlinked to the single star page
- [x] rating
- [x] Sorting: Customers can sort the list by either
- [x] Title then Rating
- [x] Rating then Title
- [x] Supports ascending and descending order
- [x] Previous/Next:
- [ ] Each page should only display a certain N number of movies
- [x] Have "Prev"/"Next" button
- [ ] Allow users to change the number of N movies shown per page
- [ ] Drop-down menu to choose N from a list of predifined values: 10,25,50,100
- [x] Single Movie Page
- [x] All genres
- [x] sorted by alphabetical order
- [x] each hyperlinked, same as browsing by genre
- [x] All stars
- [x] sorted by numbers of movies played in, descreasing order. Then Alphabetical order
- [x] Eached hyperlinked to the stingle star page
- [x] rating
- [x] Single Star Page
- [x] All movies
- [x] Sorted by year, decreasing order. Use alphabetical order to break ties
- [x] Each hyperlinked to the corresponding Single Movie Page
- [ ] Jump Functionality
- [x] Can jump among Movie List Page, Single Movie Page, and Single Star Page using buttons or links instead of browser history
- [x] Can jump between Single Movie Page and Single Star Page following hyperlinks
- [x] Can jump back to Movie List Page from any of the single pages
- [ ] The satus of Movie List Page should be maintained, if return from single pages.
- [ ] Search "Jacky Chan", goes to third page of the search result, click a movie to jump to a Single Movie Page, click a star to jump to a Single Star Page. Click back button to go back and verify we are at the same spot as before
- [ ] Use session to solve this instead of browser history
- [ ] Task 4: Can purchase (multiple copies) of movies. Generate random price. To-be-purchased movies will be stored here
- [x] Shopping Cart Page "Working on this section"
- [x] Display movie title
- [x] Display quantity of each movie
- [x] Display price of each movie (randomized price)
- [x] Allow customers to increase quantity
- [x] Allow customers to decrease quantity
- [x] Allow customers to delete movie
- [ ] Payment Page "Working on this sectio"
- [x] Should display total price of the shopping cart
- [x] Ask for first name of credit card holder
- [x] Ask for last name of credit card holder
- [x] Ask for credit card number
- [x] Ask for expiration date
- [x] Credit card holder doesn't need to match customer name
- [x] "Place Order" button which proceeds to Place Order action
- [ ] Place Order action
- [x] HTTP POST
- [ ] Transaction succeed if customers can provide correct payment information which mathces a record in the credit card table
- [ ] If success, it should be recorded in the system ("sales" table) and a confirmation page should be displayed. You might need to alter the "sales" table in order to support multiple copies of the movie
- [ ] If failed, it should return back to Payment Page with an error message for customers to re-enter payment information
- [x] Add to Shopping Cart Button: "Working on this section"
- [x] All pages that display movie information in the system (Movie List Page and Single Movie Page),
- [x] Each movie should have an "Add to Shopping Cart" button.
- [x] Can click the button to increase the quantity of this movie in the shopping cart.
- [x] A message should display to indicate success/failure
- [x] Checkout Button
- [x] All pages exept the Login Page should have a "Checkout" Button.
- [x] Customers should be directed to the Shopping Cart Page when clicking "Checkout" button
For points
- [x] Login Page
- [x] Redirect any other pages to the Login Page if the user is not logged in 3
- [x] Show an error message for an incorrect user name or password 2
- [x] Use HTTP POST 2
- [x] Login with a correct user name and password 4
- [x] Main Page
- [x] Access to searching and browsing pages/functionalities 2
- [x] Searching
- [x] Search by title 4
- [x] Search by year 3
- [x] Search by director 4
- [x] Search by star's name 4
- [x] Substring Matching is implemented correctly for searching title/director/star. 3
- [ ] Movie List Page (Extended from P1)
- [ ] Display all required information; the first three genres are sorted correctly and hyperlinked; the first three stars are sorted correctly and hyperlinked. 6
- [ ] Implemented Pagination. Frontend cache and backend cache both can not exceed 100 records 2
- [x] Use "Prev/Next" buttons. 4
- [x] Change the number of listings "N" per page 2
- [ ] Can sort the results on either first "title" then "rating", or first "rating" then "title", both in either ascending or descending order. 6
- [x] Single Pages (Extended from P1)
- [x] A Single Movie Page has all genres, stars sorted correctly and hyperlinked. 2
- [x] A Single Star Page has all movies sorted correctly and hyperlinked. 2
- [ ] Jump Functionality
- [ ] Jump back to the Movie List Page from Single Pages without using the browser history (back button) or changing the url manually in browser address bar 2
- [ ] Search/browse, sorting, pagination conditions are maintained when the user jumps back to the Movie List Page 3
- [ ] Browsing
- [ ] Browse by movie title's first alphanumeric letter: click on each letter jumps to the movie list page that only consists ofmovies starting with this letter 4
- [ ] Browse by genre: click on each genre jumps to the Movie List Page that only consists of the movies of this genre 4
- [x] Shopping Cart Page
- [x] Display information about the current shopping cart (including movie title, price, quantity, and total price) 4
- [x] Modify the quantity of each item 4
- [x] Delete an item 3
- [x] Payment Page
- [x] Ask for basic customer transactional information 5
- [x] Show an error message for an incorrect input 3
- [x] Place Order Action
- [x] Insert a sale record into ''moviedb.sales" table 4
- [x] Show a confirmation page that contains order details including sale ID, movies purchased and the quantities, and total price 4
- [ ] Additional Performance Functionality
- [x] Have a Checkout button for every page after login; if the user clicks it, it will jump to the shopping cart page 2
- [ ] Have an "Add to Cart button" for each movie in the Movie List Page and each Single Movie Page; Indicate success/failure for a user click. 3
- [ ] Extra Credit
- [ ] Show efforts to beautify the page and table using CSS and JavaScript 5