- Domain Driven Design implementation
- Implementing Domain Model in E.F Core
- Repository Pattern
- Unit of Work Pattern
- N-Layer Pattern
- Entity & ValueObjects
- Rich Model - NO Anemic
- Domain Events
- Implementing Value Objects in E.F Core as OwnEntities
- Middleware - Generic Handler Error
- Basic API - Response with Envelope (wrapper)
- Notification Pattern to validation in domain model - Result
- Guard to validation in domain model
- Extension of Dependency Injection Engine with SCRUTOR - Registering dependencies scanning assemblies
Country Entity
- Fixes entities - the system only has 5 countries: Argentina | New Zealand | Germany | Chile | Spain
- Every country can register a max of 2 teams.
- As an API consumer, I want to retrieve a country list
Team Entity
- As an API consumer, I want to retrieve a team list
- As a user, I want to create a team - I must to specify: Team Name & CountryId
- As a user, I want to join new player in a team - I must to specify: TeamId & PlayerId
- A team can have a max of 5 players
- A team can play a max of 2 matches per day
- A team can play a max of 2 matches per period (MM-YYYY)
Player Entity
- As an API consumer, I want to retrieve a player list
- As a user, I want to create a player - I must to specify: FirstName | LastName | BirthDate | Email | Phone | TeamId
- The player's email must be UNIQUE en the aplication.
- The player must be 16 years old or upper
Match Entity
- As an API consumer, I want to retrieve a match list
- As an API consumer, I want to retrieve a match by Id
- As a User, I want to create a new match - I must to specify: TeamAId | TeamBId | Match Date
- As a User, I want to delete a match by Id
- As a User, I want to re-schedule the match date - Update Match Date
- As a User, I want to set the end result of the match adding: Winning Team & BestPlayer