using System; using System.Collections.Generic; using System.Linq; using Thermo.Active.Model.DatabaseModels; namespace Thermo.Active.Database.Controllers { public class SessionsController : IDisposable { private DatabaseContext dbCtx; public SessionsController() { // Initialize database context dbCtx = new DatabaseContext(); } public void Dispose() { // Clear database context dbCtx.Dispose(); } public SessionModel FindSessionByToken(string token) { return dbCtx .Sessions .Include("MachineUser") .Where(x => x.Token == token) // Find session by token .FirstOrDefault(); } public List FindMachineUserSession() { return dbCtx .Sessions .Include("MachineUser") .Select(x => x.MachineUser) .GroupBy(x => x.MachineUserId) .Select(x => x.FirstOrDefault()) .ToList(); } public void DeleteUserSessions(int machineUserId) { dbCtx .Sessions .RemoveRange( // Delete rows dbCtx .Sessions .Where(x => x.MachineUserId == machineUserId) // Find all the session with matching machineUserId ); // Commit changes dbCtx.SaveChanges(); } public void DeleteSessionsByUserAndMachineId(int machineId, int userId) { MachineUserModel machineUser = null; using (MachinesUsersController machinesUsersController = new MachinesUsersController()) { // Find machine_user id machineUser = machinesUsersController.FindByUserId(machineId, userId); } DeleteUserSessions(machineUser.MachineUserId); } public void Create(int machineUserId, string token) { // Create session model SessionModel session = new SessionModel() { MachineUserId = machineUserId, Token = token, FirstLogin = DateTime.Now }; // Add to database dbCtx.Sessions.Add(session); // Commit changes dbCtx.SaveChanges(); } } }