using FrameworkDAL.DTO.Testing; using FrameworkDAL.Query.TestCase; 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.TestCase { public class TestCaseDAL : ITestCaseDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IPickListExecutor _PickListExecutor; public TestCaseDAL(IQueryExecutor QueryExecutor, IPickListExecutor PickListExecutor) { _QueryExecutor = QueryExecutor; _PickListExecutor = PickListExecutor; } public async Task> GetSelectListTestCase( int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { string sql = TestCaseQB.GET_SELECTLIST_TESTCASE_BASE; sql = await ApplyTestCaseCriteria(sql, CriteriaDTO, LoginDTO); sql = await ApplyTestCaseCriteria(sql, LoginDTO.UserCriteriaDTO, LoginDTO); sql += TestCaseQB.GET_SELECTLIST_TESTCASE_PAGING_SUFFIX; var parameter = new { firstnumber = FirstNumber, maxresult = MaxResult }; return await _QueryExecutor.QueryAsync(LoginDTO, sql, parameter); } catch (Exception) { throw; } } public async Task GetSelectListTestCaseCount(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { string sql = TestCaseQB.GET_SELECTLIST_TESTCASE_COUNT_BASE; sql = await ApplyTestCaseCriteria(sql, CriteriaDTO, LoginDTO); sql = await ApplyTestCaseCriteria(sql, LoginDTO.UserCriteriaDTO, LoginDTO); return await _QueryExecutor.ExecuteScalarAsync(LoginDTO, sql, null); } catch (Exception) { throw; } } private async Task ApplyTestCaseCriteria(string sql, CriteriaDTO criteriaDTO, LoginDTO loginDTO) { string[,] criteriaMap = new string[,] { { "Id", "TESTCASEID" }, { "Name", "TESTCASENAME" } }; return await _PickListExecutor.ApplyCriteria(sql, criteriaMap, criteriaDTO, loginDTO); } } }