using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using KmsDAL.DTO.KmGovernance; using KmsDAL.Query.KmGovernance; using Newtonsoft.Json; namespace KmsDAL.CustomCode.KmGovernance { public class KmGovernanceDAL : IKmGovernanceDAL { private readonly IQueryExecutor _qe; public KmGovernanceDAL(IQueryExecutor qe) => _qe = qe; public async Task InsertGovernanceTransition(int artifactId, byte? fromState, byte toState, string? notes, string? rejectionReason, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync(login, KmGovernanceQB.INSERT_GOVERNANCE_TRANSITION, new { ArtifactId = artifactId, FromState = fromState, ToState = toState, TransitionedById = login.UserId, Notes = notes, RejectionReason = rejectionReason, CreatedById = login.UserId }, cancellationToken: ct); } public async Task GetGovernanceHistory(int artifactId, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, KmGovernanceQB.GET_GOVERNANCE_HISTORY, new { ArtifactId = artifactId }, cancellationToken: ct); return JsonConvert.SerializeObject(result); } public async Task InsertArtifactVersion(int artifactId, short versionNumber, string snapshotJson, byte governanceState, string? changeSummary, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync(login, KmGovernanceQB.INSERT_ARTIFACT_VERSION, new { ArtifactId = artifactId, VersionNumber = versionNumber, SnapshotJson = snapshotJson, GovernanceState = governanceState, ChangeSummary = changeSummary, CreatedById = login.UserId }, cancellationToken: ct); } public async Task IncrementArtifactVersion(int artifactId, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync(login, KmGovernanceQB.INCREMENT_ARTIFACT_VERSION, new { ArtifactId = artifactId, ModifiedById = login.UserId, TenantId = login.ClientId }, cancellationToken: ct); } } }