public void Salvar(AssociacaoNI associacaoNI)
 {
     var sessionFactory = Conexao.CreateSessionFactory();
     using (var session = sessionFactory.OpenSession())
     {
         try
         {
             session.Transaction.Begin();
             session.SaveOrUpdate(associacaoNI);
             session.Transaction.Commit();
         }
         catch (Exception e)
         {
             session.Transaction.Rollback();
         }
     }
 }
        protected void btnCalcularPontosDeFuncao_Click(object sender, EventArgs e)
        {
            var idsPF = BuscaIdsPF();
            var idsNC = BuscaIdsNC();
            var idsCG = BuscaIdsCG();
            var idsNI = BuscaIdsNI();

            if (Validar(idsPF.ToArray(), idsNC.ToArray(), idsCG.ToArray(), idsNI.ToArray()))
            {
                var aPF = new AtribuicaoDePesoPFControl().BuscarPorPFeNC(idsPF.ToArray(), idsNC.ToArray());
                var aCG = new AtribuicaoDePesoNIControl().BuscarPorCGeNI(idsCG.ToArray(), idsNI.ToArray());

                var itemProjeto = new FuncaoDoProjetoControl().Buscar(Convert.ToInt16(hdfIdItemProjeto.Value));

                int PFB = 0;
                int TNI = 0;
                double FA = 0;
                //calcular pontos de função brutos
                foreach (var p in aPF)
                {
                    PFB = p.Avaliacao + PFB;
                }
                //soma dos NI
                foreach (var n in aCG)
                {
                    TNI = n.Avaliacao + TNI;
                }
                //calcular fator de ajuste
                FA = 0.65 + (0.01 * TNI);
                //CALCULAR PONTOS DE FUNÇÃO AJUSTADP
                //PFA = PFB * FA
                itemProjeto.PfAjustado = PFB * FA;
                itemProjeto.NivelDeInfluenciaTotal = TNI;
                itemProjeto.PfBruto = PFB;
                itemProjeto.FatorDeAjuste = FA;

                DateTime dataCalculo = DateTime.Now;
                try
                {
                    //AMARRAR O ITEM DE PROJETO COM ASSOCIACAOPF
                    foreach (var p in aPF)
                    {
                        var associacaoPf = new AssociacaoPF();
                        associacaoPf.FuncaoDoProjeto = itemProjeto;
                        associacaoPf.AtribuicaoDePesoPF = p;
                        associacaoPf.DataAvaliacao = dataCalculo;
                        new AssociacaoPFControl().Salvar(associacaoPf);
                    }
                    foreach (var c in aCG)
                    {
                        var associacaoNI = new AssociacaoNI();
                        associacaoNI.FuncaoDoProjeto = itemProjeto;
                        associacaoNI.AtribuicaoDePesoNI = c;
                        associacaoNI.DataAvaliacao = dataCalculo;
                        new AssociacaoNIControl().Salvar(associacaoNI);
                    }

                    new FuncaoDoProjetoControl().Salvar(itemProjeto);

                    lblPontosDeFuncaoAjustados.Text = itemProjeto.PfAjustado.ToString();
                }
                catch (Exception ex) { }
                //AMARRAR O ITEM DE PROJETO COM ASSOCIACAONI

                //ATUALIZAR O ITEM DE PROJETO COM OS CÁLCULOS

            }
        }