using FAMDAL.DTO.AssetSchedule; using FAMDAL.Query.AssetSchedule; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.ResponseStandard; using Newtonsoft.Json; using System; using System.Data.Common; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace FAMDAL.CustomCode.AssetSchedule { public class AssetScheduleDAL : IAssetScheduleDAL { private readonly IQueryExecutor _qe; public AssetScheduleDAL(IQueryExecutor qe) => _qe = qe; public async Task GetAssetSchedule(int assetScheduleId, LoginDTO login, CancellationToken ct) { var items = await _qe.QueryAsync(login, AssetScheduleQB.GET_ASSETSCHEDULE, new { AssetScheduleId = assetScheduleId }, cancellationToken: ct).ConfigureAwait(false); return items.FirstOrDefault(); } public async Task GetSelectListAssetSchedule(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { return await _qe.QueryWithCriteriaJsonAsync( login, AssetScheduleQB.GET_SELECTLIST_ASSETSCHEDULE, null!, criteriaDTO, ct).ConfigureAwait(false); } public async Task SaveAssetSchedule(AssetScheduleDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.AssetScheduleCreatedOn = DateTime.UtcNow; dto.AssetScheduleCreatedById = login.UserId; dto.AssetScheduleModifiedOn = DateTime.UtcNow; dto.AssetScheduleModifiedById = login.UserId; await _qe.ExecuteAsync(login, AssetScheduleQB.SAVE_ASSETSCHEDULE, dto, tx, cancellationToken: ct).ConfigureAwait(false); return dto.AssetScheduleId; } public async Task UpdateAssetSchedule(AssetScheduleDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.AssetScheduleModifiedOn = DateTime.UtcNow; dto.AssetScheduleModifiedById = login.UserId; await _qe.ExecuteAsync(login, AssetScheduleQB.UPDATE_ASSETSCHEDULE, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task> DeleteAssetSchedule(int assetScheduleId, LoginDTO login, CancellationToken ct) { var rows = await _qe.ExecuteAsync(login, AssetScheduleQB.DELETE_ASSETSCHEDULE, new { AssetScheduleId = assetScheduleId }, cancellationToken: ct).ConfigureAwait(false); return rows > 0 ? Result.Success("AssetSchedule Details Deleted Successfully.") : Result.Failure("AssetSchedule not found or could not be deleted."); } } }