pet-companion-back/Repositories/PetInventoryRepository.cs

72 lines
2.0 KiB
C#

using Microsoft.EntityFrameworkCore;
using PetCompanion.Data;
using PetCompanion.Models;
namespace PetCompanion.Repositories
{
public class PetInventoryRepository
{
private readonly ApplicationDbContext _context;
public PetInventoryRepository(ApplicationDbContext context)
{
_context = context;
}
public Inventory GetPetInventory(string petId)
{
return _context.Inventories
.FirstOrDefault(i => i.PetId == petId);
}
public Dictionary<ItemEquipTarget, int> GetEquippedItems(string petId)
{
var equippedItems = _context.EquippedItems
.Where(e => e.PetId == petId)
.ToDictionary(e => e.EquipTarget, e => e.GameItemId);
return equippedItems;
}
public void UpdateEquippedItems(string petId, Dictionary<ItemEquipTarget, int> equippedItems)
{
var existingItems = _context.EquippedItems
.Where(e => e.PetId == petId)
.ToList();
_context.EquippedItems.RemoveRange(existingItems);
var newEquippedItems = equippedItems.Select(kvp => new EquippedItem
{
PetId = petId,
EquipTarget = kvp.Key,
GameItemId = kvp.Value
});
_context.EquippedItems.AddRangeAsync(newEquippedItems);
_context.SaveChangesAsync();
}
public Inventory SavePetInventory(Inventory inventory)
{
if (_context.Inventories.Any(i => i.PetId == inventory.PetId))
{
_context.Inventories.Update(inventory);
}
else
{
_context.Inventories.Add(inventory);
}
_context.SaveChanges();
return inventory;
}
public Inventory UpdatePetInventory(Inventory inventory)
{
_context.Inventories.Update(inventory);
_context.SaveChanges();
return inventory;
}
}
}