public ClientWish(Warehouse w, int wishSize)
        {
            int nbBlock          = w.NbBlock;
            int nbAisles         = w.NbAisles;
            int aisleLenght      = w.AisleLenght;
            int nbProductMax     = nbBlock * nbAisles * aisleLenght;
            int nbProductByBlock = nbAisles * aisleLenght;
            var wishList         = new HashSet <ClientWishPos>();
            var rnd = new Random();

            for (var i = 0; i < wishSize; i++)
            {
                int wishIdx   = rnd.Next(1, nbProductMax + 1);
                int blockIdx  = (wishIdx - 1) / nbProductByBlock + 1;
                int temp      = wishIdx - (blockIdx - 1) * nbProductByBlock;
                int aislesIdx = (temp - 1) / aisleLenght + 1;
                temp = temp - (aislesIdx - 1) * aisleLenght;
                int positionIdx = temp;
                var wish        = new ClientWishPos(wishIdx, blockIdx, aislesIdx, positionIdx, aisleLenght, nbBlock);
                wishList.Add(wish);
            }
            ClientWishes = wishList.OrderBy(x => x.WishIdx).ToList();
        }
 internal static ShiftPoint ConverToShiftPoint(this ClientWishPos c)
 {
     return(new ShiftPoint(c.WishX, c.WishY));
 }