-
Notifications
You must be signed in to change notification settings - Fork 1
2. System Overview
The overall architecture can currently be split into 6 components with different responsibilities. They are as follows:
1. Controller: Receives and responds to http-requests by calling on appropriate methods in the other components to generate the desired outcome. To control the format of the input and output, may requests and db responses be converted to dto:s before being forwarded to repositories or sent as a response.
2. Repository: Responsible for translating requests into queries against the model and converting query results to relevant data objects before returning them.
3. Model: C# representation of the the database tables.
4. DTO: Data Transfer Object that converts data to an object consisting of only relevant data. Can be used to prevent data leakage in http-responses or as an simplified method of moving data between different components.
5. Services: Responsible for functionality outside the manipulation and gathering of data in the database. This entails token & file management, password validation and email services.
6. Helpers: Consists of helper functions for the controller. Currently only converts claims to intelligible data.
More in-depth resources:
Architecting-Modern-Web-Applications-with-ASP.NET-Core-and-Azure.pdf
NET-Microservices-Architecture-for-Containerized-NET-Applications.pdf
Current relations between the tables in the model:
User(Id, Email, PasswordHash, Role, FirstName, LastName, PhoneNr, FoodPreferences, hasProfilePicture, hasCV, ProfilePictureUrl, CompanyId)
Student(Id, Programme, ResumeEnUrl, ResumeSvUrl, LinkedIn, MasterTitle, Year, UserId)
Company(Id, Name, Description, DidYouKnow, LogoUrl, Website, HostName, HostEmail, HostPhone, DesiredDegrees, DesiredProgramme, Positions, Industries)
StudentSessionTimeslot(Id, Start, End, Location, StudentId, CompanyId)
StudentSessionApplication(Id, Motivation, Status, Booked, StudentId, CompanyId)
Event(Id, Name, Description, Date, Start, End, Location, Host, Language, Capacity, TicketCount)
Ticket(Id, Code, PhotoOk, isConsumed, EventId, UserId)