using Microsoft.EntityFrameworkCore; using System.Linq; using System.Collections.Generic; using Oqtane.Modules; using SZUAbsolventenverein.Module.EventRegistration.Models; namespace SZUAbsolventenverein.Module.EventRegistration.Repository { public class ResponseRepository : IResponseRepository, ITransientService { private readonly IDbContextFactory _factory; public ResponseRepository(IDbContextFactory factory) { _factory = factory; } public IEnumerable GetResponses(int ModuleId) { using var db = _factory.CreateDbContext(); return db.Response.Where(item => item.ModuleId == ModuleId).ToList(); } public IEnumerable GetResponses(int EventId, int ModuleId) { using var db = _factory.CreateDbContext(); return db.Response.Where(item => item.ModuleId == ModuleId && item.EventRegistrationId == EventId).ToList(); } public Response GetResponse(int EventRegistrationId) { return GetResponse(EventRegistrationId, true); } public Response GetResponse(int EventRegistrationId, bool tracking) { using var db = _factory.CreateDbContext(); if (tracking) { return db.Response.Find(EventRegistrationId); } else { return db.Response.AsNoTracking().FirstOrDefault(item => item.EventRegistrationId == EventRegistrationId); } } public Response GetResponse(int EventId, int OwnerId) { return GetResponse(EventId, OwnerId, true); } public Response GetResponse(int EventId, int OwnerId, bool tracking) { using var db = _factory.CreateDbContext(); if (tracking) { return db.Response.FirstOrDefault(item => item.EventRegistrationId == EventId && item.OwnerId == OwnerId); } else { return db.Response.AsNoTracking().FirstOrDefault(item => item.EventRegistrationId == EventId && item.OwnerId == OwnerId); } } public Response AddResponse(Response EventResponse) { using var db = _factory.CreateDbContext(); db.Response.Add(EventResponse); db.SaveChanges(); return EventResponse; } public Response UpdateResponse(Response EventResponse) { using var db = _factory.CreateDbContext(); db.Entry(EventResponse).State = EntityState.Modified; db.SaveChanges(); return EventResponse; } public void DeleteResponse(int EventRegistrationId) { using var db = _factory.CreateDbContext(); Response EventResponse = db.Response.Find(EventRegistrationId); db.Response.Remove(EventResponse); db.SaveChanges(); } } }