C sharp API for collections QA
public sealed record QaScoreRequest(
string AccountNumber,
string AgentId,
int Score,
string Category,
DateTimeOffset CallDateUtc);
[ApiController]
[Route("api/qa-scores")]
public class QaScoresController : ControllerBase
{
private readonly QaScoreService _service;
private readonly ILogger<QaScoresController> _logger;
public QaScoresController(
QaScoreService service,
ILogger<QaScoresController> logger)
{
_service = service;
_logger = logger;
}
[HttpPost]
public async Task<IActionResult> Create(QaScoreRequest request)
{
if (!ModelState.IsValid)
{
return ValidationProblem(ModelState);
}
await _service.StoreAsync(request);
return CreatedAtAction(nameof(GetByAccount),
new { accountNumber = request.AccountNumber }, null);
}
}
Repository pattern with Dapper
public sealed class QaScoreRepository
{
private readonly IDbConnection _connection;
public QaScoreRepository(IDbConnection connection)
{
_connection = connection;
}
public Task<int> InsertAsync(QaScoreEntity entity)
{
const string sql = @"
INSERT INTO QaScores (
AccountNumber,
AgentId,
Score,
Category,
CallDateUtc,
CreatedUtc)
VALUES (
@AccountNumber,
@AgentId,
@Score,
@Category,
@CallDateUtc,
SYSUTCDATETIME());";
return _connection.ExecuteAsync(sql, entity);
}
}