private void PackingInOneBox(List <Model.Item> list, int boxID) { var box = boxDAO.getBox(boxID); if (list.Count != 0) { boxDAO.resetBox(boxID); List <Packing.Item> itemsToPack = convertListItem(list); List <Packing.Entities.Container> containers = new List <Packing.Entities.Container>(); containers.Add(convertBox(box)); List <int> algorithms = new List <int>(); algorithms.Add((int)AlgorithmType.EB_AFIT); //Avvio algoritmo EB-AFIT List <ContainerPackingResult> result = PackingService.Pack(containers, itemsToPack, algorithms); List <Packing.Item> listPacked = new List <Packing.Item>(); List <Packing.Item> listUnpacked = new List <Packing.Item>(); var container = 0; foreach (var a in result) { container = a.ContainerID; foreach (var i in a.AlgorithmPackingResults) { listPacked = i.PackedItems; listUnpacked = i.UnpackedItems; } } foreach (var v in listPacked) { var item = itemDAO.getItem(v.ID); item.updateCoordinate(v.CoordX, v.CoordY, v.CoordZ, v.PackDimX, v.PackDimY, v.PackDimZ); itemDAO.updateItem(item); } if (listUnpacked.Count == 0 && listPacked.Count == 0) { alert("Impossibile completare", "Non è stato possibile inserire nessun oggetto nel pacco", "ok"); } else { if (listUnpacked.Count == 0) { alert("Completato", "Tutti gli oggetti sono stati inseriti", "ok"); insertPackedItem(listPacked, container); } else { alert("Non tutti gli oggetti entrano nel pacco", "Apri i dettagli del pacco per controllare quali sono stati inseriti", "ok"); insertPackedItem(listPacked, container); } } } }