using FrameworkDAL.DTO.Jobdefine; using FrameworkDAL.Query.JobDefine; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.PickListGenerator; using GB5Shared.QueryExecutor; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.JobDefine { public class JobDefineDAL : IJobDefineDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IPickListExecutor _PickListExecutor; public JobDefineDAL(IQueryExecutor QueryExecutor, IPickListExecutor PickListExecutor) { _QueryExecutor = QueryExecutor; _PickListExecutor = PickListExecutor; } public async Task> GetSelectListJobDefine( int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { string sql = JobDefineQB.GET_SELECTLIST_JOBDEFINE_BASE; sql = await ApplyJobDefineCriteria(sql, CriteriaDTO, LoginDTO); sql = await ApplyJobDefineCriteria(sql, LoginDTO.UserCriteriaDTO, LoginDTO); sql += JobDefineQB.GET_SELECTLIST_JOBDEFINE_PAGING_SUFFIX; var parameter = new { firstnumber = FirstNumber, maxresult = MaxResult }; return await _QueryExecutor.QueryAsync(LoginDTO, sql, parameter); } catch (Exception) { throw; } } public async Task GetSelectListJobDefineCount(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { string sql = JobDefineQB.GET_SELECTLIST_JOBDEFINE_COUNT_BASE; sql = await ApplyJobDefineCriteria(sql, CriteriaDTO, LoginDTO); sql = await ApplyJobDefineCriteria(sql, LoginDTO.UserCriteriaDTO, LoginDTO); return await _QueryExecutor.ExecuteScalarAsync(LoginDTO, sql, null); } catch (Exception) { throw; } } private async Task ApplyJobDefineCriteria(string sql, CriteriaDTO criteriaDTO, LoginDTO loginDTO) { string[,] criteriaMap = new string[,] { { "Id", "JOBID" }, { "Name", "JOBNAME" } }; return await _PickListExecutor.ApplyCriteria(sql, criteriaMap, criteriaDTO, loginDTO); } } }