コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }