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)); }
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), }); }
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); }
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()); } }