using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using TCMSDAL.DTO; using TCMSDAL.Interfaces; using TCMSDAL.QueryBuilders; namespace TCMSDAL.Implementations; public class TCMSModuleDAL : ITCMSModuleDAL { private readonly IQueryExecutor _QueryExecutor; public TCMSModuleDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } public async Task GetModuleAsync( int moduleId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, TCMSModuleQB.GET_MODULE, new { ModuleId = moduleId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetModuleListAsync( int? projectId, bool? isActive, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, TCMSModuleQB.GET_MODULE_LIST, new { TenantId = login.ClientId, ProjectId = projectId, IsActive = isActive }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task> GetSelectListAsync( int? projectId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, TCMSModuleQB.GET_SELECT_LIST, new { TenantId = login.ClientId, ProjectId = projectId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task SaveModuleAsync( TCMSModuleDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteIdentityAsync( login, TCMSModuleQB.SAVE_MODULE, new { dto.ModuleCode, dto.ModuleName, dto.Description, dto.ProjectId, dto.PieModuleId, dto.PieModuleName, dto.Priority, dto.Owner, TenantId = login.ClientId, CreatedBy = login.UserId }).ConfigureAwait(false); public async Task UpdateModuleAsync( TCMSModuleDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync( login, TCMSModuleQB.UPDATE_MODULE, new { dto.ModuleId, dto.ModuleName, dto.Description, dto.ProjectId, dto.PieModuleId, dto.PieModuleName, dto.Priority, dto.Owner, dto.IsActive, TenantId = login.ClientId, ModifiedBy = login.UserId }, cancellationToken: ct).ConfigureAwait(false); public async Task CodeExistsAsync( string code, int projectId, int? moduleId, LoginDTO login, CancellationToken ct) { int count = await _QueryExecutor.ExecuteScalarAsync( login, TCMSModuleQB.CHECK_CODE_EXISTS, new { ModuleCode = code, ProjectId = projectId, ModuleId = moduleId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return count > 0; } }