using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.QueryExecutor; using OKRDAL.DTOs; using OKRDAL.Interfaces; using OKRDAL.QueryBuilders; namespace OKRDAL.Implementations; public class OKRPerspectiveDAL : IOKRPerspectiveDAL { private readonly IQueryExecutor _qe; private readonly AutoNumber _autoNumber; public OKRPerspectiveDAL(IQueryExecutor qe, AutoNumber autoNumber) { _qe = qe; _autoNumber = autoNumber; } public async Task> GetPerspectiveListAsync(LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, OKRPerspectiveQB.GET_PERSPECTIVE_LIST, new { TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task SavePerspectiveAsync(OKRPerspectiveDTO dto, LoginDTO login, CancellationToken ct) { if (dto.PerspectiveId == 0) { var auto = await _autoNumber.GetAutoNumber(1, "OKRPERSPECTIVE", login).ConfigureAwait(false); dto.PerspectiveId = auto.StartNumber; dto.TenantId = login.ClientId; await _qe.ExecuteAsync(login, OKRPerspectiveQB.INSERT_PERSPECTIVE, dto, cancellationToken: ct).ConfigureAwait(false); return dto.PerspectiveId; } await _qe.ExecuteAsync(login, OKRPerspectiveQB.UPDATE_PERSPECTIVE, dto, cancellationToken: ct).ConfigureAwait(false); return dto.PerspectiveId; } }