public async Task <IPedido> GerarPedido(ICarrinhoLivro CarrinhoLivro, Livros Livros, Pessoa Cliente) { if (CarrinhoLivro is null) { throw new ArgumentNullException(nameof(CarrinhoLivro)); } if (Livros is null || Livros.Count <= 0) { throw new ArgumentNullException(nameof(Livros)); } if (Cliente is null) { throw new ArgumentNullException(nameof(Cliente)); } Pedido fPedido = new Pedido(Cliente, Livros, DateTime.Now); IPedido pedido = CarrinhoLivro.EfetivarPedidoCarinho(this._CarrinhoFactory, fPedido); await this._CarrinhoRepository.AddPedido(CarrinhoLivro, pedido).ConfigureAwait(false); return(pedido); }
public override string FormatearMensaje(IPedido pedido) { string resultado = string.Empty; if (ValidarTransporte(pedido.TipoTransporte)) { if (pedido.Tiempo.Equals(TipoEvento.Pasado) && pedido.Duracion > 1) { Console.ForegroundColor = ConsoleColor.Green; resultado = string.Format(FormatoMensajeCorrecto, "salió", pedido.Origen, "llegó", pedido.Destino, "hace", pedido.Duracion, pedido.EscalaTiempo.ToString().ToLower() + "s", "tuvo", pedido.Costo, pedido.Empresa); } else if (_formateadorMensaje == null) { Console.ForegroundColor = ConsoleColor.Red; resultado = string.Format(FormatoMensajeInCorrectoEmpresa, pedido.Empresa); } } else { Console.ForegroundColor = ConsoleColor.Red; resultado = string.Format(FormatoMensajeInCorrectoTransporte, pedido.Empresa, pedido.NombreTransporte); } return(resultado); }
private void BuildOutput(IPedido pedido) { Pedido Pedido = (Pedido)pedido; var output = new GerarPedidoSaida(Pedido); this._GerarPedidoSaidaPort.Standard(output); }
public override string FormatearMensaje(IPedido pedido) { string resultado = string.Empty; if (ValidarTransporte(pedido.TipoTransporte)) { if (pedido.Tiempo.Equals(TipoEvento.Futuro) && pedido.Duracion == 1) { Console.ForegroundColor = ConsoleColor.Yellow; resultado = string.Format(FormatoMensajeCorrecto, "ha salido", pedido.Origen, "llegará", pedido.Destino, "dentro de", pedido.Duracion, pedido.EscalaTiempo.ToString().ToLower(), "tendrá", pedido.Costo, pedido.Empresa); } else if (_formateadorMensaje != null) { resultado = _formateadorMensaje.FormatearMensaje(pedido); } } else { Console.ForegroundColor = ConsoleColor.Red; resultado = string.Format(FormatoMensajeInCorrectoTransporte, pedido.Empresa, pedido.NombreTransporte); } return(resultado); }
private Pedido PatchPedido(Pedido pedido, IPedido pedidoNovo) { pedido.NumeroPedido = pedidoNovo.NumeroPedido; if (pedidoNovo.ClienteId > 0) { pedido.ClienteId = pedidoNovo.ClienteId; } if (pedidoNovo.DataPedido > DateTime.MinValue) { pedido.DataPedido = pedidoNovo.DataPedido; } if (pedidoNovo.ItensPedido != null && pedidoNovo.ItensPedido.Any()) { pedido.ItensPedido = pedidoNovo.ItensPedido.Select(f => (ProdutoPedido)f).ToList(); } if (pedidoNovo.ValorFrete > 0) { pedido.ValorFrete = pedidoNovo.ValorFrete; } return(pedido); }
public void CrearMensajePaqueteria(IPedido pedido, IPaqueteria paqueteria) { IMedioTransporte medioTransporte = paqueteria.MediosTransportes.FirstOrDefault(x => x.Nombre.ToLowerInvariant() == pedido.MedioTransporte.ToLowerInvariant()); if (medioTransporte == null) { throw new ArgumentException($"{paqueteria.NombreEmpresa} no ofrece el servicio de transporte por {pedido.MedioTransporte}, te recomendamos cotizar en otra empresa."); } IDetallesPedido detallesPedido = _creardorDetallesPedido.CrearDetallesPedido(pedido, medioTransporte, paqueteria.MargenUtilidad); string rangoTiempo = _manejadorRangoTiempo.ObtenerRangoTiempo(detallesPedido.FechaEntrega, DateTime.Now); bool fechaEntregaMenorActual = _validadorFecha.ValidarFechaActual(detallesPedido.FechaEntrega); _constructorRespuestaPedido.Reset(); _constructorRespuestaPedido.ConstruirExpresion1(fechaEntregaMenorActual); _constructorRespuestaPedido.ConstruirOrigen(pedido.Origen); _constructorRespuestaPedido.ConstruirExpresion2(fechaEntregaMenorActual); _constructorRespuestaPedido.ConstruirExpresion3(fechaEntregaMenorActual); _constructorRespuestaPedido.AsignarRangoTiempo(rangoTiempo); _constructorRespuestaPedido.ConstruirExpresion4(fechaEntregaMenorActual); _constructorRespuestaPedido.ConstuirCostoEnvio(detallesPedido.CostoEnvio.ToString()); _constructorRespuestaPedido.AsignarColorMensaje(fechaEntregaMenorActual); _constructorRespuestaPedido.ConstuirDestino(pedido.Destino); _constructorRespuestaPedido.AgregarOpcionEconomica(detallesPedido.Cotizacion); _constructorRespuestaPedido.ConstruirFinal(pedido.Paqueteria); }
public void RePoblarPedido(IPedido pedido, DateTime fechaActual, int margenUtilidad, ITransporte transporte) { pedido.EscalaTiempo = _obtenedorEscala.ObtenerEscalaTiempo(fechaActual, pedido.FechaHora); pedido.Tiempo = _obtenedorTipoEvento.ObtenerTipoEvento(fechaActual, pedido.FechaHora); pedido.Duracion = _obtenedorDuracion.ObtenerDuracion(fechaActual, pedido.FechaHora, pedido.EscalaTiempo); pedido.Costo = _calculador.CalcularCosto(transporte.CostoKm, pedido.Distancia, margenUtilidad); pedido.FechaEntrega = _calculador.CalcularFechaEntrega(pedido.FechaHora, pedido.Duracion, pedido.EscalaTiempo); }
public OpçõesImpressão(IPedido pedido) { InitializeComponent(); this.pedido = pedido; // TODO: tornar assincrono ObterDados(); }
public IDetallesPedido CrearDetallesPedido(IPedido pedido, IMedioTransporte medioTransporte, double margenUtilidad) { DetallesPedido detallesPedido = new DetallesPedido(); detallesPedido.TiempoTraslado = _manejadorPaqueteria.CalcularTiempoTraslado(pedido.Distancia, medioTransporte.VelocidadEntrega); detallesPedido.FechaEntrega = _manejadorPaqueteria.CalcularFechaEntrega(pedido.FechaPedido, detallesPedido.TiempoTraslado); detallesPedido.CostoEnvio = _manejadorPaqueteria.CalcularCostoEnvio(medioTransporte.CostoKilometro, pedido.Distancia, margenUtilidad); detallesPedido.Cotizacion = _verificadorPrecios.CotizadorPrecios(detallesPedido.CostoEnvio, pedido); return(detallesPedido); }
public static void Main(string[] args) { LectorArchivo lectorArchivo = new LectorArchivo(); SeparadorColumnas separadorColumnas = new SeparadorColumnas(); ValidadorLinea validadorLinea = new ValidadorLinea(); ValidadorFecha validadorFecha = new ValidadorFecha(); ValidadorTransporte validadorTransporte = new ValidadorTransporte(); Calculador calculador = new Calculador(); ObtenedorEscala obtenedorEscala = new ObtenedorEscala(); ObtenedorDuracion obtenedorDuracion = new ObtenedorDuracion(); ObtenedorTipoEvento obtenedorTipoEvento = new ObtenedorTipoEvento(); FormateadorFuturoMensajeSingular formateadorFuturoMensajeSingular = new FormateadorFuturoMensajeSingular(); FormateadorFuturoMensajePlural formateadorFuturoMensajePlural = new FormateadorFuturoMensajePlural(); FormateadorPasadoMensajeSingular formateadorPasadoMensajeSingular = new FormateadorPasadoMensajeSingular(); FormateadorPasadoMensajePlural formateadorPasadoMensajePlural = new FormateadorPasadoMensajePlural(); formateadorFuturoMensajeSingular.SiguienteFormateador(formateadorFuturoMensajePlural); formateadorFuturoMensajePlural.SiguienteFormateador(formateadorPasadoMensajeSingular); formateadorPasadoMensajeSingular.SiguienteFormateador(formateadorPasadoMensajePlural); PobladorPedido pobladorPedido = new PobladorPedido( validadorFecha, validadorTransporte, calculador, obtenedorEscala, obtenedorDuracion, obtenedorTipoEvento); ImprimidorPantalla imprimidorPantalla = new ImprimidorPantalla(); FactoryEjecutor servicioEjecutor = new FactoryEjecutor(validadorTransporte, pobladorPedido); List <string> lineas = lectorArchivo.LeerArchivo(Path.GetFullPath("paquetes.txt")); foreach (string linea in lineas) { string[] columnas = separadorColumnas.SepararPorCaracter(linea, ','); if (validadorLinea.ValidarFormato(columnas, 6)) { IPedido pedido = pobladorPedido.PoblarPedido(columnas); servicioEjecutor.RealizarEnvios(pedido, new DateTime(2020, 01, 01)); string resultado = formateadorFuturoMensajeSingular.FormatearMensaje(pedido); imprimidorPantalla.ImprimirConsola(resultado); } } Console.ReadLine(); }
public async Task <int> AtualizarPedido(IPedido pedido, CancellationToken cancellationToken = default) { var pedidoLocal = await this.contexto.Pedido.FindAsync(new object[] { pedido.NumeroPedido }, cancellationToken); if (pedidoLocal == null) { throw new ArgumentNullException("O Pedido não foi encontrado"); } this.contexto.Pedido.Update(PatchPedido(pedidoLocal, pedido)); return(await this.contexto.SaveChangesAsync(cancellationToken)); }
public EntidadManager(DataSetFacturacionTableAdapters.clienteTableAdapter ClienteTB, DataSetFacturacion ds, DataSetFacturacionTableAdapters.pedidoTableAdapter PedidoTB, DataSetFacturacionTableAdapters.pedidos_costosTableAdapter CostosTB, DataSetFacturacionTableAdapters.ficha_costosTableAdapter FichaCostosTB) { this.ClienteTB = ClienteTB; this.PedidoTB = PedidoTB; this.CostosTB = CostosTB; this.FichaCostosTB = FichaCostosTB; this.ds = ds; ientidad = new EntidadAccess(); icliente = new ClienteAccess(ClienteTB, ds, PedidoTB, CostosTB, FichaCostosTB); iservicio = new ServicioAccess(ClienteTB, ds, PedidoTB, CostosTB, FichaCostosTB); ipedido = new PedidoAccess(ClienteTB, ds, PedidoTB, CostosTB, FichaCostosTB); }
public EntidadManager(DataSetFacturacionTableAdapters.clienteTableAdapter ClienteTB, DataSetFacturacion ds, DataSetFacturacionTableAdapters.pedidoTableAdapter PedidoTB, DataSetFacturacionTableAdapters.pedidos_costosTableAdapter CostosTB, DataSetFacturacionTableAdapters.ficha_costosTableAdapter FichaCostosTB) { this.ClienteTB = ClienteTB; this.PedidoTB = PedidoTB; this.CostosTB = CostosTB; this.FichaCostosTB = FichaCostosTB; this.ds = ds; ientidad = new EntidadAccess(); icliente = new ClienteAccess(ClienteTB,ds, PedidoTB,CostosTB,FichaCostosTB); iservicio = new ServicioAccess(ClienteTB, ds, PedidoTB, CostosTB, FichaCostosTB); ipedido = new PedidoAccess(ClienteTB, ds, PedidoTB, CostosTB, FichaCostosTB); }
public void RealizarEnvios(IPedido pedido, DateTime fechaActual) { string nombreEmpresa = pedido.Empresa; ConsolidarEmpresas(nombreEmpresa); if (_creadorEmpresa != null) { _creadorEmpresa.NuevaEmpresa(); IEmpresa empresa = _creadorEmpresa.GetEmpresa(); if (_validadorTransporte.DisponibilidadTransporte(pedido.TipoTransporte, empresa.Transportes.Keys.ToList())) { _pobladorPedido.RePoblarPedido(pedido, fechaActual, empresa.MargenUtilidad, empresa.Transportes[pedido.TipoTransporte]); } } }
public string CotizadorPrecios(double costoOriginal, IPedido pedido) { string mensaje = string.Empty; List <IPaqueteria> paqueterias = _paqueteriaService.ObtenerPaqueterias(); foreach (IPaqueteria paqueteria in paqueterias.Where(x => x.NombreEmpresa.ToLowerInvariant() != pedido.Paqueteria.ToLowerInvariant())) { IMedioTransporte transporte = paqueteria.MediosTransportes .FirstOrDefault(x => x.Nombre.ToLowerInvariant() == pedido.MedioTransporte.ToLowerInvariant()); if (transporte != null) { double cotizacion = _manejadorPaqueteria.CalcularCostoEnvio(transporte.CostoKilometro, pedido.Distancia, paqueteria.MargenUtilidad); if (costoOriginal > cotizacion) { mensaje = $"Si hubieras pedido en {paqueteria.NombreEmpresa} te hubiera costado (${cotizacion})."; } } } return(mensaje); }
public async Task Executar(GerarPedidoEntrada entrada) { if (entrada is null) { this._GerarPedidoSaidaPort.WriteError("Entrada não pode ser nula"); return; } ICarrinhoLivro CarrinhoLivro = await this._CarrinhoRepository.GetCarrinhoLivro().ConfigureAwait(false); if (CarrinhoLivro is null) { this._GerarPedidoSaidaPort.WriteError("Carrinho não existe."); return; } IPedido pedido = await this._CarrinhoService.GerarPedido(CarrinhoLivro, entrada.livros, entrada.Cliente); await this._unitOfWork.Save().ConfigureAwait(false); this.BuildOutput(pedido); }
public void PoblarPedido_ColumnasCompletas_DevolverEntidadPedido() { //Arrange _validadorTransporte.Setup(x => x.EsMedioDeTransporte(It.IsAny <string>())).Returns(TipoTransporte.Tren); _validadorFecha.Setup(x => x.ValidarFechaString(It.IsAny <string>())).Returns(new DateTime(2020, 1, 1, 0, 1, 0)); string[] campos = new string[6]; campos[0] = "Tizimín"; campos[1] = "Mérida"; campos[2] = "147"; campos[3] = "DHL"; campos[4] = "Tren"; campos[5] = "01/01/2020 00:01:00"; //Act IPedido pedido = _pobladorPedido.PoblarPedido(campos); //Assert Assert.AreEqual("Tizimín", pedido.Origen); Assert.AreEqual("Mérida", pedido.Destino); Assert.AreEqual(147, pedido.Distancia); Assert.AreEqual("DHL", pedido.Empresa); Assert.AreEqual(TipoTransporte.Tren, pedido.TipoTransporte); Assert.AreEqual(new DateTime(2020, 01, 01, 0, 1, 0), pedido.FechaHora); }
public void RealizarEntrega(IPedido pedido, int margenUtilidad) { throw new NotImplementedException(); }
public abstract string FormatearMensaje(IPedido pedido);
public void EnviarPedido(IPedido pedido) { this.Facturacion.EnviarPedido(pedido); }
public PedidoController(IPedido pedido) { this._pedido = pedido; }
public PedidoController(IPedido pedido, DataCarritoCompras carritoCompras) { this.pedidoRepositorio = pedido; carritoComprasRepositorio = carritoCompras; }
public PedidoController(IPedido pedido) { _pedido = pedido; }
public PedidoController(IPedido IPedido, IItemPedido IItemPedido) { _IPedido = IPedido; _IItemPedido = IItemPedido; }
public void EnviarPedido(IPedido pedido) { throw new NotImplementedException(); }
public PromocaoBusiness(IItemPedido IItemPedido, IPedido IPedido) { _IItemPedido = IItemPedido; _IPedido = IPedido; }
public async Task CadastrarPedido(IPedido pedido, CancellationToken cancellationToken = default) { await this.contexto.Pedido.AddAsync((Pedido)pedido, cancellationToken); await this.contexto.SaveChangesAsync(cancellationToken); }
public PedidoController() { _pedidoRepository = new PedidoRepository(); }
public PedidoController(IPedido pedidoBll) { _pedidoBll = pedidoBll; }