private static bool UpdateDeviceStatus(DeviceStatus newStatus, PcPoolModels.DeviceInstance device, PcPoolEntities ctx, int userId) { if (newStatus == DeviceStatus.Loaned) { var inventoryStatProvider = new InventoryStatProvide(); var result = inventoryStatProvider.ReserveDevices(device.DeviceTypeID, 1, userId, true); if (!result.IsPossible) { return(false); } device.DeviceStatusID = (int)newStatus; var reservation = ctx.ReservationLists.FirstOrDefault( rl => rl.UserID == userId && rl.DeviceTypeID == device.DeviceTypeID && rl.EndDate > DateTime.UtcNow); if (reservation != null | reservation.Amount != 0) { reservation.Amount -= 1; ctx.ReservationLists.Attach(reservation); ctx.Entry(reservation).State = EntityState.Modified; ctx.DeviceInstances.Attach(device); ctx.Entry(device).State = EntityState.Modified; ctx.SaveChanges(); } } else { device.DeviceStatusID = (int)newStatus; ctx.DeviceInstances.Attach(device); ctx.Entry(device).State = EntityState.Modified; ctx.SaveChanges(); } return(true); }
public void ChangeUserType(int userId) { using (var ctx = new PcPoolEntities()) { var user = ctx.Users.FirstOrDefault(u => u.UserID == userId); if (user == null) { return; } switch (user.UserTypeID) { case (int)UserType.Admin: user.UserTypeID = (int)UserType.User; break; case (int)UserType.User: user.UserTypeID = (int)UserType.Admin; break; } ctx.Users.Attach(user); ctx.Entry(user).State = EntityState.Modified; ctx.SaveChanges(); } }