using Microsoft.EntityFrameworkCore; using System.Linq; using System.Collections.Generic; using Oqtane.Modules; using SZUAbsolventenverein.Module.AdminModules.Repository; using SZUAbsolventenverein.Module.ReportSystem.Models; namespace SZUAbsolventenverein.Module.ReportSystem.Repository { public interface IReportingRepository { IEnumerable GetReportings(); Reporting GetReporting(int ReportingID); Reporting GetReporting(int ReportingID, bool tracking); Reporting AddReporting(Reporting Reporting); Reporting UpdateReporting(Reporting Reporting); void DeleteReporting(int ReportingID); } public class ReportingRepository : IReportingRepository, ITransientService { private readonly IDbContextFactory _factory; public ReportingRepository(IDbContextFactory factory) { _factory = factory; } public IEnumerable GetReportings() { using var db = _factory.CreateDbContext(); return db.Reportings.ToList(); } public Reporting GetReporting(int ReportingID) { return GetReporting(ReportingID, true); } public Reporting GetReporting(int ReportingID, bool tracking) { using var db = _factory.CreateDbContext(); if (tracking) { return db.Reportings.Find(ReportingID); } else { return db.Reportings.AsNoTracking().FirstOrDefault(item => item.ReportingID == ReportingID); } } public Reporting AddReporting(Reporting Reporting) { using var db = _factory.CreateDbContext(); db.Reportings.Add(Reporting); db.SaveChanges(); return Reporting; } public Reporting UpdateReporting(Reporting Reporting) { using var db = _factory.CreateDbContext(); db.Entry(Reporting).State = EntityState.Modified; db.SaveChanges(); return Reporting; } public void DeleteReporting(int ReportingID) { using var db = _factory.CreateDbContext(); var Reporting = db.Reportings.Find(ReportingID); db.Reportings.Remove(Reporting); db.SaveChanges(); } } }