Beispiel #1
0
        public IDtoResult HandleUpdate(UpdateLancheCommand command)
        {
            var lanche = _repository.GetById(command.Id);

            lanche.Update(command);
            _repository.Update(lanche);

            return(lanche.ToDto());
        }
Beispiel #2
0
        public static PedidoDto Calcular(PedidoCommand pedidoCommand, IIngredienteRepository ingredientesRepository, ILancheRepository lancheRepository)
        {
            var pedido = new PedidoDto();

            try
            {
                var AssemblyCurrent   = Assembly.GetExecutingAssembly();
                var promocoes         = AssemblyCurrent.GetTypes().Where(x => x.IsSubclassOf(typeof(CalculoBase)));
                var listaIngredientes = ingredientesRepository.GetAll();

                pedido.Lanche = lancheRepository.GetById(pedidoCommand.IdLanche).Nome;
                pedido.Valor  = pedidoCommand.ItensPedido.Sum(x => (listaIngredientes.FirstOrDefault(y => y.Id == x.IdIngrediente).Valor *x.Quantidade));
                var valorDesconto = 0.0m;

                foreach (var item in promocoes)
                {
                    var parametros = new List <object>()
                    {
                        pedidoCommand, listaIngredientes
                    };
                    var instancia = (CalculoBase)Activator.CreateInstance(item, parametros.ToArray());
                    valorDesconto += instancia.Calcular(pedido.Valor);
                }

                pedido.Desconto   = valorDesconto;
                pedido.ValorFinal = (pedido.Valor - valorDesconto);
                return(pedido);
            }
            catch (Exception)
            {
                return(new PedidoDto()
                {
                    ValorFinal = -1
                });
            }
        }
        public IDtoResult GetById(int Id)
        {
            var lanche = _repository.GetById(Id, "Ingredientes");

            return(lanche.ToDto());
        }