Creating setting's endpoints

This commit is contained in:
2025-10-16 17:39:36 +02:00
parent d0f20e08f0
commit 0121435594
7 changed files with 180 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
namespace PyroFetes.DTO.SettingDTO.Request;
public class UpdateSettingDto
{
public int Id { get; set; }
public string? ElectronicSignature { get; set; }
public string? Logo { get; set; }
}

View File

@@ -0,0 +1,34 @@
using Microsoft.EntityFrameworkCore;
namespace PyroFetes.Endpoints.Setting;
using PyroFetes.DTO.SettingDTO.Request;
using PyroFetes.DTO.SettingDTO.Response;
using FastEndpoints;
public class CreateSettingEndpoint(PyroFetesDbContext database) : Endpoint<CreateSettingDto, GetSettingDto>
{
public override void Configure()
{
Post("/api/setting");
}
public override async Task HandleAsync(CreateSettingDto req, CancellationToken ct)
{
var setting = new Models.Setting()
{
ElectronicSignature = req.ElectronicSignature,
Logo = req.Logo
};
database.Settings.Add(setting);
await database.SaveChangesAsync(ct);
GetSettingDto responseDto = new()
{
Id = setting.Id,
ElectronicSignature = setting.ElectronicSignature,
Logo = setting.Logo
};
await Send.OkAsync(responseDto, ct);
}
}

View File

@@ -0,0 +1,35 @@
namespace PyroFetes.Endpoint.Setting;
using PyroFetes.DTO.SettingDTO.Request;
using PyroFetes.DTO.SettingDTO.Response;
using FastEndpoints;
using Microsoft.EntityFrameworkCore;
public class DeleteSettingRequest
{
public int Id { get; set; }
}
public class DeleteSettingEndpoint(PyroFetesDbContext database) : Endpoint<DeleteSettingRequest>
{
public override void Configure()
{
Delete("/api/setting/{@Id}", x => new {x.Id});
}
public override async Task HandleAsync(DeleteSettingRequest req, CancellationToken ct)
{
var setting = await database.Settings.SingleOrDefaultAsync(x => x.Id == req.Id, ct);
if (setting == null)
{
await Send.NotFoundAsync(ct);
return;
}
database.Settings.Remove(setting);
await database.SaveChangesAsync(ct);
await Send.NoContentAsync(ct);
}
}

View File

@@ -0,0 +1,27 @@
namespace PyroFetes.Endpoints.Setting;
using PyroFetes.DTO.SettingDTO.Request;
using PyroFetes.DTO.SettingDTO.Response;
using FastEndpoints;
using Microsoft.EntityFrameworkCore;
public class GetAllSettingEndpoint(PyroFetesDbContext database) : EndpointWithoutRequest<List<GetSettingDto>>
{
public override void Configure()
{
Get("/api/setting");
}
public override async Task HandleAsync(CancellationToken ct)
{
var setting = await database.Settings
.Select(setting => new GetSettingDto()
{
Id = setting.Id,
ElectronicSignature = setting.ElectronicSignature,
Logo = setting.Logo
})
.ToListAsync(ct);
await Send.OkAsync(setting, ct);
}
}

View File

@@ -0,0 +1,38 @@
namespace PyroFetes.Endpoint.Setting;
using PyroFetes.DTO.SettingDTO.Request;
using PyroFetes.DTO.SettingDTO.Response;
using FastEndpoints;
using Microsoft.EntityFrameworkCore;
public class GetSettingRequest
{
public int Id { get; set; }
}
public class GetSettingEndpoint(PyroFetesDbContext database) : Endpoint<GetSettingRequest, GetSettingDto>
{
public override void Configure()
{
Get("/api/setting/{@Id}", x => new {x.Id});
}
public override async Task HandleAsync(GetSettingRequest req, CancellationToken ct)
{
var setting = await database.Settings
.SingleOrDefaultAsync(x => x.Id == req.Id, ct);
if (setting == null)
{
await Send.NotFoundAsync(ct);
return;
}
GetSettingDto responseDto = new()
{
Id = setting.Id,
ElectronicSignature = setting.ElectronicSignature,
Logo = setting.Logo
};
await Send.OkAsync(responseDto, ct);
}
}

View File

@@ -0,0 +1,37 @@
namespace PyroFetes.Endpoint.Setting;
using PyroFetes.DTO.SettingDTO.Request;
using PyroFetes.DTO.SettingDTO.Response;
using FastEndpoints;
using Microsoft.EntityFrameworkCore;
public class UpdateSettingEndpoint(PyroFetesDbContext database) : Endpoint<UpdateSettingDto, GetSettingDto>
{
public override void Configure()
{
Get("/api/setting/{@Id}", x => new {x.Id});
}
public override async Task HandleAsync(UpdateSettingDto req, CancellationToken ct)
{
var setting = await database.Settings.SingleOrDefaultAsync(x => x.Id == req.Id, ct);
if (setting == null)
{
await Send.NotFoundAsync(ct);
return;
}
setting.ElectronicSignature = req.ElectronicSignature;
setting.Logo = req.Logo;
await database.SaveChangesAsync(ct);
GetSettingDto responseDto = new()
{
Id = setting.Id,
ElectronicSignature = setting.ElectronicSignature,
Logo = setting.Logo
};
await Send.OkAsync(responseDto, ct);
}
}

View File

@@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FastEndpoints" Version="7.1.0-beta.23" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.19"/>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.20" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.20">