using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.Resource.Response; using GB5Shared.Validation; using Newtonsoft.Json; using TMSDAL.DTO.Evaluation; using TMSDAL.DTO.EvaluationInstance; using TMSDAL.DTO.EvaluationResponse; using TMSDAL.Query.EvaluationInstance; using TMSDAL.Query.EvaluationResponse; namespace TMSDAL.CustomCode.EvaluationResponse { public class EvaluationResponseDAL : IEvaluationResponseDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IValidation _Validation; public EvaluationResponseDAL(IQueryExecutor queryExecutor, IValidation validation) { _QueryExecutor = queryExecutor; _Validation = validation; } public async Task GetEvaluationResponse(int evaluationResponseId, LoginDTO loginDTO) { try { var result = await _QueryExecutor.QuerySingleAsync( loginDTO, EvaluationResponseQB.GET_EVALUATIONRESPONSE, new { EvaluationResponseId = evaluationResponseId, TenantId = loginDTO.ClientId }); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task GetEvaluationResponseList(int evaluationInstanceId, LoginDTO loginDTO) { try { var result = await _QueryExecutor.QueryAsync( loginDTO, EvaluationResponseQB.GET_EVALUATIONRESPONSE_LIST, new { EvaluationInstanceId = evaluationInstanceId, TenantId = loginDTO.ClientId }); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task SaveEvaluationResponse(EvaluationResponseDTO dto, LoginDTO loginDTO) { try { return await _QueryExecutor.ExecuteAsync( loginDTO, EvaluationResponseQB.SAVE_EVALUATIONRESPONSE, dto); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.SaveErrorMessage); throw new Exception(error); } } // Called internally after save to mark instance as Completed public async Task UpdateEvaluationInstanceStatus(EvaluationInstanceDTO dto, LoginDTO loginDTO) { try { return await _QueryExecutor.ExecuteAsync( loginDTO, EvaluationInstanceQB.UPDATE_EVALUATIONINSTANCE_STATUS, dto); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.UpdateErrorMessage); throw new Exception(error); } } } }