using KoogleApp.Entities; using Microsoft.EntityFrameworkCore; namespace KoogleApp.Data.Repository { //public interface IPlayerExpenseRepository //{ // Task> GetByDataItemIdAsync(int playerId); // Task GetByIdAsync(int id); // Task CreateAsync(PlayerExpense position); // Task UpdateAsync(PlayerExpense position); // Task DeleteAsync(int id); // Task> CreateRangeAsync(List positions); //} //public class InMemoryPlayerExpenseRepository : IPlayerExpenseRepository //{ // private readonly List _positions; // private readonly SemaphoreSlim _lock = new(1, 1); // public InMemoryPlayerExpenseRepository(IPlayerRepository playerRepo) // { // // In echter Implementierung würde man eine gemeinsame Storage-Klasse nutzen // _positions = new List(); // } // public async Task> GetByDataItemIdAsync(int playerId) // { // await _lock.WaitAsync(); // try // { // return _positions.Where(p => p.PlayerId == playerId) // .OrderBy(p => p.CreatedAt) // .ToList(); // } // finally // { // _lock.Release(); // } // } // public async Task GetByIdAsync(int id) // { // await _lock.WaitAsync(); // try // { // return _positions.FirstOrDefault(p => p.Id == id); // } // finally // { // _lock.Release(); // } // } // public async Task CreateAsync(PlayerExpense position) // { // await _lock.WaitAsync(); // try // { // position.Id = _positions.Any() ? _positions.Max(p => p.Id) + 1 : 1; // _positions.Add(position); // return position; // } // finally // { // _lock.Release(); // } // } // public async Task UpdateAsync(PlayerExpense position) // { // await _lock.WaitAsync(); // try // { // var existing = _positions.FirstOrDefault(p => p.Id == position.Id); // if (existing == null) // throw new KeyNotFoundException($"Position with ID {position.Id} not found"); // existing.Name = position.Name; // //existing.Quantity = position.Quantity; // //existing.UnitPrice = position.UnitPrice; // //existing.Unit = position.Unit; // //existing.SortOrder = position.SortOrder; // return existing; // } // finally // { // _lock.Release(); // } // } // public async Task DeleteAsync(int id) // { // await _lock.WaitAsync(); // try // { // var position = _positions.FirstOrDefault(p => p.Id == id); // if (position == null) return false; // _positions.Remove(position); // return true; // } // finally // { // _lock.Release(); // } // } // public async Task> CreateRangeAsync(List positions) // { // await _lock.WaitAsync(); // try // { // foreach (var pos in positions) // { // pos.Id = _positions.Any() ? _positions.Max(p => p.Id) + 1 : 1; // _positions.Add(pos); // } // return positions; // } // finally // { // _lock.Release(); // } // } //} //public class PlayerExpenseRepository : IPlayerExpenseRepository //{ // private readonly IDbContextFactory _contextFactory; // private readonly ILogger _logger; // public PlayerExpenseRepository( // IDbContextFactory contextFactory, // ILogger logger) // { // _contextFactory = contextFactory; // _logger = logger; // } // public async Task> GetByDataItemIdAsync(int playerId) // { // await using var context = await _contextFactory.CreateDbContextAsync(); // return await context.PlayerExpenses // .Where(p => p.PlayerId == playerId) // .OrderBy(p => p.CreatedAt) // .ToListAsync(); // } // public async Task GetByIdAsync(int id) // { // await using var context = await _contextFactory.CreateDbContextAsync(); // return await context.PlayerExpenses.FindAsync(id); // } // public async Task CreateAsync(PlayerExpense position) // { // await using var context = await _contextFactory.CreateDbContextAsync(); // context.PlayerExpenses.Add(position); // await context.SaveChangesAsync(); // return position; // } // public async Task UpdateAsync(PlayerExpense position) // { // await using var context = await _contextFactory.CreateDbContextAsync(); // context.PlayerExpenses.Update(position); // await context.SaveChangesAsync(); // return position; // } // public async Task DeleteAsync(int id) // { // await using var context = await _contextFactory.CreateDbContextAsync(); // var position = await context.PlayerExpenses.FindAsync(id); // if (position == null) return false; // context.PlayerExpenses.Remove(position); // await context.SaveChangesAsync(); // return true; // } // public async Task> CreateRangeAsync(List positions) // { // await using var context = await _contextFactory.CreateDbContextAsync(); // context.PlayerExpenses.AddRange(positions); // await context.SaveChangesAsync(); // return positions; // } //} }