using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using ECPDAL.Meeting.DTOs; using ECPDAL.Meeting.Interfaces; using ECPDAL.Meeting.QueryBuilders; namespace ECPDAL.Meeting.Implementations; public class RecordingTranscriptDAL(IQueryExecutor _qe) : IRecordingTranscriptDAL { public async Task GetRecordingTranscriptAsync( int recordingTranscriptId, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync( login, RecordingTranscriptQB.GET_RECORDING_TRANSCRIPT, new { RecordingTranscriptId = recordingTranscriptId, login.DatabaseName }, cancellationToken: ct).ConfigureAwait(false); return rows.FirstOrDefault(); } public async Task> GetRecordingTranscriptsForObjectAsync( int objectTypeId, int objectId, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync( login, RecordingTranscriptQB.GET_RECORDING_TRANSCRIPTS_FOR_OBJECT, new { ObjectTypeId = objectTypeId, ObjectId = objectId, login.DatabaseName }, cancellationToken: ct).ConfigureAwait(false); return rows.ToList(); } public async Task SaveRecordingTranscriptAsync(RecordingTranscriptDTO dto, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, RecordingTranscriptQB.SAVE_RECORDING_TRANSCRIPT, dto, cancellationToken: ct).ConfigureAwait(false); return dto.RecordingTranscriptId; } public async Task MarkTranscribedAsync(int recordingTranscriptId, string transcriptText, int modifiedById, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, RecordingTranscriptQB.UPDATE_TRANSCRIBED, new { RecordingTranscriptId = recordingTranscriptId, TranscriptText = transcriptText, ModifiedById = modifiedById, ModifiedOn = DateTime.UtcNow, login.DatabaseName, }, cancellationToken: ct).ConfigureAwait(false); } public async Task MarkSummarizedAsync(int recordingTranscriptId, string summaryText, int modifiedById, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, RecordingTranscriptQB.UPDATE_SUMMARIZED, new { RecordingTranscriptId = recordingTranscriptId, SummaryText = summaryText, ModifiedById = modifiedById, ModifiedOn = DateTime.UtcNow, login.DatabaseName, }, cancellationToken: ct).ConfigureAwait(false); } public async Task MarkFailedAsync(int recordingTranscriptId, string failureReason, int modifiedById, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, RecordingTranscriptQB.UPDATE_FAILED, new { RecordingTranscriptId = recordingTranscriptId, FailureReason = failureReason, ModifiedById = modifiedById, ModifiedOn = DateTime.UtcNow, login.DatabaseName, }, cancellationToken: ct).ConfigureAwait(false); } public async Task DeleteRecordingTranscriptAsync(int recordingTranscriptId, int modifiedById, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, RecordingTranscriptQB.DELETE_RECORDING_TRANSCRIPT, new { RecordingTranscriptId = recordingTranscriptId, ModifiedById = modifiedById, ModifiedOn = DateTime.UtcNow, login.DatabaseName, }, cancellationToken: ct).ConfigureAwait(false); } }