---
# System prepended metadata

title: Project 2 checklist

---

# 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
    
    
    
