From 4b1152614ec94df8411cb7627897bbb48266de17 Mon Sep 17 00:00:00 2001 From: Romain Mallard Date: Mon, 16 Mar 2026 10:53:09 +0100 Subject: [PATCH] feat: Split into Controller/Application/Domain --- Controllers/TicketsController.cs | 33 ------------------- Program.cs | 12 +++++++ .../Controllers/TicketsController.cs | 28 ++++++++++++++++ .../Interfaces/ITicketService.cs | 11 +++++++ .../Services/TicketServices.cs | 28 ++++++++++++++++ .../Entities.cs/Tickets.cs | 8 +++++ TicketAppIncrArchi.csproj | 1 + 7 files changed, 88 insertions(+), 33 deletions(-) delete mode 100644 Controllers/TicketsController.cs create mode 100644 TicketAppIncrArchi.API/Controllers/TicketsController.cs create mode 100644 TicketAppIncrArchi.Application/Interfaces/ITicketService.cs create mode 100644 TicketAppIncrArchi.Application/Services/TicketServices.cs create mode 100644 TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs diff --git a/Controllers/TicketsController.cs b/Controllers/TicketsController.cs deleted file mode 100644 index 1015523..0000000 --- a/Controllers/TicketsController.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace TicketAppIncrArchi.Controllers; - -[ApiController] -[Route("api/tickets")] -public class TicketsController : ControllerBase -{ - - private static List Tickets = new(); - - [HttpGet] - public IEnumerable Get() => Tickets; - - [HttpPost] - public IActionResult Create(Ticket ticket) - { - ticket.Id = Guid.NewGuid(); - - Tickets.Add(ticket); - return CreatedAtAction(nameof(Get), new {id = ticket.Id}, ticket); - } - - public class Ticket - { - public Guid Id {get;set;} - public string Title {get;set;} = ""; - public string Description {get;set;} = ""; - //public string Status {get;set;} = ""; - } - - -} diff --git a/Program.cs b/Program.cs index 295be6f..3ad00f5 100644 --- a/Program.cs +++ b/Program.cs @@ -1,3 +1,8 @@ +using TicketAppIncrArchi.API.Controllers; +using TicketAppIncrArchi.Application.Interfaces; +using TicketAppIncrArchi.Application.Services; + + var builder = WebApplication.CreateBuilder(args); // Add services to the container. @@ -5,6 +10,11 @@ builder.Services.AddControllers(); // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi builder.Services.AddOpenApi(); +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + + +builder.Services.AddScoped(); var app = builder.Build(); @@ -12,6 +22,8 @@ var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.MapOpenApi(); + app.UseSwagger(); + app.UseSwaggerUI(); } //---Disabled for dev purpose diff --git a/TicketAppIncrArchi.API/Controllers/TicketsController.cs b/TicketAppIncrArchi.API/Controllers/TicketsController.cs new file mode 100644 index 0000000..275704e --- /dev/null +++ b/TicketAppIncrArchi.API/Controllers/TicketsController.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Mvc; +using TicketAppIncrArchi.Application.Interfaces; +using TicketAppIncrArchi.Domain.Entities; + +namespace TicketAppIncrArchi.API.Controllers; + +[ApiController] +[Route("api/tickets")] +public class TicketsController : ControllerBase +{ + + private readonly ITicketService _service; + + public TicketsController(ITicketService service) + { + _service = service; + } + + [HttpGet] + public IEnumerable Get() => _service.GetAll(); + + [HttpPost] + public IActionResult Create(Ticket ticket) + { + var created = _service.Create(ticket); + return CreatedAtAction(nameof(Get), new {id=created.Id}, created); + } +} diff --git a/TicketAppIncrArchi.Application/Interfaces/ITicketService.cs b/TicketAppIncrArchi.Application/Interfaces/ITicketService.cs new file mode 100644 index 0000000..69a7b7a --- /dev/null +++ b/TicketAppIncrArchi.Application/Interfaces/ITicketService.cs @@ -0,0 +1,11 @@ +using TicketAppIncrArchi.Domain.Entities; + +namespace TicketAppIncrArchi.Application.Interfaces; + +public interface ITicketService +{ + IEnumerable GetAll(); + + Ticket? GetById(Guid id); + Ticket Create(Ticket ticket); +} diff --git a/TicketAppIncrArchi.Application/Services/TicketServices.cs b/TicketAppIncrArchi.Application/Services/TicketServices.cs new file mode 100644 index 0000000..d139f3b --- /dev/null +++ b/TicketAppIncrArchi.Application/Services/TicketServices.cs @@ -0,0 +1,28 @@ +using System.Runtime.CompilerServices; +using TicketAppIncrArchi.Application.Interfaces; +using TicketAppIncrArchi.Domain.Entities; + +namespace TicketAppIncrArchi.Application.Services; + +public class TicketService : ITicketService +{ + + private readonly List _tickets = new(); + public IEnumerable GetAll() => _tickets; + + public Ticket? GetById(Guid id) + { + return _tickets.FirstOrDefault(ticket => ticket.Id == id); + } + + public Ticket Create(Ticket ticket) + { + ticket.Id = Guid.NewGuid(); + _tickets.Add(ticket); + return ticket; + } + +} + + + diff --git a/TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs b/TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs new file mode 100644 index 0000000..445bbf3 --- /dev/null +++ b/TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs @@ -0,0 +1,8 @@ +namespace TicketAppIncrArchi.Domain.Entities; + public class Ticket + { + public Guid Id {get;set;} + public string Title {get;set;} = ""; + public string Description {get;set;} = ""; + //public string Status {get;set;} = ""; + } diff --git a/TicketAppIncrArchi.csproj b/TicketAppIncrArchi.csproj index d3e210a..ad460fe 100644 --- a/TicketAppIncrArchi.csproj +++ b/TicketAppIncrArchi.csproj @@ -8,6 +8,7 @@ +