Skip to content

PegasusMKD/Integrated-Systems-Homework

Repository files navigation

Integrated Systems Homework

This repository is a .NET Core homework project for my university project, more specifically for the "Integrated Systems" subject.

To Dos

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
  • 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

Bugs

  • 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

Requirements

Make a web application for ticket sales using Onion Architecture. The application should have the following functionalities:

Authentication System

  • Register (by default on register every user has role "User")
  • Make the following roles available:
    • Administrator
    • User
  • Page for managing users and updating roles

Services

Tickets

  • CRUD operations for tickets (and related entities)
  • View to see all available tickets, and in the view, users can filter the tickets by date

Cart

  • Adding tickets to a Cart (both roles should be allowed to do this)

Orders

  • 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.

Administrator-specific services

Tickets

  • Administrators can export all tickets as an Excel document.
  • When exporting, administrator can filter by Genre.

Users

  • Administrator can import users using an Excel document.
    • Format of excel file:
        E-mail      | Password  |    Role
   =============================================
    [email protected] | test123   | Administrator
    [email protected]  | test123   |    User

Notes

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages