using Microsoft.EntityFrameworkCore; using System.Linq; using System.Collections.Generic; using Oqtane.Modules; namespace SZUAbsolventenverein.Module.HallOfFame.Repository { public interface IHallOfFameRepository { IEnumerable GetHallOfFames(int ModuleId); Models.HallOfFame GetHallOfFame(int HallOfFameId); Models.HallOfFame GetHallOfFame(int HallOfFameId, bool tracking); Models.HallOfFame AddHallOfFame(Models.HallOfFame HallOfFame); Models.HallOfFame UpdateHallOfFame(Models.HallOfFame HallOfFame); void DeleteHallOfFame(int HallOfFameId); } public class HallOfFameRepository : IHallOfFameRepository, ITransientService { private readonly IDbContextFactory _factory; public HallOfFameRepository(IDbContextFactory factory) { _factory = factory; } public IEnumerable GetHallOfFames(int ModuleId) { using var db = _factory.CreateDbContext(); return db.HallOfFame.Where(item => item.ModuleId == ModuleId).ToList(); } public Models.HallOfFame GetHallOfFame(int HallOfFameId) { return GetHallOfFame(HallOfFameId, true); } public Models.HallOfFame GetHallOfFame(int HallOfFameId, bool tracking) { using var db = _factory.CreateDbContext(); if (tracking) { return db.HallOfFame.Find(HallOfFameId); } else { return db.HallOfFame.AsNoTracking().FirstOrDefault(item => item.HallOfFameId == HallOfFameId); } } public Models.HallOfFame AddHallOfFame(Models.HallOfFame HallOfFame) { using var db = _factory.CreateDbContext(); db.HallOfFame.Add(HallOfFame); db.SaveChanges(); return HallOfFame; } public Models.HallOfFame UpdateHallOfFame(Models.HallOfFame HallOfFame) { using var db = _factory.CreateDbContext(); db.Entry(HallOfFame).State = EntityState.Modified; db.SaveChanges(); return HallOfFame; } public void DeleteHallOfFame(int HallOfFameId) { using var db = _factory.CreateDbContext(); Models.HallOfFame HallOfFame = db.HallOfFame.Find(HallOfFameId); db.HallOfFame.Remove(HallOfFame); db.SaveChanges(); } } }