72 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|