public EmpresaAbstract ObtenerEmpresa(string _cEmpresa) { Paqueterias entPaqueteria; switch (_cEmpresa.ToUpper()) { case "FEDEX": entPaqueteria = entDatosConfig.Paqueterias.Where(w => w.Paqueteria.ToUpper() == "FEDEX").FirstOrDefault(); Empresa = new Fedex(Transporte, DatosPedido.dDistancia, DatosPedido.dtFechaActual, entPaqueteria); break; case "DHL": entPaqueteria = entDatosConfig.Paqueterias.Where(w => w.Paqueteria.ToUpper() == "DHL").FirstOrDefault(); Empresa = new DHL(Transporte, DatosPedido.dDistancia, DatosPedido.dtFechaActual, entPaqueteria); break; case "ESTAFETA": entPaqueteria = entDatosConfig.Paqueterias.Where(w => w.Paqueteria.ToUpper() == "ESTAFETA").FirstOrDefault(); Empresa = new Estafeta(Transporte, DatosPedido.dDistancia, DatosPedido.dtFechaActual, entPaqueteria); break; default: throw new Exception(string.Format("La paquetería: {0} no se encuentra registrada en nuestra red de distribución", DatosPedido.cPaqueteria)); } Empresa.entTransporte = Transporte; return(Empresa); }
public void ObtenerResultado() { EmpresaFactory FabricaEmpresa; MensajesService srvMensajes; ITransporteFactory FabricaTransporte = new TransporteFactory(); IColorTexto colorTextoError = new TextoRojo(); foreach (var item in lstDatosPedido) { try { item.dtFechaActual = DateTime.Now; ITransporte entTransporte = FabricaTransporte.ObtenerTransporte(item.cMedioTransporte, entDatosConfig); FabricaEmpresa = new EmpresaFactory(entTransporte, item, entDatosConfig); EmpresaAbstract Empresa = FabricaEmpresa.ObtenerEmpresa(item.cPaqueteria); item.dtFechaEntrega = Empresa.ObtenerFechaEntrega(item.dtFechaPedido); item.tsTiempoTraslado = Empresa.tsTiempoTraslado; item.dCostoEnvio = Empresa.ObtenerCostoEnvio(); srvMensajes = new MensajesService(item); srvMensajes.GenerarMensaje(); } catch (Exception ex) { colorTextoError.ObtenerColor(); if (string.IsNullOrWhiteSpace(ex.Message)) { Console.WriteLine(string.Format("{0} no ofrece el servicio de transporte {1}, te recomendamos cotizar en otra empresa", item.cPaqueteria, item.cMedioTransporte)); } else { Console.WriteLine(ex.Message); } } } }