pet-companion-back/Repositories/PetRepository.cs

86 lines
2.5 KiB
C#

using Microsoft.EntityFrameworkCore;
using PetCompanion.Data;
using PetCompanion.Models;
namespace PetCompanion.Repositories
{
public class PetRepository
{
private readonly ApplicationDbContext context;
public PetRepository(ApplicationDbContext context)
{
this.context = context;
}
public IEnumerable<Pet> GetPetsByUserId(string userId)
{
return context.Pets
.Where(p => p.UserId == userId)
.Include(p => p.Stats)
.Include(p => p.Resources)
.Include(p => p.Inventory)
.Include(p => p.EquippedItemsList)
.ToList();
}
public Pet GetPetById(string petId, string userId)
{
return context.Pets
.Where(p => p.Id == petId && p.UserId == userId)
.Include(p => p.Stats)
.Include(p => p.Resources)
.Include(p => p.Inventory)
.Include(p => p.EquippedItemsList)
.FirstOrDefault();
}
public Pet CreatePet(Pet pet)
{
context.Pets.Add(pet);
context.SaveChanges();
return pet;
}
public Pet UpdatePet(Pet pet)
{
context.Pets.Update(pet);
if (pet.Inventory != null)
{
context.Inventories.Update(pet.Inventory);
}
context.SaveChanges();
return pet;
}
public Pet UpdatePetBasicAction(Pet pet)
{
context.Pets.Attach(pet);
context.Entry(pet).Property(p => p.PetBasicAction).IsModified = true;
context.Entry(pet).Property(p => p.BasicActionCooldown).IsModified = true;
context.SaveChanges();
return pet;
}
public Pet UpdatePetGatherAction(Pet pet)
{
context.Pets.Attach(pet);
context.Entry(pet).Property(p => p.PetGatherAction).IsModified = true;
context.Entry(pet).Property(p => p.GatherActionSince).IsModified = true;
context.SaveChanges();
return pet;
}
public Pet UpdatePetResources(Pet pet)
{
context.Pets.Attach(pet);
context.Entry(pet).Reference(p => p.Resources).IsModified = true;
context.Entry(pet).Property(p => p.GatherActionSince).IsModified = true;
context.SaveChanges();
return pet;
}
}
}