partial
class"As a Web Application Developer Padawan (WADP™), I want to build an example application that uses a lot of data and showcases the use of an existing large database, so I can practice my LINQ and MVC moves."
Begin this homework by downloading and extracting the AdventureWorks 2014 example database from CodePlex. It's moved. The database you want to use is the OLTP version from here. (They moved sample databases from "CodePlex" to GitHub.) Use the full database backup zip file version.
For a full description of the AdventureWorks "company" and database, see here.
As a potential customer who is visiting the website I would like to be able to browse to find products to buy. I already know what category of product I want, I just want to pick an item in that category.
A user should easily be able to find products in the store/catalog and view details of that product. The user does not want to search by keyword. They want to browse by product category. Products can be organized by top level category (Production.ProductCategory
) and then by a sub-category (Production.ProductSubcategory
). Don't show results until the user has selected both category and sub-category. Then allow them to see a short listing of products (or a paged version), from which they can select or click on one to bring up a full product description, maybe with a review. Kudos to anyone who can display the product photo.
For an example, go to nearly any large web store, say REI. Click on Snow (the top level category), then click on Downhill Skiing (a subcategory). You see a number of products. Click on Arc'teryx Sabre Jacket - Men's to see a full description, yikes :-( $625!) They have at least 2 levels of sub-categories where we have only 1, but you get the idea. (You can see the subcategories in the breadcrumbs.)
Your stakeholders have not given a preference as to what this should look like or how you do this, so it's your choice. Do you use hyperlinks? Drop down (select) lists? What info do you show the user? Well, certainly don't show them primary key or foreign key values, or internal things like FinishedGoodsFlag. Should you show discontinued items? Probably not. It's up to you. Also, try to make it look decent please; the default auto-generated CRUD look won't cut it!
Let's see if we can insert to the database. This user story describes what is needed.
As a customer who has purchased a product I would like to be able to write and submit a review of a particular product so others can read about my experience with the it.
For ease of implementation, assume the user knows the Production.Product.ProductID
. Allow them to enter their name, email address, rating and a possibly lengthy comment/review. When they correctly submit the information, insert it into the database and thank the user for their review (using POST/Redirect/GET).
You can integrate this feature with the browse functionality or not; it's up to you. If you integrate it then the user won't have to know the product ID as you'll already have it.