public override void ReportPackage(Package package)
        {
            _principal.ReportPackage(package);
            //Recomendacion

            decimal          lowestPrice   = _calculadorCostoEnvio.ObtenerCostoEnvio(package);
            IDeliveryCompany lowestCompany = package.Empresa;

            foreach (IDeliveryCompany empresa in _deliveryCompanies.Values)
            {
                if (package.Empresa.Name != empresa.Name && empresa.TransportesDisponibles.Contains(package.MedioTransporte.Name))
                {
                    decimal price = _calculadorCostoEnvio.ObtenerCostoEnvio(new Package()
                    {
                        Distancia       = package.Distancia,
                        Empresa         = empresa,
                        MedioTransporte = package.MedioTransporte
                    });
                    if (price < lowestPrice)
                    {
                        lowestCompany = empresa;
                        lowestPrice   = price;
                    }
                }
            }
            if (lowestCompany.Name != package.Empresa.Name)
            {
                Console.WriteLine(string.Format("Si hubieras pedido en {0} te hubiera costado({1})", lowestCompany.Name, lowestPrice));
            }
        }
Exemplo n.º 2
0
 public void AddEmpresa(IDeliveryCompany deliveryCompany)
 {
     _deliveryCompanies.Add(deliveryCompany.Name, deliveryCompany);
 }
Exemplo n.º 3
0
 public FedexEnviosFactory(Fedex fedex)
 {
     DeliveryCompany = fedex;
 }
 public EstafetaEnviosFactory(Estafeta estafeta)
 {
     DeliveryCompany = estafeta;
 }
Exemplo n.º 5
0
 /// <summary>
 /// Добавить наблюдателя
 /// </summary>
 /// <param name="deliveryCompany"></param>
 public void AddObserver(IDeliveryCompany deliveryCompany)
 {
     deliveryCompanies.Add(deliveryCompany);
 }
 public DhlEnviosFactory(Dhl dhl)
 {
     DeliveryCompany = dhl;
 }