using System.Text; using CPATapi.Server.Interfaces; using CPATapi.Server.Models; using Dapper; namespace CPATapi.Server.Repository; internal class TapiDirectoryRepository(IConfiguration config) : Repository(config), ITapiDirectoryRepository { public async Task> SearchAsync(string[] args) { await using var con = await OpenAsync("Tapi"); var sql = new StringBuilder(""" SELECT TOP 10 TD_ID, TD_NAME, TD_NUMBER, TD_NUMBER_TAPI, TD_MEDIUM FROM dbo.CP_TAPI_DIRECTORY WHERE """); var first = true; var dp = new DynamicParameters(); for (var i = 1; i <= args.Length; i++) { if (!first) { sql.AppendLine("AND"); } first = false; sql.AppendLine($"(TD_NAME LIKE @s{i} OR"); sql.AppendLine($" TD_NUMBER_TAPI LIKE @s{i})"); dp.Add($"s{i}", $"%{args[i-1]}%"); } return await con.QueryAsync(sql.ToString(), dp); } public async Task SearchByNumberAsync(string number) { await using var con = await OpenAsync("Tapi"); var result = await con.QueryFirstOrDefaultAsync(""" SELECT TD_ID ,TD_NAME ,TD_NUMBER ,TD_NUMBER_TAPI ,TD_MEDIUM FROM dbo.CP_TAPI_DIRECTORY WHERE TD_NUMBER_TAPI LIKE @number """, new {number}); return result; } public async Task> GetAllAsync() { await using var con = await OpenAsync("Tapi"); return await con.QueryAsync(""" SELECT TD_ID ,TD_NAME ,TD_NUMBER ,TD_NUMBER_TAPI ,TD_MEDIUM FROM dbo.CP_TAPI_DIRECTORY """); } }