using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.Resource.Response; using GB5Shared.Validation; using Newtonsoft.Json; using TMSDAL.DTO.TrainingCompletion; using TMSDAL.DTO.TrainingEnrollment; using TMSDAL.Query.AssessmentPaper; using TMSDAL.Query.TrainingCompletion; using TMSDAL.Query.TrainingEnrollment; namespace TMSDAL.CustomCode.TrainingCompletion { public class TrainingCompletionDAL : ITrainingCompletionDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IValidation _Validation; public TrainingCompletionDAL(IQueryExecutor queryExecutor, IValidation validation) { _QueryExecutor = queryExecutor; _Validation = validation; } public async Task GetTrainingCompletion(int completionId, LoginDTO loginDTO) { try { var parameters = new { TRAININGCOMPLETIONID = completionId, TenantId = loginDTO.ClientId }; return await _QueryExecutor.QuerySingleAsync(loginDTO, TrainingCompletionQB.GET_COMPLETION, parameters); } catch (Exception) { throw; } } public async Task GetCompletionByEnrollment(int enrollmentId, LoginDTO loginDTO) { try { var parameters = new { EnrollmentId = enrollmentId, TenantId = loginDTO.ClientId }; return await _QueryExecutor.QuerySingleAsync(loginDTO, TrainingCompletionQB.GET_COMPLETION_BY_ENROLLMENT, parameters); } catch (Exception) { throw; } } public async Task GetSelectList(CriteriaDTO criteriaDTO, LoginDTO loginDTO, CancellationToken ct) { var result = await _QueryExecutor.QueryWithCriteriaAsync( loginDTO, TrainingCompletionQB.GET_SELECT_LIST, new { TenantId = loginDTO.ClientId }, criteriaDTO, ct); return JsonConvert.SerializeObject(result); } public async Task SaveTrainingCompletion(TrainingCompletionDTO dto, LoginDTO loginDTO) { try { return await _QueryExecutor.ExecuteAsync(loginDTO, TrainingCompletionQB.SAVE_COMPLETION, dto); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.SaveErrorMessage); throw new Exception(error); } } public async Task UpdateTrainingCompletion(TrainingCompletionDTO dto, LoginDTO loginDTO) { try { return await _QueryExecutor.ExecuteAsync(loginDTO, TrainingCompletionQB.UPDATE_COMPLETION, dto); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.UpdateErrorMessage); throw new Exception(error); } } public async Task GetTrainingCompletionList(LoginDTO loginDTO) { try { var parameters = new { TenantId = loginDTO.ClientId }; var result = await _QueryExecutor.QueryAsync(loginDTO, TrainingCompletionQB.GET_TRANINING_COMPLETION_LIST, parameters); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task SaveCompletionBulk(IEnumerable records, LoginDTO loginDTO) { try { await _QueryExecutor.BulkInsertAsync(loginDTO, TrainingCompletionQB.BULK_INSERT_COMPLETION, records); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.SaveErrorMessage); throw new Exception(error); } } public async Task UpdateCompletionBulk(IEnumerable records, LoginDTO loginDTO) { try { foreach (var record in records) await _QueryExecutor.ExecuteAsync(loginDTO, TrainingCompletionQB.BULK_UPDATE_COMPLETION, record); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.UpdateErrorMessage); throw new Exception(error); } } } }