CS637 Programming Assignment 1:  Pizza Shop, version 1

We will implement the Pizza Shop web app, following the structure of the provided ch05_guitar_shop project, i.e., using MVC principles and separate directories for various activities all at one directory level.

Added Note: you need to fix model/initial.php to avoid trying to use a third, non-existent column in menu_toppings: change

        $queries[] = "insert into menu_toppings values (1,'Pepperoni', 1);";
        $queries[] = "insert into menu_toppings values (2,'Onions', 0);";
        to
        $queries[] = "insert into menu_toppings values (1,'Pepperoni',);";
         $queries[] = "insert into menu_toppings values (2,'Onions');";

See PizzaProject for a description of the project, and the supplied pizza1_setup for a supplied starting-point project with all directories and most files started. You may keep the same main.css, or modify it, but don’t go crazy with changes.  

First do hw3, especially the pizza page flow and communications diagram problems, so you know what this app does, and the last two, which outline first steps in doing the project.

How to proceed?  Here are some ideas.

1.  (in hw3) Install and run the supplied pizza1_setup project and copy it to pizza1, for your first delivery. Set up Netbeans projects for both. Note the instructions in pizza1_setup/README.

2.  (in hw3) Use pizza1-setup’s database/dev_setup.sql and then database/createdb.sql to load you own mysql pizzadb and create a mysql user named pizza_user for the app.

3.  (in hw3) In pizza1, edit database.php and view/header.php to replace xxxx with your cs.umb.edu username.  Install pizza1 on your own Apache server at htdocs/cs637/username/pizza1 and browse to localhost/cs637/username/pizza1 to try it out. Here "username" should be replaced by your cs.umb.edu username. It should be able to list the toppings and allow navigation among the top pages, but not much else.

4.  (in hw3) Set up Netbeans projects for pizza1_setup and pizza1. Run the project from Netbeans: it should run the same as in step 3.

5. (described in hw3, problem 7, but separately graded as pa1a, project 1 first delivery) pizza1_setup has a partially-implemented toppings manager.  Implement add-topping for it. Follow the pattern of adding a product in ch05_guitar_shop: add a function add_topping to topping_db.php.  See product_db.php, listed on pg. 171. Then call add_topping from topping/index.php, just as add_product is called from product_manager/index.php, shown on pg. 173.

When you finish these 5 steps, put this version in your subdirectory of /var/www/html/cs637 on pe07.cs.umb.edu, i.e., /var/www/html/cs637/username, and try running it by browsing to http://pe07.cs.umb.edu/cs637/username/pizza1 (http://localhost:8000/cs637/username/pizza1 via tunnel), where username is your cs.umb.edu username. Load the pizza tables into your mysql database on pe07. Note that database.php needs your cs.umb.edu username coded in it to know what database to use on pe07.  This part is due Tuesday, Oct. 20 by midnight in your /var/www/html/cs637/username/pizza1 directory on pe07. Also see homework 3.

6.  Implement the student order form, so you have some orders to work with.

7   Implement the order manager, so you can get some pizzas baked

8.  Implement the student order status report and student acknowledge of received pizza(s).

9. Finish up: implement the user and day managers, anything else needed.

Implementation Notes.

Due Sunday, Nov. 1 by midnight, in /var/www/html/cs637/username/pizza1, full project, where username is your pe07 username. This directory is student-private. The delivered file model/database.php specifies your username and password for your mysql database on pe07, loaded for this project.

grading run (what I will do to test your project): Approximate list

Run your web app as you have deployed it, after checking that it is set up to run on your own database:

Add a topping
Add a user
Order a pizza
Make sure ordered pizza shows in student status report
Order a second pizza
Admin make one pizza baked
Make sure order status changes for student
Admin: get list of in-progress orders
Student acknowledges receipt of first pizza
Make sure order status changes for student
Admin: get list of in-progress orders
Admin: advance day
Admin: get list of in-progress orders (should be empty)
Admin: delete a topping. (optional action)

Late Days
Each student has 3 late days to apply to the two project deliveries (project 1 and project 2), to cover ordinary problems like business trips, other deadlines, etc. You can use them in any pattern, but not all 3 for one project--I will record the number of late days used on each project along with the score. To use late days, simply put a README in your project directory ( /var/www/html/cs637/username/pizza1) saying how many days you are using.