using System.Data.Common; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.ResponseStandard; using MMDAL.DTO.MRP; using MMDAL.Query.MRP; namespace MMDAL.CustomCode.MRP { public class MRPDAL : IMRPDAL { private readonly IQueryExecutor _QueryExecutor; public MRPDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } public async Task GetMRP(int mrpId, LoginDTO loginDTO) { var param = new { MRPId = mrpId, TenantId = loginDTO.ClientId }; return await _QueryExecutor .QuerySingleAsync(loginDTO, MRPQB.GET_MRP, param) .ConfigureAwait(false); } public async Task> SaveMRP(MRPDTO dto, LoginDTO loginDTO, DbTransaction tx) { dto.MRPCreatedById = loginDTO.UserId; dto.MRPCreatedOn = DateTime.UtcNow; dto.MRPModifiedById = loginDTO.UserId; dto.MRPModifiedOn = DateTime.UtcNow; int rows = await _QueryExecutor .ExecuteAsync(loginDTO, MRPQB.SAVE_MRP, dto, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("MRP saved.") : Result.Failure("Failed to save MRP."); } public async Task> UpdateMRP(MRPDTO dto, LoginDTO loginDTO, DbTransaction tx) { dto.MRPModifiedById = loginDTO.UserId; dto.MRPModifiedOn = DateTime.UtcNow; int rows = await _QueryExecutor .ExecuteAsync(loginDTO, MRPQB.UPDATE_MRP, dto, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("MRP updated.") : Result.Failure("Failed to update MRP."); } public async Task> DeleteMRP(int mrpId, LoginDTO loginDTO, DbTransaction tx) { int rows = await _QueryExecutor .ExecuteAsync(loginDTO, MRPQB.DELETE_MRP, new { MRPId = mrpId }, tx) .ConfigureAwait(false); return rows > 0 ? Result.Success("MRP deleted.") : Result.Failure("MRP not found or already deleted."); } public async Task> GetMRPList(int pageOffset, int pageSize, LoginDTO loginDTO) { var param = new { TenantId = loginDTO.ClientId, PageOffset = pageOffset, PageSize = pageSize }; return await _QueryExecutor .QueryAsync(loginDTO, MRPQB.GET_MRP_LIST, param) .ConfigureAwait(false) ?? []; } public async Task GetMRPListCount(LoginDTO loginDTO) { var param = new { TenantId = loginDTO.ClientId }; return await _QueryExecutor .ExecuteScalarAsync(loginDTO, MRPQB.GET_MRP_LIST_COUNT, param) .ConfigureAwait(false); } public async Task> GetSelectListMRP(CriteriaDTO criteriaDTO, LoginDTO loginDTO) { var param = new { TenantId = loginDTO.ClientId }; return await _QueryExecutor .QueryAsync(loginDTO, MRPQB.GET_SELECTLIST_MRP, param) .ConfigureAwait(false) ?? []; } } }