This is a team project based on the eRace database.
Team Project Size: 4 members. The team project consists of a set of baseline requirements and four core scenarios (subsystems). Each team member is responsible to complete one subsystem on their own; the baseline requirements are to be shared equitably by all members of the team. The core scenarios are:
This is a Team project. You are only allowed to discuss your project solution with members of your own team. Discussion of the project details with other teams is prohibited. Collaboration with members from other teams will be considered a breach of academic integrity and will be treated as such!
You will need to work as a team to coordinate your efforts. It is your responsibliity to ensure all commits are made to your repository and that you correctly and promptly resolve any merge conflicts.
If you have questions about this lab, please raise them with your instructor. Your instructor will be reviewing the lab requirements in-class; you are expected to be present and ready to ask your questions at that time.
You are expected to make regular and frequent commits while working on this project. Begin early to ensure that you have enough time to complete this group project!
This lab is broken up into the following deliverables. Your instructor will inform you of the due-dates for these deliverables. You should take note of the Marking Guide.
Due dates for each deliverable are subject to change. Check with your instructor for the latest information.
NOTE: This lab offering may include sequence diagrams and class diagrams for the use cases involving transactional processing. When provided, you must follow the guidance of those diagrams. Details can be found in the individual scenario specifications.
Your development plan documentation must be written using the guidelines and examples demonstrated by your instructor. Your documentation must be placed in a subfolder with your name at the root of the repository. All the supporting files for your documentation (raw diagram files and images) must also be placed in this folder. For example, if your instructor requires a markdown document and your name is Stewart Dent, then your documentation file path would be /StewDent/ReadMe.md
. Also include each team member’s name and their subsystem in the ReadMe.md
at the root of your repository.
The content and structure of your documentation will be directed by your instructor. Be aware that each instructor may choose various components in your documentation which may include (but not be limited to) some or all of the following components.
Diagrams should be stored in your repository as both the raw format (.bmpr
for a Balsamiq diagram, .xml
for a Draw.io diagram, or .vdx
for a Visio download of a LucidChart diagram) and as individually exported images.
When developing your planned implementation for your scenario, you must take into consideration the practices and patterns demonstrated in this course.
There are three stages to accomplishing the baseline requirements.
The first two stages are to be completed by different team members. For the third stage, each team member must set up the subsystem for their selected scenario. Use GitHub issues to delegate different tasks to each team member; some will complete the Project Setup while the one will complete the Security Setup. Divide up the tasks a equitably as possible. When performing commits of your code, be sure to reference the issue number in your commit so that your work can be easily distinguished by your instructor.
Using the techniques and practices demonstrated in class, set up the repository by generating the following items.
ReadMe.md
file at the root of your repository has the following:
Default.aspx
page in each subsystem folder with an <h1>
stating the subsystem nameDefault.aspx
of your website (the Home page) must include the following
About.aspx
must include the following
Site.master
must include the following
internal
vs public
)The ReadMe must include information about your designated team number/letter, your chosen team name, and the names of your team members. Clearly indicate which team members are handling which portions of the lab requirements (subsystem and project/security setup).
Using the techniques discussed in class, set up the security system for the application by complementing the ASP.Net Identity classes that form the supplied security framework when the project was first set up.
Positions
table of the databaseEach team member must create a subfolder under their class library’s BLL folder. In there, you are to create a controller class for your subsystem. entities In addition, you are to make the following modifications to the entities in your subsystem.
In the DAL’s OnModelCreating()
method, make the following modifications to navigational properties on the entities. (Use Visual Studio’s renaming capability to ensure the properties are correctly changed in all code locations.)
// Each Invoice must be comprised of one or more InvoiceDetails
modelBuilder.Entity<Invoice>()
.HasMany(e => e.InvoiceDetails)
// Each InvoiceDetail must be a part of one and only one Invoice
.WithRequired(e => e.Invoice)
.WillCascadeOnDelete(false);
// Each Invoice may be issued as a refund for one or more StoreRefunds
modelBuilder.Entity<Invoice>()
.HasMany(e => e.StoreRefunds)
// Each StoreRefund must be repaid through one and only one Invoice
.WithRequired(e => e.RefundInvoice)
.HasForeignKey(e => e.InvoiceID)
.WillCascadeOnDelete(false);
// Each Invoice may be eligible to include one or more StoreRefunds
modelBuilder.Entity<Invoice>()
.HasMany(e => e.ReturnedItems)
// Each StoreRefund must be for something that was purchased on one and only one (original) Invoice
.WithRequired(e => e.OriginalInvoice)
.HasForeignKey(e => e.OriginalInvoiceID)
.WillCascadeOnDelete(false);