using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Newtonsoft.Json; using TMSDAL.DTO.AssessmentAssignment; using TMSDAL.Query.AssessmentAssignment; namespace TMSDAL.CustomCode.AssessmentAssignment { public class AssessmentAssignmentDAL : IAssessmentAssignmentDAL { private readonly IQueryExecutor _QueryExecutor; public AssessmentAssignmentDAL(IQueryExecutor QueryExecutor) { _QueryExecutor = QueryExecutor; } public async Task GetAssessmentAssignment(int assessmentAssignmentId, LoginDTO loginDTO, CancellationToken ct) { try { var result = await _QueryExecutor.QuerySingleAsync( loginDTO, AssessmentAssignmentQB.GET_ASSESSMENTASSIGNMENT, new { assessmentassignmentid = assessmentAssignmentId, tenantid = loginDTO.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task GetAssessmentAssignmentList(int employeeId, int assessmentId, LoginDTO loginDTO, CancellationToken ct) { try { var result = await _QueryExecutor.QueryAsync( loginDTO, AssessmentAssignmentQB.GET_ASSESSMENTASSIGNMENT_LIST, new { employeeid = employeeId, assessmentid = assessmentId, tenantid = loginDTO.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task SaveAssessmentAssignment(AssessmentAssignmentDTO dto, LoginDTO loginDTO, CancellationToken ct) { try { return await _QueryExecutor.ExecuteAsync( loginDTO, AssessmentAssignmentQB.SAVE_ASSESSMENTASSIGNMENT, dto, cancellationToken: ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task SkipAssessmentAssignment(SkipAssignmentDTO dto, LoginDTO loginDTO, CancellationToken ct) { try { return await _QueryExecutor.ExecuteAsync( loginDTO, AssessmentAssignmentQB.SKIP_ASSESSMENTASSIGNMENT, new { dto.AssessmentAssignmentId, dto.SkipReason, ResolvedOn = DateTime.UtcNow, ModifiedById = loginDTO.UserId, ModifiedOn = DateTime.UtcNow, TenantId = loginDTO.ClientId }, cancellationToken: ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task ResolveAssignmentOnAttempt(int assessmentId, int enrollmentId, int assessmentAttemptId, LoginDTO loginDTO, CancellationToken ct) { try { return await _QueryExecutor.ExecuteAsync( loginDTO, AssessmentAssignmentQB.RESOLVE_ASSESSMENTASSIGNMENT_ON_ATTEMPT, new { AssessmentId = assessmentId, EnrollmentId = enrollmentId, AssessmentAttemptId = assessmentAttemptId, ResolvedOn = DateTime.UtcNow, ModifiedById = loginDTO.UserId, ModifiedOn = DateTime.UtcNow, TenantId = loginDTO.ClientId }, cancellationToken: ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task SweepMissedAssignments(LoginDTO loginDTO, CancellationToken ct) { try { return await _QueryExecutor.ExecuteAsync( loginDTO, AssessmentAssignmentQB.SWEEP_MISSED_ASSESSMENTASSIGNMENT, new { ResolvedOn = DateTime.UtcNow, TenantId = loginDTO.ClientId }, cancellationToken: ct).ConfigureAwait(false); } catch (Exception) { throw; } } } }