public static bool RearrangeRoll(string source, string target, out string error_text) { try { error_text = ""; if (source == null || target == null) { error_text = $"missing parameters"; return(false); } Cylinder cy = null; if (!source.Contains(",")) { var cyls = Cylinder.LoadCylinders(source); if (cyls.Count <= 0) { error_text = $"Roll {source} not found. Retry another roll or address"; return(false); } //, "http://" + Request.Headers.Host + "/moveroll"); cy = cyls[0]; int[] pos = cy.FindInRack(); if (pos.Length == 0 || pos[0] == 0) { error_text = $"Roll {source} not found in rack. Retry another roll or address"; return(false); } source = new Hook(pos).ToString(); } Hook src = new Hook(source); if (!src.IsValidPosition(21)) { error_text = $"Invalid address: {source}. Addresses are like 1,2,4,11"; return(false); } Hook dst; if ((target == "FREE" || target == "") && cy != null) { dst = null; } else { dst = new Hook(target); } if (dst != null && !dst.IsValidPosition(21)) { error_text = $"Invalid address: {target}. Addresses are like 1,2,4,11"; return(false); } //SaveMovements(Check(tr, src, dst), unit_id, "new"); // Umlagern !!! TransportOrder ua = new TransportOrder() { ID = TransportOrder.GetNextNegativeID(), TransportSource = TransportOrder.Destinations.Storage, TransportTarget = TransportOrder.Destinations.Storage, Cylinder_ID = cy.Cylinder_ID, SourceHook = src.ToString(), TargetHook = dst == null ? "" : dst.ToString(), State = TransportOrder.OrderStates.New, Priority = 100, AGV = 0, AGVdest = 0, CylinderState = 1, Diameter = cy.Diameter, Direction = 0, Label = cy.Number, ItemNumber = "", JobNumber = "rearrange", AGV_location_machinename = "", rewind_code = 0, manual_mode = 0, Inserted = DateTime.UtcNow, LastChange = DateTime.UtcNow, AGVrequested = new DateTime(2000, 1, 1), AGVdone = new DateTime(2000, 1, 1), AGVsource = 0, LSReached = new DateTime(2000, 1, 1) }; ua.exit_reason = "rearranging"; ua.Insert(); return(true); } catch (Exception ex) { log.Error("Exception in ManualRollMove", ex); error_text = ex.Message; return(false); } }