using Step.Model.DatabaseModels; using Step.Model.DTOModels; using System; using System.Linq; namespace Step.Database.Controllers { public class MachinesUsersController : IDisposable { private DatabaseContext dbCtx; public MachinesUsersController() { // Initialize database context dbCtx = new DatabaseContext(); } public void Dispose() { // Clear database context dbCtx.Dispose(); } public MachineUserModel FindByUserId(int machineId, int userId) { return dbCtx .MachinesUsers .Include("Role") // TODO Add machine and user info? .Where(x => x.MachineId == machineId && x.UserId == userId) .FirstOrDefault(); } public MachineUserModel FindById(int id) { return dbCtx .MachinesUsers .Include("Role") // Join with Role, Machine, User .Include("Machine") .Include("User") .Where(x => x.MachineUserId == id) .FirstOrDefault(); } public MachineUserModel Create(int machineId, int userId, int roleId) { // Create database model MachineUserModel machine = new MachineUserModel() { MachineId = machineId, UserId = userId, RoleId = roleId }; // Add into database dbCtx.MachinesUsers.Add( machine ); // Commit changes dbCtx.SaveChanges(); return machine; } public DTORoleModel GetUserRole(int machineId, int userId) { RoleModel role = dbCtx .MachinesUsers .Include("Role") .Where(x => x.MachineId == machineId && x.UserId == userId) // Find by machine id and user id, joining with role .FirstOrDefault().Role; return new DTORoleModel() { Id = role.RoleId, Name = role.Name }; } } }