public void CarregarTabelaNutricional(string FileName)
        {
            var xlsFile = new ExcelQueryFactory(FileName);
            var listaTabelaNutricional = tabelaNutricionalBm.GetAll().Select(x => x.NomePlanilhaCarga).ToList();

            var listaDados = from f in xlsFile.Worksheet("Plan1") select f;

            foreach (var ing in listaDados)
            {
                //Carregando a Categoria
                CategoriaIngrediente categoria = categoriaIngredienteBm.GetByNome(ing["Categoria"].Value.ToString());
                if (categoria == null)
                {
                    categoria = new CategoriaIngrediente()
                    {
                        Nome = ing["Categoria"].Value.ToString()
                    };
                    categoriaIngredienteBm.Insert(categoria);
                }

                //Carregando o Cliente
                Ingrediente ingrediente = ingredienteBm.GetByCodigoTACO(int.Parse(ing["CodigoTACO"].Value.ToString()));

                if (ingrediente == null)
                {
                    ingrediente = new Ingrediente()
                    {
                        Ativo = true,
                        Categoria = categoriaIngredienteBm.GetByID(categoria.IdCategoriaIngrediente),
                        CodigoTACO = int.Parse(ing["CodigoTACO"].Value.ToString()),
                        NomeTACO = ing["NomeTACO"].ToString()
                    };

                    ingredienteBm.Insert(ingrediente);
                }

                //Percorrendo a lista de atributos da tabela nutricional para inclusão
                foreach(var nomeComp in listaTabelaNutricional)
                {
                    double valor = 0;
                    double.TryParse(ing[nomeComp.Trim()].Value.ToString(), out valor);

                    TabelaNutricional componente = tabelaNutricionalBm.GetByNomePlanilha(nomeComp.Trim());

                    var ingredienteTabelaNutricional = ingredienteTabelaNutricionalBm.GetByIngredienteAndTabelaNutricional(ingredienteBm.GetByID(ingrediente.IdIngrediente), componente);

                    if (ingredienteTabelaNutricional == null)
                    {
                        ingredienteTabelaNutricional = new IngredienteTabelaNutricional()
                        {
                            Componente = tabelaNutricionalBm.GetByID(componente.IdTabelaNutricional),
                            Ingrediente = ingredienteBm.GetByID(ingrediente.IdIngrediente),

                        };

                        ingredienteTabelaNutricionalBm.Insert(ingredienteTabelaNutricional);

                    }

                    ingredienteTabelaNutricional.Valor = valor;
                    ingredienteTabelaNutricional.PercValorDiario = CalculaPercentualDiario(ingredienteTabelaNutricional);
                    ingredienteTabelaNutricionalBm.Update(ingredienteTabelaNutricional);

                }

            }
        }
        private IngredienteTabelaNutricionalModel ParseIngredienteTabelaNutricionalModel(IngredienteTabelaNutricional pIngrediente)
        {
            return new IngredienteTabelaNutricionalModel()
            {
                IdIngredienteTabelaNutricional = pIngrediente.IdIngredienteTabelaNutricional,
                Valor = pIngrediente.Valor,
                Ingrediente = new IngredientesModel()
                {
                    IdIngrediente = pIngrediente.Ingrediente.IdIngrediente,
                    Abreviatura = pIngrediente.Ingrediente.Abreviatura,
                    Nome = pIngrediente.Ingrediente.Nome,
                    Ativo = pIngrediente.Ingrediente.Ativo,
                    Categoria = new CategoriaIngredienteModel()
                    {
                        IdCategoriaIngrediente = pIngrediente.Ingrediente.Categoria.IdCategoriaIngrediente,
                        Nome = pIngrediente.Ingrediente.Categoria.Nome
                    },
                    CodigoTACO = pIngrediente.Ingrediente.CodigoTACO,
                    NomeTACO = pIngrediente.Ingrediente.NomeTACO

                },
                ComponenteNutricional = new TabelaNutricionalModel()
                {
                    IdTabelaNutricionalModel = pIngrediente.Componente.IdTabelaNutricional,
                    Nome = pIngrediente.Componente.Nome,
                    UnidadeMedida = pIngrediente.Componente.UnidadeMedida
                }

            };
        }
 private double? CalculaPercentualDiario(IngredienteTabelaNutricional pIngrediente)
 {
     if (!pIngrediente.Componente.ValorDiario.HasValue || pIngrediente.Componente.ValorDiario.Value == 0)
         return null;
     else
         return Math.Round((pIngrediente.Valor / pIngrediente.Componente.ValorDiario.Value) * 100,2);
 }