using Microsoft.EntityFrameworkCore; using pet_companion_api.Data; using pet_companion_api.Models; namespace pet_companion_api.Repositories { public class PetRepository { private readonly ApplicationDbContext context; public PetRepository(ApplicationDbContext context) { this.context = context; } public IEnumerable GetPetsByUserId(string userId) { return context.Pets .Where(p => p.UserId == userId) .Include(p => p.Stats) .Include(p => p.Resources) .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) .FirstOrDefault(); } public Pet CreatePet(Pet pet) { context.Pets.Add(pet); context.SaveChanges(); return pet; } public Pet UpdatePet(Pet pet) { context.Pets.Update(pet); 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; } } }