using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using KmsDAL.DTO.KmDomain; using KmsDAL.Query.KmDomain; using Newtonsoft.Json; namespace KmsDAL.CustomCode.KmDomain { public class KmDomainDAL : IKmDomainDAL { private readonly IQueryExecutor _qe; public KmDomainDAL(IQueryExecutor qe) => _qe = qe; public async Task GetKmDomain(int domainId, LoginDTO login, CancellationToken ct) { var result = await _qe.QuerySingleAsync( login, KmDomainQB.GET_KMDOMAIN, new { DomainId = domainId, TenantId = login.ClientId }, cancellationToken: ct); return JsonConvert.SerializeObject(result); } public async Task GetSelectListKmDomain(LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, KmDomainQB.GET_SELECTLIST_KMDOMAIN, new { TenantId = login.ClientId }, cancellationToken: ct); return JsonConvert.SerializeObject(result); } public async Task GetSelectListKmDomainBySpace(int spaceId, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, KmDomainQB.GET_SELECTLIST_KMDOMAIN_BY_SPACE, new { SpaceId = spaceId, TenantId = login.ClientId }, cancellationToken: ct); return JsonConvert.SerializeObject(result); } public async Task GetKmDomainCodeCount(string domainCode, int domainId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteScalarAsync( login, KmDomainQB.GET_KMDOMAIN_CODE_COUNT, new { DomainCode = domainCode, DomainId = domainId, TenantId = login.ClientId }, cancellationToken: ct); public async Task SaveKmDomain(KmDomainDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, KmDomainQB.SAVE_KMDOMAIN, dto, cancellationToken: ct); public async Task UpdateKmDomain(KmDomainDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, KmDomainQB.UPDATE_KMDOMAIN, dto, cancellationToken: ct); public async Task DeleteKmDomain(int domainId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, KmDomainQB.DELETE_KMDOMAIN, new { DomainId = domainId, ModifiedById = login.UserId, TenantId = login.ClientId }, cancellationToken: ct); } }