public bool MakeBooking(Voyage voyage, Cargo cargo)
        {
            var overBookingPolicy = voyage.OverbookingPolicy ?? new DefaultOverBookingPolicy();

            if (overBookingPolicy.IsAllowed(voyage, cargo))
            {
                voyage.AddCargo(cargo);
                return(true);
            }
            return(false);
        }
        public int MakeBooking(Cargo cargo, Voyage voyage)
        {
            // Permitir 10% de overbooking
            // double maxBooking = voyage.Capacity * 1.1;
            // if ((voyage.BookedCargoSize() + cargo.Size) > maxBooking)
            //     return -1;

            // Permitir 10% de overbooking
            if (!overbookingPolicy.IsAllowed(cargo, voyage))
            {
                return(-1);
            }

            int confirmation = orderConfirmationSequence.Next();

            voyage.AddCargo(cargo, confirmation);
            return(confirmation);
        }