public IDtoResult HandleUpdate(UpdateLancheCommand command) { var lanche = _repository.GetById(command.Id); lanche.Update(command); _repository.Update(lanche); return(lanche.ToDto()); }
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()); }