using RecruitmentDAL.DTO.Career; using RecruitmentDAL.Query.Career; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Newtonsoft.Json; using System; using System.Threading; using System.Threading.Tasks; namespace RecruitmentDAL.CustomeCode.Career { public class CareerDAL : ICareerDAL { private readonly IQueryExecutor _QueryExecutor; public CareerDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } #region Get public async Task GetPublishedJobs(int FirstNumber, int MaxResult, LoginDTO LoginDTO, CancellationToken ct) { try { string sql = CareerQB.GET_PUBLISHED_JOBS; var parameters = new { TenantId = LoginDTO.ClientId, Offset = Math.Max(0, FirstNumber - 1), PageSize = MaxResult }; var result = await _QueryExecutor .QueryPagedAsync(LoginDTO, sql, parameters) .ConfigureAwait(false); return JsonConvert.SerializeObject(result); } catch { throw; } } public async Task GetPublishedJobDetail(int JobRequisitionId, LoginDTO LoginDTO, CancellationToken ct) { try { string sql = CareerQB.GET_PUBLISHED_JOB_DETAIL; var parameters = new { JobRequisitionId, TenantId = LoginDTO.ClientId }; PublicJobPostingDetailDTO result = await _QueryExecutor .QuerySingleAsync(LoginDTO, sql, parameters, cancellationToken: ct) .ConfigureAwait(false); return JsonConvert.SerializeObject(result); } catch { throw; } } public async Task GetPublishedRequisitionForApply(int JobRequisitionId, LoginDTO LoginDTO, CancellationToken ct) { try { string sql = CareerQB.GET_PUBLISHED_REQUISITION_FOR_APPLY; var parameters = new { JobRequisitionId, TenantId = LoginDTO.ClientId }; return await _QueryExecutor .QuerySingleAsync(LoginDTO, sql, parameters, cancellationToken: ct) .ConfigureAwait(false); } catch { throw; } } #endregion } }