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); }
//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(); }
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); }
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); }
public DhlFactory(DateTime fechaPedido, double distanciaPedido) { _fechaPedido = fechaPedido; _distanciaPedido = distanciaPedido; _estatusCalculos = new EstatusCalculos(); }