Skip to content

Repository files navigation

TicketToCode - Event Management System

Ett komplett Event Management-system byggt med Blazor, WebAPI och Entity Framework Core.

Översikt

Detta projekt är ett komplett Event Management-system som låter användare bläddra bland, visa detaljer om och hantera evenemang. Systemet innehåller administrativa funktioner för att skapa, redigera och ta bort evenemang.

Teknisk Stack

  • Frontend: Blazor Server
  • Backend: ASP.NET Core WebAPI
  • Dataaccess: Entity Framework Core med SQL Server
  • Autentisering: Cookie-based authentication
  • Styling: Bootstrap 5 + Bootstrap Icons

Projektstruktur

TicketToCode/
├── TicketToCode.Core/          # Core models och services
│   ├── Models/                 # Event, User models
│   ├── Data/                    # ApplicationDbContext
│   └── Services/                # AuthService
├── TicketToCode.Api/            # WebAPI backend
│   └── Endpoints/               # API endpoints (Auth, Event)
└── TicketToCode.Blazor/        # Blazor Server frontend
    ├── Components/Pages/        # Razor pages
    └── Services/                # API service, Auth state

Funktioner

För alla användare

  • ✅ Bläddra bland evenemang
  • ✅ Visa detaljerad information om evenemang
  • ✅ Registrera nytt konto
  • ✅ Logga in/logga ut

För administratörer

  • ✅ Skapa nya evenemang
  • ✅ Redigera befintliga evenemang
  • ✅ Ta bort evenemang

Kom igång

Förutsättningar

  • .NET 9.0 SDK
  • SQL Server (LocalDB fungerar)
  • Visual Studio 2022 eller VS Code

Installation

  1. Klona repositoryt

    git clone <repository-url>
    cd TicketToCode
  2. Återställ NuGet-paket

    dotnet restore
  3. Uppdatera databasen Databasen skapas automatiskt vid första körningen med EnsureCreated().

  4. Konfigurera API URL Uppdatera appsettings.json i Blazor-projektet med rätt API-URL:

    {
      "ApiBaseUrl": "https://localhost:7206"
    }
  5. Kör projektet

    Alternativ 1: Kör båda projekt separat

    # Terminal 1 - API
    cd TicketToCode.Api
    dotnet run
    
    # Terminal 2 - Blazor
    cd TicketToCode.Blazor
    dotnet run

    Alternativ 2: Kör från solution

    dotnet run --project TicketToCode.Api
    dotnet run --project TicketToCode.Blazor
  6. Öppna i webbläsaren

    • API Swagger: https://localhost:7206/swagger
    • Blazor App: https://localhost:7204

API Endpoints

Autentisering

  • POST /auth/login - Logga in
  • POST /auth/register - Registrera ny användare

Evenemang

  • GET /events - Hämta alla evenemang
  • GET /events/{id} - Hämta specifikt evenemang
  • POST /events - Skapa nytt evenemang (kräver autentisering)
  • PUT /events/{id} - Uppdatera evenemang (kräver autentisering)
  • DELETE /events/{id} - Ta bort evenemang (kräver autentisering)

Datamodeller

Event

  • Id (int)
  • Name (string)
  • Description (string)
  • Type (EventType enum: Concert, Festival, Theatre, Other)
  • StartTime (DateTime)
  • EndTime (DateTime)
  • MaxAttendees (int)
  • CreatedAt (DateTime)
  • CreatedBy (string)

User

  • Id (int)
  • Username (string)
  • PasswordHash (string)
  • Role (string: "Admin" eller "User")
  • CreatedAt (DateTime)

Utveckling

Skapa en admin-användare

För att skapa en admin-användare, kör följande SQL i databasen:

-- Först registrera dig via UI, sedan uppdatera rollen:
UPDATE Users SET Role = 'Admin' WHERE Username = 'ditt_användarnamn';

Migrations (för framtida användning)

När du vill använda migrations istället för EnsureCreated():

cd TicketToCode.Core
dotnet ef migrations add InitialCreate --startup-project ../TicketToCode.Api
dotnet ef database update --startup-project ../TicketToCode.Api

Kända begränsningar

  • Bokningar/biljetter är inte implementerade ännu
  • Användarhantering (redigera/ta bort) saknas
  • Statistik över bokningar saknas
  • CORS är konfigurerad för development - uppdatera för production

Framtida förbättringar

  • Implementera bokningssystem
  • Användarhantering för admin
  • Sökfunktion för evenemang
  • Filtrering och sortering
  • Statistik och rapporter
  • Email-notifikationer
  • Bilduppladdning för evenemang

Licens

Detta projekt är skapat för utbildningssyfte.

Bidrag

Detta är ett skolprojekt. För frågor, kontakta projektägaren.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages