Example #1
0
        public EstatusCalculos EfectuarCalculos()
        {
            EstatusCalculos estatusCalculos = new EstatusCalculos();

            switch (_medio)
            {
            case "avion":
                estatusCalculos = _empresa.CalcularPorAvion();
                break;

            case "barco":
                estatusCalculos = _empresa.CalcularPorBarco();
                break;

            case "tren":
                estatusCalculos = _empresa.CalcularPorTren();
                break;

            default:
                estatusCalculos.Mensaje = string.Format("{0} no ofrece el servicio de transporte {1}, te recomendamos cotizar en otra empresa.", _empresa.RegresarNombreEmpresa(), _medio);
                estatusCalculos.Color   = ConsoleColor.Red;
                break;
            }

            return(estatusCalculos);
        }
Example #2
0
        //Por tiempo no se genera una clase que imprima.
        public void ImprimirMensajesPedido()
        {
            EstatusCalculos estatusCalculosPedido = _clienteFabricasPedido.GenerarMensajeCliente();

            Console.ForegroundColor = estatusCalculosPedido.Color;
            Console.WriteLine(estatusCalculosPedido.Mensaje);
            if (!estatusCalculosPedido.Color.Equals(ConsoleColor.Red))
            {
                MensajeMejorCosto mensajeMejorCosto = new MensajeMejorCosto()
                {
                    Costo   = estatusCalculosPedido.Costo,
                    Mensaje = string.Empty
                };
                foreach (ISuscriberFabricas cliente in _clientesFabricas)
                {
                    mensajeMejorCosto = cliente.CompararCostos(mensajeMejorCosto);
                }

                if (!string.IsNullOrWhiteSpace(mensajeMejorCosto.Mensaje))
                {
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine(mensajeMejorCosto.Mensaje);
                }
            }

            Console.WriteLine();
        }
Example #3
0
        public MensajeMejorCosto CompararCostos(MensajeMejorCosto mensajeMejorCosto)
        {
            MensajeMejorCosto mensajeMejorCostoLocal = mensajeMejorCosto;
            EstatusCalculos   estatusCalculos        = EfectuarCalculos();

            if (!estatusCalculos.Color.Equals(ConsoleColor.Red))
            {
                double diferenciaCostos = mensajeMejorCosto.Costo - estatusCalculos.Costo;
                if (diferenciaCostos > 0)
                {
                    mensajeMejorCostoLocal.Costo   = estatusCalculos.Costo;
                    mensajeMejorCostoLocal.Mensaje = string.Format("Si hubieses pedido en {0} te hubiera costado ${1} más barato.", GetClientName(), string.Format("{0:0.00}", diferenciaCostos));
                }
            }

            return(mensajeMejorCostoLocal);
        }
Example #4
0
        public EstatusCalculos GenerarMensajeCliente()
        {
            EstatusCalculos estatusCalculos = EfectuarCalculos();

            //Si no se encontró detalle en los cálculos procedemos a generar el mensaje del pedido. Sino ya se tiene el mensaje de error.
            if (string.IsNullOrWhiteSpace(estatusCalculos.Mensaje))
            {
                string[] expresiones     = GenerarExpresiones(_fechaPedido, estatusCalculos.FechaEntrega, _fechaInicioApp);
                bool     pedidoEntregado = DateTime.Compare(_fechaInicioApp, estatusCalculos.FechaEntrega) > 0;

                TimeSpan     rangoTiempoAppPedido = pedidoEntregado ? (_fechaInicioApp - estatusCalculos.FechaEntrega) : (estatusCalculos.FechaEntrega - _fechaInicioApp);
                IHandlerTime handlerMeses         = new HandlerMeses();
                IHandlerTime handlerDias          = new HandlerDias();
                IHandlerTime handlerHoras         = new HandlerHoras();
                IHandlerTime handlerMinutos       = new HandlerMinutos();
                handlerMeses.SetNext(handlerDias);
                handlerDias.SetNext(handlerHoras);
                handlerHoras.SetNext(handlerMinutos);
                string rangoTiempo = handlerMeses.CalculaExpresionRangoTiempo(rangoTiempoAppPedido);
                estatusCalculos.Color = pedidoEntregado ? ConsoleColor.Green : ConsoleColor.Yellow;

                estatusCalculos.Mensaje =
                    string.Format("Tu paquete {0} de {1} y {2} a {3} {4} {5} y {6} un costo de ${7}. (Cualquier reclamación con {8}).",
                                  expresiones[0],
                                  _origen,
                                  expresiones[1],
                                  _destino,
                                  expresiones[2],
                                  rangoTiempo,
                                  expresiones[3],
                                  string.Format("{0:0.00}", estatusCalculos.Costo),
                                  GetClientName());
            }

            return(estatusCalculos);
        }
Example #5
0
 public DhlFactory(DateTime fechaPedido, double distanciaPedido)
 {
     _fechaPedido     = fechaPedido;
     _distanciaPedido = distanciaPedido;
     _estatusCalculos = new EstatusCalculos();
 }