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.SkillGapLink; using TMSDAL.Query.SkillGapLink; namespace TMSDAL.CustomCode.SkillGapLink { public class SkillGapLinkDAL : ISkillGapLinkDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IValidation _Validation; public SkillGapLinkDAL(IQueryExecutor queryExecutor, IValidation validation) { _QueryExecutor = queryExecutor; _Validation = validation; } public async Task GetSkillGapLink(int skillGapLinkId, LoginDTO loginDTO) { try { var result = await _QueryExecutor.QuerySingleAsync( loginDTO, SkillGapLinkQB.GET_SKILLGAPLINK, new { SkillGapLinkId = skillGapLinkId, TenantId = loginDTO.ClientId }); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task GetSkillGapLinkList(CriteriaDTO criteriaDTO, LoginDTO loginDTO) { try { var result = await _QueryExecutor.QueryWithCriteriaAsync( loginDTO, SkillGapLinkQB.GET_SKILLGAPLINK_LIST, new { TenantId = loginDTO.ClientId }, criteriaDTO); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task GetSelectListSkillGapLink(CriteriaDTO criteriaDTO, LoginDTO loginDTO) { try { var result = await _QueryExecutor.QueryWithCriteriaAsync( loginDTO, SkillGapLinkQB.GET_SELECT_LIST_SKILLGAPLINK, new { TenantId = loginDTO.ClientId }, criteriaDTO); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task SaveSkillGapLink(SkillGapLinkDTO dto, LoginDTO loginDTO) { try { return await _QueryExecutor.ExecuteAsync(loginDTO, SkillGapLinkQB.SAVE_SKILLGAPLINK, dto); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.SaveErrorMessage); throw new Exception(error); } } public async Task UpdateSkillGapLink(SkillGapLinkDTO dto, LoginDTO loginDTO) { try { return await _QueryExecutor.ExecuteAsync(loginDTO, SkillGapLinkQB.UPDATE_SKILLGAPLINK, dto); } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.UpdateErrorMessage); throw new Exception(error); } } public async Task DeleteSkillGapLink(int skillGapLinkId, LoginDTO loginDTO) { try { await _QueryExecutor.ExecuteAsync(loginDTO, SkillGapLinkQB.DELETE_SKILLGAPLINK, new { SkillGapLinkId = skillGapLinkId, TenantId = loginDTO.ClientId }); return SuccessResponse.DeleteSuccessMessage; } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.DeleteErrorMessage); throw new Exception(error); } } public async Task FindActiveLinkId(int employeeId, int skillId, LoginDTO loginDTO, CancellationToken ct) { try { var parameters = new { EmployeeId = employeeId, SkillId = skillId, TenantId = loginDTO.ClientId }; var result = await _QueryExecutor.QueryAsync(loginDTO, SkillGapLinkQB.FIND_ACTIVE_LINK, parameters, cancellationToken: ct); return result.FirstOrDefault(); } catch (Exception) { throw; } } } }