using MaintenanceDAL.DTO.ActivityMaterial; using MaintenanceDAL.Query.ActivityMaterial; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace MaintenanceDAL.CustomCode.ActivityMaterial { public class ActivityMaterialDAL : IActivityMaterialDAL { private readonly IQueryExecutor _qe; public ActivityMaterialDAL(IQueryExecutor qe) => _qe = qe; public async Task GetActivityMaterial(int activityMaterialId, LoginDTO login, CancellationToken ct) { var items = await _qe.QueryAsync(login, ActivityMaterialQB.GET_ACTIVITYMATERIAL, new { ActivityMaterialId = activityMaterialId }, cancellationToken: ct).ConfigureAwait(false); return items.FirstOrDefault(); } public async Task> GetActivityMaterialListByActivity(int activityId, LoginDTO login, CancellationToken ct) { return await _qe.QueryAsync(login, ActivityMaterialQB.GET_ACTIVITYMATERIAL_LIST_BY_ACTIVITY, new { ActivityId = activityId }, cancellationToken: ct).ConfigureAwait(false); } public async Task SaveActivityMaterial(ActivityMaterialDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.ActivityMaterialCreatedOn = DateTime.UtcNow; dto.ActivityMaterialCreatedById = login.UserId; dto.ActivityMaterialModifiedOn = DateTime.UtcNow; dto.ActivityMaterialModifiedById = login.UserId; await _qe.ExecuteAsync(login, ActivityMaterialQB.SAVE_ACTIVITYMATERIAL, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task UpdateActivityMaterial(ActivityMaterialDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.ActivityMaterialModifiedOn = DateTime.UtcNow; dto.ActivityMaterialModifiedById = login.UserId; await _qe.ExecuteAsync(login, ActivityMaterialQB.UPDATE_ACTIVITYMATERIAL, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task DeleteActivityMaterial(int activityMaterialId, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _qe.ExecuteAsync(login, ActivityMaterialQB.DELETE_ACTIVITYMATERIAL, new { ActivityMaterialId = activityMaterialId }, tx, cancellationToken: ct).ConfigureAwait(false); } } }