82 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|
|
|
|
|
|
|