84 lines
2.4 KiB
C#
84 lines
2.4 KiB
C#
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<MachineUserModel> 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();
|
|
}
|
|
}
|
|
} |