using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.Resource.Response; using GB5Shared.Validation; using Newtonsoft.Json; using SkillManagementDAL.DTO.SkillLevel; using SkillManagementDAL.Query.SkillLevel; namespace SkillManagementDAL.CustomCode.SkillLevel { public class SkillLevelDAL : ISkillLevelDAL { private readonly IQueryExecutor _qe; private readonly IValidation _Validation; public SkillLevelDAL(IQueryExecutor qe, IValidation validation) { _qe = qe; _Validation = validation; } public async Task GetSelectListSkillLevel(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryWithCriteriaAsync( login, SkillLevelQB.GET_SELECT_LIST, new { TenantId = login.ClientId }, criteriaDTO, ct); return JsonConvert.SerializeObject(result); } public async Task GetById(int sLevelId, int skillId, LoginDTO login, CancellationToken ct) { var result = await _qe.QuerySingleAsync( login, SkillLevelQB.GET_BY_ID, new { SLevelId = sLevelId, SkillId = skillId }); return JsonConvert.SerializeObject(result); } public async Task GetBySkill(int skillId, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, SkillLevelQB.GET_BY_SKILL_TENANTED, new { SkillId = skillId, TenantId = login.ClientId }); return JsonConvert.SerializeObject(result); } public async Task Insert(SkillLevelDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, SkillLevelQB.INSERT, dto, cancellationToken: ct); public async Task Update(SkillLevelDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, SkillLevelQB.UPDATE, dto, cancellationToken: ct); public async Task Delete(int sLevelId, int skillId, LoginDTO login) { try { var result = await _qe.ExecuteAsync( login, SkillLevelQB.DELETE_BY_ID, new { SLevelId = sLevelId, SkillId = skillId }); return result > 0 ? SuccessResponse.DeleteSuccessMessage : ErrorResponse.DeleteNotFoundMessage; } catch (Exception ex) { var error = await _Validation.HandleException(ex, ErrorResponse.DeleteErrorMessage); throw new Exception(error); } } } }