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);
|
||||
|
||||
// Add services to the container.
|
||||
@@ -5,6 +10,11 @@ builder.Services.AddControllers();
|
||||
|
||||
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
|
||||
builder.Services.AddOpenApi();
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
builder.Services.AddSwaggerGen();
|
||||
|
||||
|
||||
builder.Services.AddScoped<ITicketService, TicketService>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
@@ -12,6 +22,8 @@ var app = builder.Build();
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.MapOpenApi();
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
}
|
||||
|
||||
//---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>
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.4" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.5" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user