Ejemplo n.º 1
0
        protected void PackWithPrioritised(Truck truck, ITruckPackage pack, ref double totalVolume, ref double totalWeight)
        {
            var prioritisedCargos = GetOrderedEnumeration(Manager.GetPrioritisedCargos(truck.Volume, truck.Payload)).ToList();

            EnumerateCargos(prioritisedCargos, truck, pack, ref totalVolume, ref totalWeight);

            if (prioritisedCargos.Count > pack.Cargos.Count)
            {
                pack.Warnings.Add(PrioritiseWarning);
            }
        }
Ejemplo n.º 2
0
        protected override void EnumerateCargos(IEnumerable <Cargo> cargoes, Truck truck, ITruckPackage pack,
                                                ref double totalVolume, ref double totalWeight)
        {
            foreach (var cargo in cargoes)
            {
                if (totalWeight + cargo.Weight > truck.Payload)
                {
                    break;
                }

                if (totalVolume + cargo.Volume <= truck.Volume)
                {
                    totalVolume += cargo.Volume;
                    totalWeight += cargo.Weight;

                    pack.Cargos.Add(cargo);
                }
            }
        }
Ejemplo n.º 3
0
 protected abstract void EnumerateCargos(IEnumerable <DataAccess.Contract.Models.Cargo> cargoes, Truck truck, ITruckPackage pack,
                                         ref double totalVolume, ref double totalWeight);
Ejemplo n.º 4
0
        protected void PackWithNonPrioritised(Truck truck, ITruckPackage pack, ref double totalVolume, ref double totalWeight)
        {
            var nonPrioritisedCargos = Manager.GetNonPrioritisedCargos(truck.Volume, truck.Payload).OrderBy(x => x.Weight);

            EnumerateCargos(nonPrioritisedCargos, truck, pack, ref totalVolume, ref totalWeight);
        }
Ejemplo n.º 5
0
 protected abstract void EnumerateCargos(IEnumerable <Cargo> cargoes, Truck truck, ITruckPackage pack,
                                         ref double totalVolume, ref double totalWeight);