72 lines
2.2 KiB
C#
72 lines
2.2 KiB
C#
|
|
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<IEnumerable<TapiContact>> 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<TapiContact>(sql.ToString(), dp);
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<TapiContact?> SearchByNumberAsync(string number)
|
||
|
|
{
|
||
|
|
await using var con = await OpenAsync("Tapi");
|
||
|
|
|
||
|
|
var result = await con.QueryFirstOrDefaultAsync<TapiContact>("""
|
||
|
|
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<IEnumerable<TapiContact>> GetAllAsync()
|
||
|
|
{
|
||
|
|
await using var con = await OpenAsync("Tapi");
|
||
|
|
|
||
|
|
return await con.QueryAsync<TapiContact>("""
|
||
|
|
SELECT
|
||
|
|
TD_ID
|
||
|
|
,TD_NAME
|
||
|
|
,TD_NUMBER
|
||
|
|
,TD_NUMBER_TAPI
|
||
|
|
,TD_MEDIUM
|
||
|
|
FROM dbo.CP_TAPI_DIRECTORY
|
||
|
|
""");
|
||
|
|
}
|
||
|
|
}
|