using FMDAL.DTO.AssetActivity; using FMDAL.Query.AssetActivity; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace FMDAL.CustomCode.AssetActivity { public class AssetActivityDAL : IAssetActivityDAL { private readonly IQueryExecutor _qe; public AssetActivityDAL(IQueryExecutor qe) => _qe = qe; public async Task GetAssetActivity(int assetActivityId, LoginDTO login, CancellationToken ct) { var items = await _qe.QueryAsync(login, AssetActivityQB.GET_ASSETACTIVITY, new { AssetActivityId = assetActivityId }, cancellationToken: ct).ConfigureAwait(false); return items.FirstOrDefault(); } public async Task> GetAssetActivityListByAsset(int assetId, LoginDTO login, CancellationToken ct) { return await _qe.QueryAsync(login, AssetActivityQB.GET_ASSETACTIVITY_LIST_BY_ASSET, new { AssetId = assetId }, cancellationToken: ct).ConfigureAwait(false); } public async Task SaveAssetActivity(AssetActivityDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _qe.ExecuteAsync(login, AssetActivityQB.SAVE_ASSETACTIVITY, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task UpdateAssetActivity(AssetActivityDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _qe.ExecuteAsync(login, AssetActivityQB.UPDATE_ASSETACTIVITY, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task DeleteAssetActivity(int assetActivityId, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _qe.ExecuteAsync(login, AssetActivityQB.DELETE_ASSETACTIVITY, new { AssetActivityId = assetActivityId }, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task> GetAssetActivityDueForScheduling(LoginDTO login, CancellationToken ct) { return await _qe.QueryAsync(login, AssetActivityQB.GET_ASSETACTIVITY_DUE_FOR_SCHEDULING, cancellationToken: ct).ConfigureAwait(false); } public async Task UpdateAssetActivityLastGeneratedTill(int assetActivityId, System.DateTime lastGeneratedTill, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _qe.ExecuteAsync(login, AssetActivityQB.UPDATE_ASSETACTIVITY_LASTGENERATEDTILL, new { AssetActivityId = assetActivityId, LastGeneratedTill = lastGeneratedTill }, tx, cancellationToken: ct).ConfigureAwait(false); } } }