Files
DbFirst/DbFirst.Infrastructure/Repositories/MassDataRepository.cs
OlgunR 95a388015a Remove GetAllAsync method from MassDataRepository
The GetAllAsync method, which returned all Massdata records, has been removed from the MassDataRepository class. No other changes were made in this commit.
2026-04-21 10:30:10 +02:00

67 lines
2.4 KiB
C#

using System.Data;
using DbFirst.Application.Repositories;
using DbFirst.Domain.Entities;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
namespace DbFirst.Infrastructure.Repositories;
public class MassDataRepository : IMassDataRepository
{
private readonly MassDataDbContext _db;
public MassDataRepository(MassDataDbContext db)
{
_db = db;
}
public async Task<int> GetCountAsync(CancellationToken cancellationToken = default)
{
return await _db.Massdata.AsNoTracking().CountAsync(cancellationToken);
}
public async Task<Massdata?> GetByCustomerNameAsync(string customerName, CancellationToken cancellationToken = default)
{
return await _db.Massdata.AsNoTracking()
.FirstOrDefaultAsync(x => x.CustomerName == customerName, cancellationToken);
}
public async Task<List<Massdata>> GetAllAsync(int? skip = null, int? take = null, CancellationToken cancellationToken = default)
{
var query = _db.Massdata.AsNoTracking().OrderBy(x => x.Id).AsQueryable();
if (skip.HasValue)
{
query = query.Skip(skip.Value);
}
if (take.HasValue)
{
query = query.Take(take.Value);
}
return await query.ToListAsync(cancellationToken);
}
public async Task<Massdata> UpsertByCustomerNameAsync(string customerName, decimal amount, bool statusFlag, string category, CancellationToken cancellationToken = default)
{
var customerParam = new SqlParameter("@CustomerName", SqlDbType.VarChar, 200) { Value = customerName };
var amountParam = new SqlParameter("@Amount", SqlDbType.Decimal) { Value = amount, Precision = 12, Scale = 2 };
var statusParam = new SqlParameter("@StatusFlag", SqlDbType.Bit) { Value = statusFlag };
var categoryParam = new SqlParameter("@Category", SqlDbType.VarChar, 100) { Value = category };
await _db.Database.ExecuteSqlRawAsync(
"EXEC dbo.PRMassdata_UpsertByCustomerName @CustomerName, @Amount, @StatusFlag, @Category",
parameters: new[] { customerParam, amountParam, statusParam, categoryParam },
cancellationToken: cancellationToken);
var updated = await GetByCustomerNameAsync(customerName, cancellationToken);
if (updated == null)
{
throw new InvalidOperationException("Upsert completed but record could not be loaded.");
}
return updated;
}
}