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);
        }
Exemplo n.º 2
0
        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();
            }
        }