[Add] MasterData Services.

This commit is contained in:
Thanakarn Klangkasame
2025-11-26 10:29:56 +07:00
parent d4ab1cb592
commit 1e636aa3d5
205 changed files with 7814 additions and 69 deletions

View File

@@ -0,0 +1,36 @@
using AMREZ.EOP.Abstractions.Applications.Tenancy;
using AMREZ.EOP.Abstractions.Applications.UseCases.MasterData.Brand;
using AMREZ.EOP.Abstractions.Infrastructures.Repositories;
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Brand;
using Microsoft.AspNetCore.Http;
namespace AMREZ.EOP.Application.UseCases.MasterData.Brand;
public sealed class ListBrandsUseCase : IListBrandsUseCase
{
private readonly IBrandRepository _repo;
private readonly ITenantResolver _tenantResolver;
private readonly IHttpContextAccessor _http;
public ListBrandsUseCase(IBrandRepository repo, ITenantResolver tenantResolver, IHttpContextAccessor http)
{
_repo = repo;
_tenantResolver = tenantResolver;
_http = http;
}
public async Task<PagedResponse<BrandResponse>> ExecuteAsync(BrandListRequest req, CancellationToken ct = default)
{
var http = _http.HttpContext ?? throw new InvalidOperationException("No HttpContext");
var tc = _tenantResolver.Resolve(http) ?? throw new InvalidOperationException("No tenant");
var tid = Guid.Parse(tc.Id);
var page = await _repo.SearchEffectiveAsync(tid, req, ct);
var items = page.Items.Select(Map).ToList();
return new PagedResponse<BrandResponse>(page.Page, page.PageSize, page.Total, items);
}
private static BrandResponse Map(Domain.Entities.MasterData.Brand e) =>
new(e.Id, e.Scope, e.Code, e.Name, e.NameI18n, e.OverridesGlobalId, e.IsActive, e.IsSystem, e.Meta);
}