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.AssessmentPaper; using TMSDAL.Query.Assessment; using TMSDAL.Query.AssessmentPaper; namespace TMSDAL.CustomCode.AssessmentPaper { public class AssessmentPaperDAL : IAssessmentPaperDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IValidation _Validation; public AssessmentPaperDAL(IQueryExecutor queryExecutor, IValidation validation) { _QueryExecutor = queryExecutor; _Validation = validation; } // ===================================================== // GET SINGLE // ===================================================== public async Task GetAssessmentPaper(int assessmentPaperId, LoginDTO loginDTO) { try { var parameters = new { AssessmentPaperId = assessmentPaperId }; var result = await _QueryExecutor.QuerySingleAsync( loginDTO, AssessmentPaperQB.GET_ASSESSMENTPAPER, parameters); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } // ===================================================== // GET LIST // ===================================================== public async Task GetAssessmentPaperList(LoginDTO loginDTO) { try { var parameters = new { TenantId = loginDTO.ClientId }; var result = await _QueryExecutor.QueryAsync( loginDTO, AssessmentPaperQB.GET_ASSESSMENTPAPER_LIST, parameters); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } // ===================================================== // GET SELECTLIST — Criteria Based // ===================================================== public async Task GetSelectListAssessmentPaper(CriteriaDTO criteriaDTO, LoginDTO loginDTO) { var result = await _QueryExecutor.QueryWithCriteriaAsync( loginDTO, AssessmentPaperQB.GET_SELECTLIST_ASSESSMENTPAPER, new { TenantId = loginDTO.ClientId }, criteriaDTO); return JsonConvert.SerializeObject(result); } // ===================================================== // SAVE // ===================================================== public async Task SaveAssessmentPaper(AssessmentPaperDTO dto, LoginDTO loginDTO) { try { return await _QueryExecutor.ExecuteAsync( loginDTO, AssessmentPaperQB.SAVE_ASSESSMENTPAPER, dto); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.SaveErrorMessage); throw new Exception(error); } } // ===================================================== // UPDATE // ===================================================== public async Task UpdateAssessmentPaper(AssessmentPaperDTO dto, LoginDTO loginDTO) { try { return await _QueryExecutor.ExecuteAsync( loginDTO, AssessmentPaperQB.UPDATE_ASSESSMENTPAPER, dto); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.UpdateErrorMessage); throw new Exception(error); } } // ===================================================== // DELETE // ===================================================== public async Task DeleteAssessmentPaper(int assessmentPaperId, LoginDTO loginDTO) { try { var parameters = new { AssessmentPaperId = assessmentPaperId }; int rowsAffected = await _QueryExecutor.ExecuteAsync( loginDTO, AssessmentPaperQB.DELETE_ASSESSMENTPAPER, parameters); return rowsAffected > 0 ? SuccessResponse.DeleteSuccessMessage : ErrorResponse.DeleteNotFoundMessage; } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.DeleteErrorMessage); throw new Exception(error); } } } }