private Dictionary <Guid, RackForConversion> LoadRacksToBeImportedFromDatabase() { Dictionary <Guid, RackForConversion> nodeContainersForConversions = new(); using var dbConn = GetConnection(); // Load node containers using var nodeContainerSelectCmd = dbConn.CreateCommand(); nodeContainerSelectCmd.CommandText = "SELECT external_id, external_spec, route_node_id, rack_id, specification,name, number_of_units FROM " + _rackTableName + " WHERE status is null ORDER BY external_id"; using var nodeContainerReader = nodeContainerSelectCmd.ExecuteReader(); while (nodeContainerReader.Read()) { var rack = new RackForConversion(); var externalId = nodeContainerReader.GetString(0).Trim(); var externalSpec = nodeContainerReader.GetString(1).Trim(); rack.NodeId = Guid.Parse(nodeContainerReader.GetString(2)); rack.RackId = Guid.Parse(nodeContainerReader.GetString(3)); rack.Specification = nodeContainerReader.GetString(4).Trim(); rack.Name = nodeContainerReader.GetString(5).Trim(); rack.HeightInUnits = Int32.Parse(nodeContainerReader.GetString(6).Trim()); nodeContainersForConversions.Add(rack.RackId, rack); } dbConn.Close(); return(nodeContainersForConversions); }
private Result PlaceRack(NpgsqlCommand logCmd, RackForConversion rack, Guid specId, RelatedEquipmentInfo relatedInfo) { Guid correlationId = Guid.NewGuid(); var commandUserContext = new UserContext("conversion", _workTaskId) { EditingRouteNodeId = rack.NodeId }; // Check if node container already exists if (relatedInfo.NodeContainer == null) { if (_utilityNetwork.TryGetEquipment <NodeContainer>(relatedInfo.NodeContainer.Id, out var existingNodeContainer)) { System.Diagnostics.Debug.WriteLine($"No container exists in node: {rack.NodeId}"); return(Result.Fail(new Error($"No container exists in node: {rack.NodeId}"))); } } var rackSpecId = GetRackSpecificationIdFromName(rack.Specification); if (rackSpecId == null) { return(Result.Fail(new Error($"Cannot find rack specfication: {rack.Specification}"))); } // Place rack var placeRackCmd = new PlaceRackInNodeContainer( correlationId, commandUserContext, relatedInfo.NodeContainer.Id, rack.RackId, rackSpecId.Value, rack.Name, rack.HeightInUnits ); var placeRackResult = _commandDispatcher.HandleAsync <PlaceRackInNodeContainer, Result>(placeRackCmd).Result; LogStatus((NpgsqlCommand)logCmd, _rackTableName, "external_id", rack.ExternalId, placeRackResult); return(placeRackResult); }