using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.ResponseStandard; using Newtonsoft.Json; using SwDAL.DTO.DbModel; using SwDAL.Query.DbModel; using System.Data; using System.Data.Common; namespace SwDAL.CustomCode.DbModel; public class DbModelDAL : IDbModelDAL { private readonly IQueryExecutor _QueryExecutor; public DbModelDAL(IQueryExecutor queryExecutor) => _QueryExecutor = queryExecutor; public async Task GetById(int dbModelId, LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( loginDTO, DbModelQB.GET_BY_ID, new { DbModelId = dbModelId, TenantId = loginDTO.ClientId }) .ConfigureAwait(false); public async Task GetSelectListDbModel(int first, int max, CriteriaDTO criteriaDTO, LoginDTO loginDTO) { var result = await _QueryExecutor.QueryAsync( loginDTO, DbModelQB.GET_SELECT_LIST, new { firstnumber = first, maxresult = max, criteriaDTO,TenantId = loginDTO.ClientId }) .ConfigureAwait(false); return JsonConvert.SerializeObject(result); } public async Task> SaveDbModel( DbModelDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct) { dto.CreatedById = loginDTO.UserId; dto.CreatedOn = DateTime.UtcNow; dto.ModifiedById = loginDTO.UserId; dto.ModifiedOn = DateTime.UtcNow; int rows = await _QueryExecutor.ExecuteAsync(loginDTO, DbModelQB.INSERT, dto, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("DB model saved.") : Result.Failure("Failed to save DB model."); } public async Task> UpdateDbModel( DbModelDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct) { dto.ModifiedById = loginDTO.UserId; dto.ModifiedOn = DateTime.UtcNow; int rows = await _QueryExecutor.ExecuteAsync(loginDTO, DbModelQB.UPDATE, dto, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("DB model updated.") : Result.Failure("Failed to update DB model."); } public async Task> DeleteDbModel( int dbModelId, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct) { int rows = await _QueryExecutor.ExecuteAsync( loginDTO, DbModelQB.DELETE, new { DbModelId = dbModelId, TenantId = loginDTO.ClientId }, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("DB model deleted.") : Result.Failure("DB model not found or already deleted."); } }