feat: Split into Controller/Application/Domain
This commit is contained in:
@@ -1,33 +0,0 @@
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
|
|
||||||
namespace TicketAppIncrArchi.Controllers;
|
|
||||||
|
|
||||||
[ApiController]
|
|
||||||
[Route("api/tickets")]
|
|
||||||
public class TicketsController : ControllerBase
|
|
||||||
{
|
|
||||||
|
|
||||||
private static List<Ticket> Tickets = new();
|
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
public IEnumerable<Ticket> Get() => Tickets;
|
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public IActionResult Create(Ticket ticket)
|
|
||||||
{
|
|
||||||
ticket.Id = Guid.NewGuid();
|
|
||||||
|
|
||||||
Tickets.Add(ticket);
|
|
||||||
return CreatedAtAction(nameof(Get), new {id = ticket.Id}, ticket);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Ticket
|
|
||||||
{
|
|
||||||
public Guid Id {get;set;}
|
|
||||||
public string Title {get;set;} = "";
|
|
||||||
public string Description {get;set;} = "";
|
|
||||||
//public string Status {get;set;} = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
12
Program.cs
12
Program.cs
@@ -1,3 +1,8 @@
|
|||||||
|
using TicketAppIncrArchi.API.Controllers;
|
||||||
|
using TicketAppIncrArchi.Application.Interfaces;
|
||||||
|
using TicketAppIncrArchi.Application.Services;
|
||||||
|
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
@@ -5,6 +10,11 @@ builder.Services.AddControllers();
|
|||||||
|
|
||||||
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
|
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
|
||||||
builder.Services.AddOpenApi();
|
builder.Services.AddOpenApi();
|
||||||
|
builder.Services.AddEndpointsApiExplorer();
|
||||||
|
builder.Services.AddSwaggerGen();
|
||||||
|
|
||||||
|
|
||||||
|
builder.Services.AddScoped<ITicketService, TicketService>();
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
@@ -12,6 +22,8 @@ var app = builder.Build();
|
|||||||
if (app.Environment.IsDevelopment())
|
if (app.Environment.IsDevelopment())
|
||||||
{
|
{
|
||||||
app.MapOpenApi();
|
app.MapOpenApi();
|
||||||
|
app.UseSwagger();
|
||||||
|
app.UseSwaggerUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---Disabled for dev purpose
|
//---Disabled for dev purpose
|
||||||
|
|||||||
28
TicketAppIncrArchi.API/Controllers/TicketsController.cs
Normal file
28
TicketAppIncrArchi.API/Controllers/TicketsController.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using TicketAppIncrArchi.Application.Interfaces;
|
||||||
|
using TicketAppIncrArchi.Domain.Entities;
|
||||||
|
|
||||||
|
namespace TicketAppIncrArchi.API.Controllers;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/tickets")]
|
||||||
|
public class TicketsController : ControllerBase
|
||||||
|
{
|
||||||
|
|
||||||
|
private readonly ITicketService _service;
|
||||||
|
|
||||||
|
public TicketsController(ITicketService service)
|
||||||
|
{
|
||||||
|
_service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IEnumerable<Ticket> Get() => _service.GetAll();
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult Create(Ticket ticket)
|
||||||
|
{
|
||||||
|
var created = _service.Create(ticket);
|
||||||
|
return CreatedAtAction(nameof(Get), new {id=created.Id}, created);
|
||||||
|
}
|
||||||
|
}
|
||||||
11
TicketAppIncrArchi.Application/Interfaces/ITicketService.cs
Normal file
11
TicketAppIncrArchi.Application/Interfaces/ITicketService.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using TicketAppIncrArchi.Domain.Entities;
|
||||||
|
|
||||||
|
namespace TicketAppIncrArchi.Application.Interfaces;
|
||||||
|
|
||||||
|
public interface ITicketService
|
||||||
|
{
|
||||||
|
IEnumerable<Ticket> GetAll();
|
||||||
|
|
||||||
|
Ticket? GetById(Guid id);
|
||||||
|
Ticket Create(Ticket ticket);
|
||||||
|
}
|
||||||
28
TicketAppIncrArchi.Application/Services/TicketServices.cs
Normal file
28
TicketAppIncrArchi.Application/Services/TicketServices.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using TicketAppIncrArchi.Application.Interfaces;
|
||||||
|
using TicketAppIncrArchi.Domain.Entities;
|
||||||
|
|
||||||
|
namespace TicketAppIncrArchi.Application.Services;
|
||||||
|
|
||||||
|
public class TicketService : ITicketService
|
||||||
|
{
|
||||||
|
|
||||||
|
private readonly List<Ticket> _tickets = new();
|
||||||
|
public IEnumerable<Ticket> GetAll() => _tickets;
|
||||||
|
|
||||||
|
public Ticket? GetById(Guid id)
|
||||||
|
{
|
||||||
|
return _tickets.FirstOrDefault(ticket => ticket.Id == id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Ticket Create(Ticket ticket)
|
||||||
|
{
|
||||||
|
ticket.Id = Guid.NewGuid();
|
||||||
|
_tickets.Add(ticket);
|
||||||
|
return ticket;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
8
TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs
Normal file
8
TicketAppIncrArchi.Domain/Entities.cs/Tickets.cs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
namespace TicketAppIncrArchi.Domain.Entities;
|
||||||
|
public class Ticket
|
||||||
|
{
|
||||||
|
public Guid Id {get;set;}
|
||||||
|
public string Title {get;set;} = "";
|
||||||
|
public string Description {get;set;} = "";
|
||||||
|
//public string Status {get;set;} = "";
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.4" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.4" />
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user