using FrameworkDAL.DTO.Testing; using FrameworkDAL.Query.TestData; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.PickListGenerator; using GB5Shared.QueryExecutor; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.TestData { public class TestDataDAL : ITestDataDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IPickListExecutor _PickListExecutor; public TestDataDAL(IQueryExecutor QueryExecutor, IPickListExecutor PickListExecutor) { _QueryExecutor = QueryExecutor; _PickListExecutor = PickListExecutor; } public async Task> GetSelectListTestData( int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { string sql = TestDataQB.GET_SELECTLIST_TESTDATA_BASE; sql = await ApplyTestDataCriteria(sql, CriteriaDTO, LoginDTO); sql = await ApplyTestDataCriteria(sql, LoginDTO.UserCriteriaDTO, LoginDTO); sql += TestDataQB.GET_SELECTLIST_TESTDATA_PAGING_SUFFIX; var parameter = new { firstnumber = FirstNumber, maxresult = MaxResult }; return await _QueryExecutor.QueryAsync(LoginDTO, sql, parameter); } catch (Exception) { throw; } } public async Task GetSelectListTestDataCount(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { string sql = TestDataQB.GET_SELECTLIST_TESTDATA_COUNT_BASE; sql = await ApplyTestDataCriteria(sql, CriteriaDTO, LoginDTO); sql = await ApplyTestDataCriteria(sql, LoginDTO.UserCriteriaDTO, LoginDTO); return await _QueryExecutor.ExecuteScalarAsync(LoginDTO, sql, null); } catch (Exception) { throw; } } private async Task ApplyTestDataCriteria(string sql, CriteriaDTO criteriaDTO, LoginDTO loginDTO) { string[,] criteriaMap = new string[,] { { "Id", "TESTDATAID" }, { "Name", "TESTDATANAME" } }; return await _PickListExecutor.ApplyCriteria(sql, criteriaMap, criteriaDTO, loginDTO); } } }