[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,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Allergen;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IAllergenRepository
{
Task<Allergen?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Allergen>> SearchEffectiveAsync(Guid tenantId, AllergenListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Allergen entity, CancellationToken ct = default);
Task UpdateAsync(Allergen entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Brand;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IBrandRepository
{
Task<Brand?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Brand>> SearchEffectiveAsync(Guid tenantId, BrandListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Brand entity, CancellationToken ct = default);
Task UpdateAsync(Brand entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Category;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface ICategoryRepository
{
Task<Category?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Category>> SearchEffectiveAsync(Guid tenantId, CategoryListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Category entity, CancellationToken ct = default);
Task UpdateAsync(Category entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,6 @@
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IComplianceStatusRepository
{
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Country;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface ICountryRepository
{
Task<Country?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Country>> SearchEffectiveAsync(Guid tenantId, CountryListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Country entity, CancellationToken ct = default);
Task UpdateAsync(Country entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Currency;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface ICurrencyRepository
{
Task<Currency?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Currency>> SearchEffectiveAsync(Guid tenantId, CurrencyListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Currency entity, CancellationToken ct = default);
Task UpdateAsync(Currency entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,23 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.District;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IDistrictRepository
{
Task<District?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<District>> SearchEffectiveAsync(
Guid tenantId,
DistrictListRequest req,
CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(District entity, CancellationToken ct = default);
Task UpdateAsync(District entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.DocControlStatus;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IDocControlStatusRepository
{
Task<DocControlStatus?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<DocControlStatus>> SearchEffectiveAsync(Guid tenantId, DocControlStatusListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(DocControlStatus entity, CancellationToken ct = default);
Task UpdateAsync(DocControlStatus entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.FuncTest;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IFuncTestRepository
{
Task<FuncTest?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<FuncTest>> SearchEffectiveAsync(Guid tenantId, FuncTestListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(FuncTest entity, CancellationToken ct = default);
Task UpdateAsync(FuncTest entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.HazardClass;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IHazardClassRepository
{
Task<HazardClass?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<HazardClass>> SearchEffectiveAsync(Guid tenantId, HazardClassListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(HazardClass entity, CancellationToken ct = default);
Task UpdateAsync(HazardClass entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Language;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface ILanguageRepository
{
Task<Language?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Language>> SearchEffectiveAsync(Guid tenantId, LanguageListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Language entity, CancellationToken ct = default);
Task UpdateAsync(Language entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Manufacturer;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IManufacturerRepository
{
Task<Manufacturer?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Manufacturer>> SearchEffectiveAsync(Guid tenantId, ManufacturerListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Manufacturer entity, CancellationToken ct = default);
Task UpdateAsync(Manufacturer entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Market;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IMarketRepository
{
Task<Market?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Market>> SearchEffectiveAsync(Guid tenantId, MarketListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Market entity, CancellationToken ct = default);
Task UpdateAsync(Market entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.PackingGroup;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IPackingGroupRepository
{
Task<PackingGroup?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<PackingGroup>> SearchEffectiveAsync(Guid tenantId, PackingGroupListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(PackingGroup entity, CancellationToken ct = default);
Task UpdateAsync(PackingGroup entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,23 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Province;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IProvinceRepository
{
Task<Province?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Province>> SearchEffectiveAsync(
Guid tenantId,
ProvinceListRequest req,
CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Province entity, CancellationToken ct = default);
Task UpdateAsync(Province entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.QaStage;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IQaStageRepository
{
Task<QaStage?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<QaStage>> SearchEffectiveAsync(Guid tenantId, QaStageListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(QaStage entity, CancellationToken ct = default);
Task UpdateAsync(QaStage entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.QcStatus;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IQcStatusRepository
{
Task<QcStatus?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<QcStatus>> SearchEffectiveAsync(Guid tenantId, QcStatusListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(QcStatus entity, CancellationToken ct = default);
Task UpdateAsync(QcStatus entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.RecallClass;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IRecallClassRepository
{
Task<RecallClass?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<RecallClass>> SearchEffectiveAsync(Guid tenantId, RecallClassListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(RecallClass entity, CancellationToken ct = default);
Task UpdateAsync(RecallClass entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.RiskClass;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IRiskClassRepository
{
Task<RiskClass?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<RiskClass>> SearchEffectiveAsync(Guid tenantId, RiskClassListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(RiskClass entity, CancellationToken ct = default);
Task UpdateAsync(RiskClass entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Route;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IRouteRepository
{
Task<Route?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Route>> SearchEffectiveAsync(Guid tenantId, RouteListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Route entity, CancellationToken ct = default);
Task UpdateAsync(Route entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.RxSchedule;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IRxScheduleRepository
{
Task<RxSchedule?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<RxSchedule>> SearchEffectiveAsync(Guid tenantId, RxScheduleListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(RxSchedule entity, CancellationToken ct = default);
Task UpdateAsync(RxSchedule entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Species;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface ISpeciesRepository
{
Task<Species?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Species>> SearchEffectiveAsync(Guid tenantId, SpeciesListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Species entity, CancellationToken ct = default);
Task UpdateAsync(Species entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.StabilityStatus;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IStabilityStatusRepository
{
Task<StabilityStatus?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<StabilityStatus>> SearchEffectiveAsync(Guid tenantId, StabilityStatusListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(StabilityStatus entity, CancellationToken ct = default);
Task UpdateAsync(StabilityStatus entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.SterilizationMethod;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface ISterilizationMethodRepository
{
Task<SterilizationMethod?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<SterilizationMethod>> SearchEffectiveAsync(Guid tenantId, SterilizationMethodListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(SterilizationMethod entity, CancellationToken ct = default);
Task UpdateAsync(SterilizationMethod entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,23 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Subdistrict;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface ISubdistrictRepository
{
Task<Subdistrict?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Subdistrict>> SearchEffectiveAsync(
Guid tenantId,
SubdistrictListRequest req,
CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Subdistrict entity, CancellationToken ct = default);
Task UpdateAsync(Subdistrict entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Uom;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IUomRepository
{
Task<Uom?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Uom>> SearchEffectiveAsync(Guid tenantId, UomListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Uom entity, CancellationToken ct = default);
Task UpdateAsync(Uom entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}

View File

@@ -0,0 +1,15 @@
using AMREZ.EOP.Contracts.DTOs.Common;
using AMREZ.EOP.Contracts.DTOs.MasterData.Vvm;
using AMREZ.EOP.Domain.Entities.MasterData;
namespace AMREZ.EOP.Abstractions.Infrastructures.Repositories;
public interface IVvmRepository
{
Task<Vvm?> GetAsync(Guid id, CancellationToken ct = default);
Task<PagedResponse<Vvm>> SearchEffectiveAsync(Guid tenantId, VvmListRequest req, CancellationToken ct = default);
Task<bool> CodeExistsAsync(Guid tenantId, string code, CancellationToken ct = default);
Task AddAsync(Vvm entity, CancellationToken ct = default);
Task UpdateAsync(Vvm entity, CancellationToken ct = default);
Task<int> SoftDeleteAsync(Guid id, Guid tenantId, CancellationToken ct = default);
}