using Microsoft.EntityFrameworkCore; using System.Linq; using System.Collections.Generic; using Oqtane.Modules; namespace SZUAbsolventenverein.Module.BlackBoard.Repository { public interface IBlackBoardRepository { IEnumerable GetBlackBoards(int ModuleId); Models.BlackBoard GetBlackBoard(int BlackBoardId); Models.BlackBoard GetBlackBoard(int BlackBoardId, bool tracking); Models.BlackBoard AddBlackBoard(Models.BlackBoard BlackBoard); Models.BlackBoard UpdateBlackBoard(Models.BlackBoard BlackBoard); void DeleteBlackBoard(int BlackBoardId); } public class BlackBoardRepository : IBlackBoardRepository, ITransientService { private readonly IDbContextFactory _factory; public BlackBoardRepository(IDbContextFactory factory) { _factory = factory; } public IEnumerable GetBlackBoards(int ModuleId) { using var db = _factory.CreateDbContext(); return db.BlackBoard.Where(item => item.ModuleId == ModuleId).ToList(); } public Models.BlackBoard GetBlackBoard(int BlackBoardId) { return GetBlackBoard(BlackBoardId, true); } public Models.BlackBoard GetBlackBoard(int BlackBoardId, bool tracking) { using var db = _factory.CreateDbContext(); if (tracking) { return db.BlackBoard.Find(BlackBoardId); } else { return db.BlackBoard.AsNoTracking().FirstOrDefault(item => item.BlackBoardId == BlackBoardId); } } public Models.BlackBoard AddBlackBoard(Models.BlackBoard BlackBoard) { using var db = _factory.CreateDbContext(); db.BlackBoard.Add(BlackBoard); db.SaveChanges(); return BlackBoard; } public Models.BlackBoard UpdateBlackBoard(Models.BlackBoard BlackBoard) { using var db = _factory.CreateDbContext(); db.Entry(BlackBoard).State = EntityState.Modified; db.SaveChanges(); return BlackBoard; } public void DeleteBlackBoard(int BlackBoardId) { using var db = _factory.CreateDbContext(); Models.BlackBoard BlackBoard = db.BlackBoard.Find(BlackBoardId); db.BlackBoard.Remove(BlackBoard); db.SaveChanges(); } } }