From 5794c3fbb50c6257e977eea79ec248eb4445b991 Mon Sep 17 00:00:00 2001 From: Romain Mallard Date: Mon, 16 Mar 2026 21:30:58 +0100 Subject: [PATCH] fix: Result & DTOs for GetById + cleanup --- .../Controllers/TicketsController.cs | 12 +++++++-- .../Common/Result.cs | 21 +--------------- .../DTOs/TicketsDTOs.cs | 9 +++++++ .../Interfaces/ITicketService.cs | 2 +- .../Services/TicketServices.cs | 25 ++++++++++++++++--- .../Entities.cs/Tickets.cs | 1 - 6 files changed, 42 insertions(+), 28 deletions(-) diff --git a/TicketAppIncrArchi.API/Controllers/TicketsController.cs b/TicketAppIncrArchi.API/Controllers/TicketsController.cs index 74c1403..cad0b55 100644 --- a/TicketAppIncrArchi.API/Controllers/TicketsController.cs +++ b/TicketAppIncrArchi.API/Controllers/TicketsController.cs @@ -29,10 +29,18 @@ public class TicketsController : ControllerBase [HttpGet("{id}")] public ActionResult Get(Guid id) { - var ticket = _service.GetById(id); + var result = _service.GetById(id); + + if (result is FailureResult fail) + return NotFound(fail.Error); + + var success = (SuccessResult) result; + return Ok(success.Value); + + /* if (ticket == null) return NotFound(); return Ok(ticket); - + */ } [HttpPost] diff --git a/TicketAppIncrArchi.Application/Common/Result.cs b/TicketAppIncrArchi.Application/Common/Result.cs index 86b1c50..f27ab43 100644 --- a/TicketAppIncrArchi.Application/Common/Result.cs +++ b/TicketAppIncrArchi.Application/Common/Result.cs @@ -32,23 +32,4 @@ public sealed class FailureResult : Result Error = error ?? throw new ArgumentNullException(nameof(error)); } -} - - -/* -private Result(bool success, T? value, string? error) - { - Success = success; - Value = value; - Error = error; - } -} - -public static Result Ok(T value) - => new(true,value,null); - - public static Result Fail(string error) - => new(false, default, error); - -} -*/ \ No newline at end of file +} \ No newline at end of file diff --git a/TicketAppIncrArchi.Application/DTOs/TicketsDTOs.cs b/TicketAppIncrArchi.Application/DTOs/TicketsDTOs.cs index 31117f3..ee9d603 100644 --- a/TicketAppIncrArchi.Application/DTOs/TicketsDTOs.cs +++ b/TicketAppIncrArchi.Application/DTOs/TicketsDTOs.cs @@ -16,3 +16,12 @@ public class CreateTicketResponse public string Title{get;set;} = ""; public string Description{get;set;} = ""; } + + +public class TicketResponse +{ + public Guid Id {get;set;} + public string Title{get;set;} = ""; + public string Description{get;set;} = ""; + +} \ No newline at end of file diff --git a/TicketAppIncrArchi.Application/Interfaces/ITicketService.cs b/TicketAppIncrArchi.Application/Interfaces/ITicketService.cs index 40cb7ff..31d7c2a 100644 --- a/TicketAppIncrArchi.Application/Interfaces/ITicketService.cs +++ b/TicketAppIncrArchi.Application/Interfaces/ITicketService.cs @@ -9,6 +9,6 @@ public interface ITicketService //TODO: implement Repository IEnumerable GetAll(); - Ticket? GetById(Guid id); + Result GetById(Guid id); Result Create(CreateTicketRequest request); } diff --git a/TicketAppIncrArchi.Application/Services/TicketServices.cs b/TicketAppIncrArchi.Application/Services/TicketServices.cs index 8da5145..228e010 100644 --- a/TicketAppIncrArchi.Application/Services/TicketServices.cs +++ b/TicketAppIncrArchi.Application/Services/TicketServices.cs @@ -1,5 +1,7 @@ using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; using Microsoft.AspNetCore.Http.HttpResults; +using Microsoft.Extensions.ObjectPool; using TicketAppIncrArchi.Application.DTO; using TicketAppIncrArchi.Application.Interfaces; using TicketAppIncrArchi.Domain.Entities; @@ -23,9 +25,24 @@ public class TicketService : ITicketService } - public Ticket? GetById(Guid id) + public Result GetById(Guid id) { - return _tickets.FirstOrDefault(ticket => ticket.Id == id); + //TODO: should use result + var found = _tickets.FirstOrDefault(ticket => ticket.Id == id); + + if (found == null) + { + return Result.Fail("No Ticket Found"); + } + + var ticketResponse = new TicketResponse + { + Id = found.Id, + Title = found.Title, + Description = found.Description, + }; + + return Result.Ok(found); } public Result Create(CreateTicketRequest request) @@ -44,14 +61,14 @@ public class TicketService : ITicketService //send creation to repo _tickets.Add(ticket); - var response = new CreateTicketResponse + var ticketResponse = new CreateTicketResponse { Id = ticket.Id, Title = ticket.Title, Description = ticket.Description }; - return Result.Ok(response); + return Result.Ok(ticketResponse); } diff --git a/TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs b/TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs index 445bbf3..a801c05 100644 --- a/TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs +++ b/TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs @@ -4,5 +4,4 @@ namespace TicketAppIncrArchi.Domain.Entities; public Guid Id {get;set;} public string Title {get;set;} = ""; public string Description {get;set;} = ""; - //public string Status {get;set;} = ""; }