コード例 #1
0
        /// <summary>
        /// Updates the object from the UI and saves any changes.
        /// </summary>
        private void SaveChanges()
        {
            // Check for new object
            if (string.IsNullOrEmpty(_badge.BadgeId))
            {
                _badge.BadgeId = textBox_BadgeId.Text;
                _context.Badges.Add(_badge);
            }
            _badge.Description = textBox_Descr.Text;
            _badge.UserName    = textBox_Username.Text;
            _badge.Index       = byte.Parse(textBox_Index.Text);
            if (comboBox_BadgeBox.SelectedIndex > 0)
            {
                _badge.BadgeBoxId = (string)comboBox_BadgeBox.SelectedValue;
            }
            else // No Badge Box selected
            {
                _badge.BadgeBoxId = null;
            }

            if (_context.Entry(_badge).State == EntityState.Modified || _context.Entry(_badge).State == EntityState.Added)
            {
                _context.SaveChanges();
            }
        }
コード例 #2
0
        private void button_Ok_Click(object sender, EventArgs e)
        {
            using (new BusyCursor())
            {
                if (ValidateInput())
                {
                    AssetConfigurationController controller = new AssetConfigurationController(_context);
                    _simulator.AssetId         = textBox_AssetId.Text;
                    _simulator.Product         = textBox_Product.Text;
                    _simulator.Address         = textBox_Address.Text;
                    _simulator.VirtualMachine  = textBox_VmName.Text;
                    _simulator.FirmwareVersion = textBox_Firmware.Text;
                    _simulator.Password        = textBox_Password.Text;
                    _simulator.SimulatorType   = comboBox_Type.Text;
                    _simulator.Pool            = controller.GetDefaultAssetPool();

                    try
                    {
                        int capability = 0;
                        foreach (CheckBox checkBox in _capabilityControls)
                        {
                            if (checkBox.Checked)
                            {
                                capability += int.Parse(checkBox.Tag.ToString());
                            }
                        }
                        _simulator.Capability = (AssetAttributes)capability;
                    }
                    catch (FormatException ex)
                    {
                        TraceFactory.Logger.Error("Unable to Parse Simulator Capability.  Make sure the CheckBox.Tag property is set on all Capability Checkboxes.", ex);
                        MessageBox.Show("Unable to determine Simulator Capability.", "Save Changes", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DialogResult = DialogResult.Abort;
                        return;
                    }

                    if (_context.Entry(_simulator).State == EntityState.Detached)
                    {
                        // New Simulator
                        _context.Assets.Add(_simulator);
                    }
                    _context.SaveChanges();

                    DialogResult = DialogResult.OK;
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Updates the object from the UI and saves any changes.
        /// </summary>
        private void SaveChanges()
        {
            // Check for new object
            if (string.IsNullOrEmpty(_badgeBox.BadgeBoxId))
            {
                _badgeBox.BadgeBoxId = textBox_BadgeBoxId.Text;
                _context.BadgeBoxes.Add(_badgeBox);
            }
            _badgeBox.Description = textBox_Descr.Text;
            _badgeBox.IPAddress   = textBox_Address.Text;
            _badgeBox.PrinterId   = textBox_PrinterId.Text;

            if (_context.Entry(_badgeBox).State == EntityState.Modified || _context.Entry(_badgeBox).State == EntityState.Added)
            {
                _context.SaveChanges();
            }
        }
コード例 #4
0
        private void okButton_Click(object sender, EventArgs e)
        {
            if (ValidateInput())
            {
                _printer.Location     = location_ComboBox.Text;
                _printer.Product      = manufacturer_ComboBox.Text;
                _printer.Model        = modelName_ComboBox.Text;
                _printer.ModelNumber  = modelNumber_ComboBox.Text;
                _printer.Owner        = contact_ComboBox.Text;
                _printer.AssetId      = assetId_TextBox.Text;
                _printer.Description  = description_TextBox.Text;
                _printer.Address1     = address1_Control.Text;
                _printer.Address2     = address2_Control.Text;
                _printer.SerialNumber = serialNumber_TextBox.Text;
                _printer.Password     = adminPassword_TextBox.Text;

                try
                {
                    int capability = 0;
                    foreach (CheckBox checkBox in _capabilityControls)
                    {
                        if (checkBox.Checked)
                        {
                            capability += int.Parse(checkBox.Tag.ToString());
                        }
                    }
                    _printer.Capability = (AssetAttributes)capability;
                }
                catch (FormatException ex)
                {
                    TraceFactory.Logger.Error("Unable to Parse Printer Capability.  Make sure the CheckBox.Tag property is set on all Capability Checkboxes.", ex);
                    MessageBox.Show("Unable to determine Printer Capability.", "Save Changes", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    DialogResult = DialogResult.Abort;
                    return;
                }

                if (_context.Entry(_printer).State == EntityState.Detached)
                {
                    // New Printer
                    _context.Assets.Add(_printer);
                }
                _context.SaveChanges();

                DialogResult = DialogResult.OK;
            }
        }
コード例 #5
0
        private void okButton_Click(object sender, EventArgs e)
        {
            if (ValidateInput())
            {
                _mobileDevice.MobileEquipmentId = connectionId_TextBox.Text;
                _mobileDevice.MobileDeviceType  = type_ComboBox.Text;
                _mobileDevice.Description       = description_TextBox.Text;

                if (_context.Entry(_mobileDevice).State == EntityState.Detached)
                {
                    //New Mobile Device
                    _mobileDevice.AssetId = assetId_TextBox.Text;
                    _context.Assets.Add(_mobileDevice);
                }
                _context.SaveChanges();

                DialogResult = DialogResult.OK;
            }
        }
コード例 #6
0
        private void okButton_Click(object sender, EventArgs e)
        {
            if (ValidateInput())
            {
                _camera.AssetId      = assetId_TextBox.Text;
                _camera.Description  = description_TextBox.Text;
                _camera.IPAddress    = ipAddress_Control.Text;
                _camera.CameraServer = cameraServer_TextBox.Text;
                _camera.PrinterId    = printerId_TextBox.Text;

                if (_context.Entry(_camera).State == EntityState.Detached)
                {
                    //New Camera
                    _context.Assets.Add(_camera);
                }
                _context.SaveChanges();

                DialogResult = DialogResult.OK;
            }
        }
コード例 #7
0
        public ActionResult Edit(int id)
        {
            Asset asset = db.Assets.Find(id);

            if (ModelState.IsValid)
            {
                db.Entry(asset).State = EntityState.Modified;

                ActionLog aLog = new ActionLog
                {
                    Action   = "Edit",
                    AssetId  = asset.Id,
                    UserName = User.Identity.Name,
                    Notes    = Request.Form["Notes"] //TODO: Проверить значение
                };

                db.ActionLogs.Add(aLog);
                db.SaveChanges();
            }

            //ViewBag.Error = "Не удалось изменить запись в базе данных!";
            return(RedirectToAction("Index"));
        }
コード例 #8
0
        /// <summary>
        /// Commits changes to the inventory
        /// </summary>
        public void Commit()
        {
            foreach (var entity in _deletedItems)
            {
                _context.FrameworkServers.Remove(entity);
            }

            foreach (var server in _servers)
            {
                switch (_context.Entry(server).State)
                {
                case EntityState.Added:
                case EntityState.Detached:
                {
                    _context.FrameworkServers.Add(server);
                    break;
                }
                }
            }

            _context.SaveChanges();
            _deletedItems.Clear();
        }
コード例 #9
0
        /// <summary>
        /// Creates asset reservations for the specified time period.
        /// Attempts to reserve devices for the entire period, but will create a partial reservation
        /// if the device is not available for the entire time.
        /// </summary>
        /// <param name="assetIds">The assets to reserve.</param>
        /// <param name="sessionId">The session ID to reserve for.</param>
        /// <param name="reservationKey">The reservation key indicating which existing reservations may be used.</param>
        /// <param name="requestedStart">The requested start.</param>
        /// <param name="requestedEnd">The requested end.</param>
        /// <returns>A collection of <see cref="AssetReservationResult" /> describing the reservations that could be made.</returns>
        /// <exception cref="ArgumentNullException"><paramref name="assetIds" /> is null.</exception>
        public IEnumerable <AssetReservationResult> ReserveAssets(IEnumerable <string> assetIds, string sessionId, string reservationKey, DateTime requestedStart, DateTime requestedEnd)
        {
            if (assetIds == null)
            {
                throw new ArgumentNullException(nameof(assetIds));
            }

            List <AssetReservationResult> results = new List <AssetReservationResult>();

            using (AssetInventoryContext context = new AssetInventoryContext(_connectionString))
            {
                //Include associated Assets, like Cameras
                List <string> assetIdsFinal = assetIds.ToList();
                assetIdsFinal.AddRange(GetAssociatedCameras(context, assetIds));

                LogInfo($"Reserving {assetIdsFinal.Count()} assets for session {sessionId}.");

                // Get all the data from the database at once, but then loop through the requested IDs to see if there are any missing
                List <Asset> assets = context.Assets.Include(n => n.Pool).Include(n => n.Reservations).Where(n => assetIdsFinal.Contains(n.AssetId)).ToList();
                foreach (string assetId in assetIdsFinal)
                {
                    Asset asset = assets.FirstOrDefault(n => n.AssetId == assetId);
                    if (asset != null)
                    {
                        CreateReservations(asset, sessionId, reservationKey, requestedStart, requestedEnd);
                        AssetReservationResult result = GetReservationResult(asset, sessionId, requestedStart, requestedEnd);
                        results.Add(result);
                    }
                    else
                    {
                        // Asset was not found in database
                        LogWarn($"Asset {assetId} was not found in Asset Inventory database.");
                        results.Add(new AssetReservationResult(assetId, AssetAvailability.Unknown));
                    }
                }

                // Update ReservationHistory where configured to do so
                foreach (Asset asset in assets.Where(n => n.Pool.TrackReservations == true))
                {
                    foreach (AssetReservation reservation in asset.Reservations.Where(n => context.Entry(n).State == EntityState.Added))
                    {
                        context.ReservationHistory.Add(new ReservationHistory(reservation));
                    }
                }

                // Commit the reservations to the database
                try
                {
                    context.SaveChanges();
                }
                catch (DbUpdateException ex) when(ex.InnerException?.InnerException?.Message?.Contains(_duplicateReservationConstraint) == true)
                {
                    // This may happen due to concurrency conflicts, e.g. somebody else creates a reservation
                    // after we have retrieved the existing reservations from the database but before we attempt to save them back.
                    throw new ResourceReservationException("Failed to create reservation due to a conflict with an existing reservation.", ex);
                }
            }

            return(results);
        }