Project 1 Requirements - 042020-dotnet-uta/curriculumCode GitHub Wiki
Project 1: store web application
April 20, 2020 - Arlington .NET / Mark Moore
- place orders to store locations for customers
- add a new customer
- search customers by name
- display details of an order
- display all order history of a store location
- display all order history of a customer
- client-side validation
- server-side validation
- exception handling
- CSRF prevention
- persistent data (no prices, customers, order history, etc. hardcoded in C#)
- logging
- (optional: order history can be sorted by earliest, latest, cheapest, most expensive)
- (optional: get a suggested order for a customer based on his order history)
- (optional: display some statistics based on order history)
- (optional: asynchronous network & file I/O)
- (optional: deserialize data from disk)
- (optional: serialize data to disk)
- use EF Core (either database-first approach or code-first approach)
- use an SQL DB in third normal form (3NF)
- don't use public fields
- define and use at least one interface
- (optional: User publicly available Azure website)
- (optional: Deploy to publicly available Azure App Service website)
core / domain / business logic
- class library
- contains all business logic
- contains domain classes (customer, order, store, product, etc.)
- documentation with XML comments on all public types and members (optional: and )
- has first name, last name, etc.
- (optional: has a default store location to order from)
- has a store location
- has a customer
- has an order time (when the order was placed)
- can contain multiple kinds of product in the same order
- rejects orders with unreasonably high product quantities
- (optional: some additional business rules, like special deals)
- has an inventory
- inventory decreases when orders are accepted
- rejects orders that cannot be fulfilled with remaining inventory
- (optional: for at least one product, more than one inventory item decrements when ordering that product)
product (Same expectation as above.)
- ASP.NET Core MVC web application
- separate request processing and presentation concerns with MVC pattern
- Strongly-Typed Views
- minimize logic in Views
- use Dependency Injection
- customize the default styling
- keep CodeNamesLikeThis out of the visible UI
- class library
- contains EF Core DbContext and entity classes
- contains data access logic but no business logic
- use Repository Pattern for Separation of Concerns
- at least 20 test methods
- focus on unit testing business logic
- data access tests (if present) should not impact the app's actual database
⚠️ **GitHub.com Fallback** ⚠️