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 ITicketRepository _repo; //private readonly List _tickets = new(); public TicketService(ITicketRepository repo) { _repo = repo; } public async Task> GetAll() { var tickets = await _repo.GetAllAsync(); var result =tickets.Select(t => new TicketResponse { Id = t.Id, Title = t.Title, Description =t.Description, }); return result; } public async Task> GetById(Guid id) { var ticket = await _repo.GetByIdAsync(id); if (ticket == null) { return Result.Fail("No Ticket Found"); } var ticketResponse = new TicketResponse { Id = ticket.Id, Title = ticket.Title, Description = ticket.Description, }; return Result.Ok(ticketResponse); } public async Task> Create(CreateTicketRequest request) { if (string.IsNullOrWhiteSpace(request.Title)) return Result.Fail("Title is Required"); var ticket = new Ticket { Title = request.Title, Description = request.Description }; Ticket resultTicket = await _repo.AddAsync(ticket); var ticketResponse = new CreateTicketResponse { Id = resultTicket.Id, Title = resultTicket.Title, Description = resultTicket.Description }; return Result.Ok(ticketResponse); } }