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; namespace TicketAppIncrArchi.Application.Services; public class TicketService : ITicketService { private readonly List _tickets = new(); public IEnumerable GetAll() { var result =_tickets.Select(t => new TicketResponse { Id = t.Id, Title = t.Title, Description =t.Description, }); return result; } public Result GetById(Guid 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) { if (string.IsNullOrWhiteSpace(request.Title)) return Result.Fail("Title is Required"); var ticket = new Ticket { Id = Guid.NewGuid(), Title = request.Title, Description = request.Description }; //send creation to repo _tickets.Add(ticket); var ticketResponse = new CreateTicketResponse { Id = ticket.Id, Title = ticket.Title, Description = ticket.Description }; return Result.Ok(ticketResponse); } }