This repository is a .NET Core homework project for my university project, more specifically for the "Integrated Systems" subject.
General to-do items just to keep track of my work before implementing the full features.
- Create the required and complementary entities/data models
- Configure relationships
- Implement base repository interfaces
- Configure application context
- Implement a generic repository
- Implement DTOs for the services
- Install AutoMapper
- Implement & Configure AutoMapper
- Implement customized repositories
- Implement the base service functionality (excluding 3rd-party library implementation)
- Implement controllers
- Configure application
- Configure a database (MS SQL)
- Create migrations
- Test migrations
- Configure & Setup Base Identity Users
- Configure & Setup Auth Functionality with JWT
- Test existing Identity functionality
- Implement Swagger
- Configure Identity roles for each user type
- Auto-magically fetch user where needed using the token
- Start testing endpoints through Swagger
- Implement required 3rd-party functionality - In Progress
- Stripe payment - Implemented
- Excel import/export - Implemented
- Invoice PDF generation - https://ironpdf.com/tutorials/dotnet-core-pdf-generating/ - Implemented
- Sending an e-mail - https://mailtrap.io/blog/asp-net-core-send-email/ - Implemented
- Implement views - In Progress
- Test/Experiment with controllers and views to see how well it works - In Progress
- Add error checking and handling - set to done since we don't care about this
- For example trying to create an object when passing in a GUID, or updating one without a GUID
- No Movie Genre functionality
- Add "Include" extension to the base GetById and GetAll calls so we can fetch all needed relationships
- Decided to just implement custom methods in the custom repositories where needed with an include
- Add custom DTOs for create and update
- Change DTOs to receive only IDs of the relations
- Call SaveChanges after creations and updates
- Check Delete methods for SaveChanges calls
- Manually set relations through fetch (rather than through DTO mapping) so context can keep track
- Swap "OrderNumber" to an int instead of string
- Swap over from "auto-generated" identity guid to "manually" setting guid (using Guid.NewGuid()) and see whether that makes the code behaviour "more predictable"
- Make "Genre" a drop-down wherever it's used
- Update labels
Make a web application for ticket sales using Onion Architecture. The application should have the following functionalities:
- Register (by default on register every user has role "User")
- Make the following roles available:
- Administrator
- User
- Page for managing users and updating roles
- CRUD operations for tickets (and related entities)
- View to see all available tickets, and in the view, users can filter the tickets by date
- Adding tickets to a Cart (both roles should be allowed to do this)
- Creating an Order based on the user Cart.
- User has to pay for the Order.
- After creating an Order, send an e-mail to the user to confirm that the Order was created.
- Let the user view all of their previous Orders.
- For each Order a user can create an invoice as a PDF document.
- Administrators can export all tickets as an Excel document.
- When exporting, administrator can filter by Genre.
- Administrator can import users using an Excel document.
- Format of excel file:
E-mail | Password | Role
=============================================
[email protected] | test123 | Administrator
[email protected] | test123 | User
No restrictions in terms of the database design, we have full freedom as long as we meet said requirements.
Deadline: 10.07.2023, 23:59h