The term project is to add enhancements to your music store. This is your
opportunity to be creative!
Instructions for turning in project
1. Enhancement Ideas
Make sure that you have the basic music store working properly before you start
on enhancements. Enhancements are of little value if they are added to non-functional
Tip: Before starting to work on enhancements that could cause existing code to malfunction,
I suggest that you make a backup copy of your project in a separate folder.
Some ideas for enhancements are listed below. You are also encouraged to be creative
and come up with other ideas.
Encrypt CustID to prevent impersonation.
- Add the encryption class to your project by creating a
folder named "helpers" and add encryptString.cs.
This class provides two static
methods, Encrypt and Decrypt.
- A new property is needed in CustomerModel for passing the encrypted custID. Add a new property to CustomerModel named CustIDe of type string.
- Anywhere CustID is sent to the client replace the hidden form field CustID with CustIDe. Encrypt CustID in the controller using the syntax:
customerModel.CustIde = EncryptString.Encrypt(customerModel.CustId.ToString());
- Decrypt CustIDe in the controller using the syntax:
customerModel.CustId = Convert.ToInt32(EncryptString.Decrypt(customerModel.CustIde));
- Test encryption with both new and returning customers.
- Upgrade the graphical appearance of your music store.
- Truncate product descriptions on spaces. Hint: use LastIndexMethod of string class.
- Add a shopping cart status box (see header in MVC Music).
- Add caching to the category menu, search, browse and/or detail views. This is quite easy: MVC OutputCaching. Include a cache time in the view to confirm that it is working.
(see MVC Music/index).
- Add a listing of viewed items so the user can easily get back to previously
viewed items (see MVC
- List best sellers based upon data in tblOrderItems (see MVC Music right column).
- Add track listings to detail page. Most items have track data in tblTracks. (see MVC Music).
- Add customers who bought this item also bought to detail page (based upon SQL query). (see MVC Music).
- Add Amazon similar items on details page. This data is located in tblSimilarProducts. (see MVC Music).
- Add a list of music styles to which a product is assigned to the details page. Each item is assigned to one or more styles in tblStyleAsin. Some styles have parent styles, which themselves may have parent styles. ParentStyleIDs are located in tblStyles. ParentStyleID = 0 means that it is a root style without a parent style.
(see MVC Music).
- Add order grouping to the order history page. (see MVC Music/index).
- Custom validation used to prevent duplicate email address in database. (See MVC Music) checkout.
- Validate city-state-zip code combinations by looking them up in a zip code database.
A zipcode database containing over 42,000 city, state, zip codes is available for
your use on Yorktown (see checkout in MVC
The connection string in the web.config file has the syntax:
name="ZipCodes"connectionString="Data Source=yorktown.cbe.wwu.edu\dsciweb;Initial Catalog=Zipcodes;Persist
Security Info=True;User ID=ZipcodeReader;Password=zipGuest" providerName="System.Data.SqlClient" />
NOTE: This database is behind WWU's firewall. To access it from off campus you will
need to have a VPN established on your computer.
- Add a professional web design theme to your site (Smashing Magazine recommendations).
- Add Google Place Autocomplete Address Form to checkout (note: this is more difficult than you might think) (see MVC
- Add lazy loading to the order history page. photo gallery utilizes
- Add customer reviews to the details page. This requires a new model, database table, partial view for displaying the
reviews, form for writing reviews, three
action methods in the controller, and two new methods in musicRepository (one for adding reviews and one for reading them). See MVC Music.
- Add Recaptcha to the product review form to prevent bots from
To use the sample code you will need to download the recaptcha.dll from Google
and put it into your bin folder.
See MVC Music
- Create a customer wish list. The wish list should persist between sessions
and be sharable with an email address, requiring that the wish list items would need
to be written to a database (similar to the shopping cart). See Amazon.com as an
example of a wish list.
- Validate that customer email addresses are unique before writing them to the database.
The sample site uses a custom validator. The validator's handler calls a method
of the checkout class named "EmailIsUnique." This method executes a sql
query that counts the number of instances for the email address, excluding the current
CustID. If the count is > zero the validator reject the email address. he email address.
- Create administrative pages for managing customer and order information. This could
include the ability to edit customer information, an interface for managing order
status (shipped, partially shipped, returned, etc.) and adding new products to the
database. (Note: In MIS 424 this is done using Microsoft's Entity Framework which is very convenient for this task).
- For other ideas look at Amazon, REI, and other sophisticated shopping
Include a list of your enhancements in your "About this store" section
so that I don't miss any when grading your assignment.
2. Instructions for turning in Project
The project is due at the date and time shown on the course schedule. Late
projects will be subject to a penalty of 15 points per 24 hours (so don't
Source code: I need to see your project source code to grade the final project. Create a folder named "myFiles" in your root folder on Yorktown and copy in your entire VS project. A course grade will not be submitted until this is completed. Once course grades are submitted I will delete these files from the server.
Submit the URL to your music store's home page (default.aspx) via the
course management system.
3. Project Grading
The project will be graded based on the basic store created in assignments 7, 8
and 9, plus any enhancements that you have added. The basic store that you have
completed by the end of assignment 9 will earn a grade of approximately a B-. Enhancements
are a way for your to further improve your grade.
The grading of the final project is very detailed and includes looking at your source
code to make sure that you have coded efficiently and neatly. Specifically I will
be checking to make sure that you have used user controls for all code that is reused,
that your browse menu is dynamically generated and that you code is original (your
Project grades will be posted on Canvas.