79 lines
1.9 KiB
C#
79 lines
1.9 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 List<Ticket> _tickets = new();
|
|
public IEnumerable<TicketResponse> GetAll()
|
|
{
|
|
var result =_tickets.Select(t => new TicketResponse
|
|
{
|
|
Id = t.Id,
|
|
Title = t.Title,
|
|
Description =t.Description,
|
|
});
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
public Result<TicketResponse> GetById(Guid id)
|
|
{
|
|
//TODO: should use result
|
|
var found = _tickets.FirstOrDefault(ticket => ticket.Id == id);
|
|
|
|
if (found == null)
|
|
{
|
|
return Result<TicketResponse>.Fail("No Ticket Found");
|
|
}
|
|
|
|
var ticketResponse = new TicketResponse
|
|
{
|
|
Id = found.Id,
|
|
Title = found.Title,
|
|
Description = found.Description,
|
|
};
|
|
|
|
return Result<TicketResponse>.Ok(found);
|
|
}
|
|
|
|
public Result<CreateTicketResponse> Create(CreateTicketRequest request)
|
|
{
|
|
|
|
if (string.IsNullOrWhiteSpace(request.Title))
|
|
return Result<CreateTicketResponse>.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<CreateTicketResponse>.Ok(ticketResponse);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|