Files
2026-04-16 14:21:58 +02:00

82 lines
2.1 KiB
C#

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<Ticket> _tickets = new();
public TicketService(ITicketRepository repo)
{
_repo = repo;
}
public async Task<IEnumerable<TicketResponse>> 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<Result<TicketResponse>> GetById(Guid id)
{
var ticket = await _repo.GetByIdAsync(id);
if (ticket == null)
{
return Result<TicketResponse>.Fail("No Ticket Found");
}
var ticketResponse = new TicketResponse
{
Id = ticket.Id,
Title = ticket.Title,
Description = ticket.Description,
};
return Result<TicketResponse>.Ok(ticketResponse);
}
public async Task<Result<CreateTicketResponse>> Create(CreateTicketRequest request)
{
if (string.IsNullOrWhiteSpace(request.Title))
return Result<CreateTicketResponse>.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<CreateTicketResponse>.Ok(ticketResponse);
}
}