using System.Data; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.ResponseStandard; using System.Data.Common; using Newtonsoft.Json; using SwDAL.DTO.ScriptBranch; using SwDAL.Query.ScriptBranch; namespace SwDAL.CustomCode.ScriptBranch; public class ScriptBranchDAL : IScriptBranchDAL { private readonly IQueryExecutor _QueryExecutor; public ScriptBranchDAL(IQueryExecutor queryExecutor) => _QueryExecutor = queryExecutor; public async Task GetById(int branchId, LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( loginDTO, ScriptBranchQB.GET_BY_ID, new { BranchId = branchId, TenantId = loginDTO.ClientId }) .ConfigureAwait(false); public async Task GetSelectListScriptBranch(int first, int max, LoginDTO loginDTO) { var result = await _QueryExecutor.QueryAsync( loginDTO, ScriptBranchQB.GET_SELECT_LIST, new { firstnumber = first, maxresult = max, TenantId = loginDTO.ClientId }) .ConfigureAwait(false); return JsonConvert.SerializeObject(result); } public async Task> SaveScriptBranch( ScriptBranchDTO 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, ScriptBranchQB.INSERT, dto, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("Script branch saved.") : Result.Failure("Failed to save script branch."); } public async Task> UpdateScriptBranch( ScriptBranchDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct) { dto.ModifiedById = loginDTO.UserId; dto.ModifiedOn = DateTime.UtcNow; int rows = await _QueryExecutor.ExecuteAsync(loginDTO, ScriptBranchQB.UPDATE, dto, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("Script branch updated.") : Result.Failure("Failed to update script branch."); } public async Task> DeleteScriptBranch( int branchId, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct) { int rows = await _QueryExecutor.ExecuteAsync( loginDTO, ScriptBranchQB.DELETE, new { BranchId = branchId, TenantId = loginDTO.ClientId }, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("Script branch deleted.") : Result.Failure("Script branch not found or already deleted."); } }