Пример #1
0
        private bool CheckIfRowsAndColumnsAreSuitableForEnclosure(int enclosureId, Enclosure_Device enclosureDevice)
        {
            var enclosure = GetEnclosureById(enclosureId);
            var device    = _device.GetDeviceById(enclosureDevice.DeviceId);

            return(AreRowsAndColumnsSuitableForEnclosureDimensions(enclosureDevice.Row, enclosureDevice.Column,
                                                                   enclosure.EnclosureSpecs.Rows, enclosure.EnclosureSpecs.Columns, device.Width, device.Height));
        }
Пример #2
0
        public Models.Enclosure AddNewDevice(int projectId, int enclosureId, Enclosure_Device enclosureDevice)
        {
            if (!CheckIfRowsAndColumnsAreSuitableForEnclosure(enclosureId, enclosureDevice))
            {
                return(null);
            }

            const string sql =
                "SELECT d.*, ed.row, ed.[column] FROM Electric.Enclosure_Device as ed LEFT JOIN Electric.Device as d ON d.id = ed.deviceId WHERE enclosureId = @enclosureID";
            var existingDevicesWithPosition = _database.Query <DeviceDto>(sql, new { enclosureID = enclosureId }).ToList();

            if (!CheckIfPositionIsAvailable(existingDevicesWithPosition, enclosureDevice))
            {
                return(null);
            }

            var enclosure = GetEnclosureById(enclosureId);

            if (enclosure == null)
            {
                throw new EnclosureNotFoundException("Enclosure does not exist!");
            }

            const string insertEnclosureDevice = "INSERT INTO Electric.Enclosure_Device VALUES (@enclosureID, @deviceID, @row, @column)";

            _database.Execute(insertEnclosureDevice,
                              new { enclosureID = enclosureId, deviceID = enclosureDevice.DeviceId, row = enclosureDevice.Row, column = enclosureDevice.Column });

            var devices = _device.GetDevicesForEnclosure(enclosureId);

            Project.UpdateProjectDate(projectId);

            return(new Models.Enclosure()
            {
                Id = enclosureId,
                Name = enclosure.Name,
                Date = enclosure.Date,
                ProjectId = projectId,
                Devices = devices,
                TotalPrice = CalculateTotalPrice(enclosure, null),
                EnclosureSpecs = _enclosureSpecs.GetEnclosureSpecsByEnclosureId(enclosure.Id),
            });
        }
Пример #3
0
        private bool CheckIfPositionIsAvailable(List <DeviceDto> existingDevicesWithPosition, Enclosure_Device enclosureDevice)
        {
            var device = _device.GetDeviceById(enclosureDevice.DeviceId);
            var existingEnclosureDevices = new List <DeviceDto>();

            existingDevicesWithPosition.ForEach(d =>
            {
                if (NoExistingDevicesWithSameRow(enclosureDevice.Row, d.Row,
                                                 device.Height, d.Height))
                {
                    return;
                }
                if (DoesDevicesColumnOverlapWithExistingDevicesColumn(enclosureDevice.Column,
                                                                      d.Column, device.Width, d.Width))
                {
                    existingEnclosureDevices.Add(d);
                }
            });

            return(existingEnclosureDevices.Count == 0);
        }
Пример #4
0
        public ActionResult <Models.Enclosure> AddDeviceToEnclosure(int projectId, int enclosureId, Enclosure_Device enclosureDevice)
        {
            try
            {
                var enclosure = _enclosure.GetEnclosureById(enclosureId);
                if (enclosure.ProjectId != projectId)
                {
                    return(NotFound("Enclosure with that ProjectID doesn't exist!"));
                }

                Task.Run(() => { _enclosure.RecalculateTotalPrice(enclosure); });

                return(Created("https://localhost:5001/Project", _enclosure.AddNewDevice(projectId, enclosureId, enclosureDevice)));
            }
            catch (EnclosureNotFoundException ex)
            {
                return(NotFound(ex.Message));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error", ex);
                return(BadRequest());
            }
        }