public bool EntradaDelete(int cenarioId, string codigo, List <int> simbolos, VCMContext context)
 {
     //pr_VCM_EntradaDelete
     context.Entrada.RemoveRange(_unitOfw.EntradaRepository.Get(y => y.CenarioId == cenarioId && simbolos.Contains(y.SimboloId) &&
                                                                (string.IsNullOrWhiteSpace(codigo) || y.EntidadeCodigo1 == codigo)).ToList());
     return(true);
 }
        public bool SaveProcessamentoCenario(int elementoId, int cenarioId, bool incluirCalculoImposto, bool consumoEnergiaEletrica, bool consumoVapor)
        {
            using (var context = new VCMContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        //pr_VCane_ProcessamentoCenarioUpdate
                        var codigo = _unitOfw.NoRepository.Get(y => y.Id == elementoId).FirstOrDefault()?.Codigo;

                        List <int> simbolosId = new List <int>();
                        if (!incluirCalculoImposto)
                        {
                            simbolosId = _unitOfw.SimboloRepository.Get(y => y.Codigo == SimboloCodigo.PrecoCompraNF.ToString() ||
                                                                        y.Codigo == SimboloCodigo.PrecoVendaNF.ToString() ||
                                                                        y.Codigo == SimboloCodigo.ICMSPorctSubstEnt.ToString() ||
                                                                        y.Codigo == SimboloCodigo.ICMSPorctSubstSai.ToString() ||
                                                                        y.Codigo == SimboloCodigo.ValorBenefICMS.ToString()).Select(y => y.Id).ToList();
                        }
                        if (!consumoEnergiaEletrica || !consumoVapor)
                        {
                            if (!consumoEnergiaEletrica)
                            {
                                simbolosId.AddRange(_unitOfw.SimboloRepository.Get(y => y.Codigo == SimboloCodigo.ConseeT.ToString()).Select(y => y.Id).ToList());
                            }

                            if (!consumoVapor)
                            {
                                simbolosId.AddRange(_unitOfw.SimboloRepository.Get(y => y.Codigo == SimboloCodigo.ConsvapT.ToString()).Select(y => y.Id).ToList());
                            }
                        }


                        List <Entrada> entradasTobeDelete = _unitOfw.EntradaRepository.Get(y => simbolosId.Contains(y.SimboloId) &&
                                                                                           (y.EntidadeCodigo1 == codigo ||
                                                                                            simbolosId == null || simbolosId.Count == 0)).ToList();
                        EntradaDelete(cenarioId, codigo, simbolosId, context);

                        context.ProcessamentoCenario.Update(new ProcessamentoCenario
                        {
                            NoId      = elementoId,
                            CenarioId = cenarioId,
                            ConsumoEnergiaEletrica = consumoEnergiaEletrica,
                            ConsumoVapor           = consumoVapor,
                            IncluirCalculoImpostos = incluirCalculoImposto
                        });

                        context.SaveChanges();
                        transaction.Commit();
                        return(true);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                    }
                }
            }
            return(true);
        }
        private bool SaveFornecimentoCenario(RequestCenarioFluxogramaSave cenarioFluxograma)
        {
            using (var context = new VCMContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        FornecimentoCenario fornecimentoCenarioOld = _unitOfw.FornecimentoCenarioRepository.Get(y => y.NoId == cenarioFluxograma.NoId &&
                                                                                                                y.CenarioId == cenarioFluxograma.CenarioId).FirstOrDefault();

                        bool incluirCalculoImpostosOld = fornecimentoCenarioOld.IncluirCalculoImpostos;
                        bool suprimentoOld             = fornecimentoCenarioOld.Suprimento;

                        string codigo = _unitOfw.NoRepository.Get(y => y.Id == cenarioFluxograma.NoId).Select(y => y.Codigo).FirstOrDefault();

                        List <Simbolo> simbolos = new List <Simbolo>();
                        if (!cenarioFluxograma.IncluirCalculoImpostos)
                        {
                            simbolos = _unitOfw.SimboloRepository.Get(y => y.Codigo == SimboloCodigo.PrecoCompraNF.ToString() ||
                                                                      y.Codigo == SimboloCodigo.PrecoVendaNF.ToString() ||
                                                                      y.Codigo == SimboloCodigo.ICMSPorctSubstEnt.ToString() ||
                                                                      y.Codigo == SimboloCodigo.ICMSPorctSubstSai.ToString() ||
                                                                      y.Codigo == SimboloCodigo.ValorBenefICMS.ToString()).ToList();
                        }
                        else
                        {
                            incluirCalculoImpostosOld = _unitOfw.ArmazenamentoCenarioRepository.Get(y => y.NoId == cenarioFluxograma.NoId &&
                                                                                                    y.CenarioId == cenarioFluxograma.CenarioId)
                                                        .Select(y => y.IncluirCalculoImpostos).FirstOrDefault();
                        }
                        if (suprimentoOld != cenarioFluxograma.Suprimento && cenarioFluxograma.Suprimento == false)
                        {
                            simbolos.AddRange(_unitOfw.SimboloRepository.Get(y => y.Codigo == SimboloCodigo.SuprLo.ToString() && y.Codigo == SimboloCodigo.SuprUp.ToString()).ToList());
                        }

                        EntradaDelete(cenarioFluxograma.CenarioId, codigo, simbolos.Select(y => y.Id).ToList(), context);

                        FornecimentoCenario tobeSave = _mapper.Map <FornecimentoCenario>(cenarioFluxograma);
                        context.FornecimentoCenario.Update(tobeSave);

                        if (!incluirCalculoImpostosOld && cenarioFluxograma.IncluirCalculoImpostos)
                        {
                            LerValoresSaidaEntradaBaseCalculoImposto(cenarioFluxograma.CenarioId, codigo, context);
                        }

                        context.SaveChanges();
                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                    }
                }
            }
            return(true);
        }
示例#4
0
        public void Save(TopologiaViewModel model)
        {
            using (var context = new VCMContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        Topologia topologia = _mapper.Map <Topologia>(model);
                        context.Topologia.Add(topologia);

                        //pr_VCM_TopologiaInsert

                        //TODO:  esta fixo na function o "Sistema"  ([fn_find_TipoPropriedadeByNome])
                        int tipoPropriedadeId = _unitOfw.TipoPropriedadeRepository.Get(y => y.Nome == "Padrao").Select(y => y.Id).FirstOrDefault();
                        int tipoValorId       = _unitOfw.TipoValorRepository.Get(y => y.Nome == "Sistema").Select(y => y.Id).FirstOrDefault();

                        //cadeiaId = _unitOfw.ProjetoRepository.Get(y => y.Topologia.Any(t => t.Id == tobeSave.Id)).Select(c => c.Cadeia.Id).FirstOrDefault();

                        //TODO: CENARIO1 Fixo na Procedure [pr_VCM_CenarioInsert]
                        Cenario cenario = new Cenario {
                            Nome = "CENARIO1", TopologiaId = topologia.Id
                        };
                        context.Cenario.Add(cenario);

                        FluxogramaDrawing fluxogramaDrawing = new FluxogramaDrawing(topologia.Id, 0, 0, 1);
                        context.FluxogramaDrawing.Add(fluxogramaDrawing);

                        PropriedadeTopologiaCreate(tipoPropriedadeId, topologia.Id, context);

                        context.SaveChanges();
                        transaction.Commit();


                        model.Id           = topologia.Id;
                        model.CenarioId    = cenario.Id;
                        model.Id           = topologia.Id;
                        model.FluxogramaId = fluxogramaDrawing.Id;
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                    }
                }
            }
        }
        public List <DiagramaLinkModel> pr_VCM_CorrenteDrawingSelect(Int32 fluxogramaId)
        {
            using (var context = new VCMContext())
                using (var command = context.Database.GetDbConnection().CreateCommand())
                {
                    command.CommandText = string.Format("exec [pr_VCM_CorrenteDrawingSelect] {0}", fluxogramaId);
                    context.Database.OpenConnection();

                    List <DiagramaLinkModel> diagramaLinkModels = new List <DiagramaLinkModel>();
                    using (var rdr = command.ExecuteReader())
                    {
                        Int32 ordId                = rdr.GetOrdinal("Id");
                        Int32 ordCodigo            = rdr.GetOrdinal("Codigo");
                        Int32 ordEntradaId         = rdr.GetOrdinal("EntradaId");
                        Int32 ordEntradaCodigo     = rdr.GetOrdinal("EntradaCodigo");
                        Int32 ordSaidaId           = rdr.GetOrdinal("SaidaId");
                        Int32 ordSaidaCodigo       = rdr.GetOrdinal("SaidaCodigo");
                        Int32 ordModalId           = rdr.GetOrdinal("ModalId");
                        Int32 ordPortaEntradaIndex = rdr.GetOrdinal("PortaEntradaIndex");
                        Int32 ordPortaSaidaIndex   = rdr.GetOrdinal("PortaSaidaIndex");

                        while (rdr.Read())
                        {
                            diagramaLinkModels.Add(
                                new DiagramaLinkModel
                            {
                                Key          = rdr.GetInt32(ordId),
                                Code         = rdr.GetString(ordCodigo),
                                From         = rdr.GetInt32(ordEntradaId),
                                To           = rdr.GetInt32(ordSaidaId),
                                ToPort       = ((PortSpot)rdr.GetInt32(ordPortaSaidaIndex)).ToString().ToLower(),
                                EntradaIndex = rdr.GetInt32(ordPortaEntradaIndex),
                                FromPort     = ((PortSpot)rdr.GetInt32(ordPortaEntradaIndex)).ToString().ToLower(),
                                SaidaIndex   = rdr.GetInt32(ordPortaSaidaIndex),
                                Color        = rdr.IsDBNull(ordModalId) ? ((ModalColor)0).ToString() : ((ModalColor)rdr.GetInt32(ordModalId)).ToString(),
                            });
                        }
                    }

                    return(diagramaLinkModels);
                }
        }
示例#6
0
        public Projeto Update(ProjetoViewModel model)
        {
            Projeto projectToBeSaved = _unitOfw.ProjetoRepository.GetQuery(y => y.Id == model.Id, "MedidaProjeto");

            if (projectToBeSaved == null)
            {
                return(null);
            }

            using (var context = new VCMContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        List <int> unitIdsFromDB = projectToBeSaved.MedidaProjeto.Select(s => s.UnidadeMedidaId).ToList();

                        List <int> unitsIDToBeInserted = model.UnidadeMedidaId.Except(unitIdsFromDB).ToList();
                        List <int> unitsIDToBeRemoved  = unitIdsFromDB.Except(model.UnidadeMedidaId).ToList();


                        unitsIDToBeInserted.ForEach(x => projectToBeSaved.MedidaProjeto.Add(new MedidaProjeto {
                            ProjetoId = (int)model.Id, UnidadeMedidaId = x
                        }));
                        unitsIDToBeRemoved.ForEach(x => projectToBeSaved.MedidaProjeto.Remove(projectToBeSaved.MedidaProjeto.Where(y => y.UnidadeMedidaId == x).FirstOrDefault()));

                        projectToBeSaved.Nome = model.Nome;
                        projectToBeSaved.Nota = model.Nota;

                        context.Projeto.Update(projectToBeSaved);
                        _unitOfw.MedidaProjetoRepository.Delete(y => y.ProjetoId == projectToBeSaved.Id);

                        context.SaveChanges();
                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                    }
                }
                return(projectToBeSaved);
            }
        }
示例#7
0
        public ProjetoViewModel Register(ProjetoViewModel model)
        {
            var projeto = _mapper.Map <Projeto>(model);

            using (var context = new VCMContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        context.Projeto.AddRange(projeto);

                        List <MedidaProjeto> medidas = new List <MedidaProjeto>();
                        foreach (var oneMedidaProjeto in model.UnidadeMedidaId)
                        {
                            medidas.Add(new MedidaProjeto()
                            {
                                UnidadeMedidaId = oneMedidaProjeto, ProjetoId = projeto.Id
                            });
                        }
                        context.AddRange(medidas);
                        context.SaveChanges();
                        transaction.Commit();
                    }


                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }

            model.Id = projeto.Id;
            return(model);
        }
示例#8
0
        private void PropriedadeTopologiaCreate(int tipoPropriedadeId, int topologiaId, VCMContext context)
        {
            List <PropriedadeTopologia> propriedadeTopologiaList = new List <PropriedadeTopologia>();

            List <Propriedade> tipoPropriedadeList = _unitOfw.PropriedadeRepository.Get(y => y.TipoPropriedadeId == tipoPropriedadeId).ToList();

            foreach (var oneTipoPropriedadeList in tipoPropriedadeList)
            {
                PropriedadeTopologia propriedadeTopologia = new PropriedadeTopologia {
                    PropriedadeId = oneTipoPropriedadeList.Id, TopologiaId = topologiaId
                };
                propriedadeTopologiaList.Add(propriedadeTopologia);
            }
            context.PropriedadeTopologia.AddRange(propriedadeTopologiaList);
        }
示例#9
0
        public async Task <List <Entidade> > EntidadesEntity(string exp)
        {
            try
            {
                #region Cast Expres
                var optionsBlend            = ScriptOptions.Default.AddReferences(typeof(Blend).Assembly);
                Func <Blend, bool> blendexp = await CSharpScript.EvaluateAsync <Func <Blend, bool> >(exp, optionsBlend);

                var optionsEntidade             = ScriptOptions.Default.AddReferences(typeof(Conjunto).Assembly);
                Func <Conjunto, bool> conjueExp = await CSharpScript.EvaluateAsync <Func <Conjunto, bool> >(exp, optionsEntidade);

                var optionsContrato           = ScriptOptions.Default.AddReferences(typeof(Contrato).Assembly);
                Func <Contrato, bool> contExp = await CSharpScript.EvaluateAsync <Func <Contrato, bool> >(exp, optionsContrato);

                var optionsdes = ScriptOptions.Default.AddReferences(typeof(Desconto).Assembly);
                Func <Desconto, bool> descExp = await CSharpScript.EvaluateAsync <Func <Desconto, bool> >(exp, optionsdes);

                var optionsEst             = ScriptOptions.Default.AddReferences(typeof(Estado).Assembly);
                Func <Estado, bool> estExp = await CSharpScript.EvaluateAsync <Func <Estado, bool> >(exp.Replace("Codigo", "Sigla"), optionsEst);

                var optionsfai = ScriptOptions.Default.AddReferences(typeof(FaixaDesconto).Assembly);
                Func <FaixaDesconto, bool> faixExp = await CSharpScript.EvaluateAsync <Func <FaixaDesconto, bool> >(exp, optionsfai);

                var optfaxCusExpree = ScriptOptions.Default.AddReferences(typeof(FaixaCustoFixo).Assembly);
                Func <FaixaCustoFixo, bool> faxCusExpree = await CSharpScript.EvaluateAsync <Func <FaixaCustoFixo, bool> >(exp, optfaxCusExpree);

                var optfaxfam = ScriptOptions.Default.AddReferences(typeof(Familia).Assembly);
                Func <Familia, bool> famExpr = await CSharpScript.EvaluateAsync <Func <Familia, bool> >(exp, optfaxfam);

                var optPais = ScriptOptions.Default.AddReferences(typeof(Pais).Assembly);
                Func <Pais, bool> paisExpree = await CSharpScript.EvaluateAsync <Func <Pais, bool> >(exp, optPais);

                var optPeriodo = ScriptOptions.Default.AddReferences(typeof(Periodo).Assembly);
                Func <Periodo, bool> periExpr = await CSharpScript.EvaluateAsync <Func <Periodo, bool> >(exp, optPeriodo);

                var optPeriodoAgregado = ScriptOptions.Default.AddReferences(typeof(PeriodoAgregado).Assembly);
                Func <PeriodoAgregado, bool> periodAExpree = await CSharpScript.EvaluateAsync <Func <PeriodoAgregado, bool> >(exp, optPeriodoAgregado);

                var optPrecoBase = ScriptOptions.Default.AddReferences(typeof(PrecoBase).Assembly);
                Func <PrecoBase, bool> precExpr = await CSharpScript.EvaluateAsync <Func <PrecoBase, bool> >(exp, optPrecoBase);

                var optProduto = ScriptOptions.Default.AddReferences(typeof(Produto).Assembly);
                Func <Produto, bool> produExpree = await CSharpScript.EvaluateAsync <Func <Produto, bool> >(exp, optProduto);

                var optRegiao = ScriptOptions.Default.AddReferences(typeof(Regiao).Assembly);
                Func <Regiao, bool> regiExpr = await CSharpScript.EvaluateAsync <Func <Regiao, bool> >(exp, optRegiao);

                var optRestricao = ScriptOptions.Default.AddReferences(typeof(Restricao).Assembly);
                Func <Restricao, bool> restExpree = await CSharpScript.EvaluateAsync <Func <Restricao, bool> >(exp, optRestricao);

                var optSilo = ScriptOptions.Default.AddReferences(typeof(Silo).Assembly);
                Func <Silo, bool> siloExpress = await CSharpScript.EvaluateAsync <Func <Silo, bool> >(exp, optSilo);

                var optValvula = ScriptOptions.Default.AddReferences(typeof(Valvula).Assembly);
                Func <Valvula, bool> valExpree = await CSharpScript.EvaluateAsync <Func <Valvula, bool> >(exp, optValvula);

                var optCorrente = ScriptOptions.Default.AddReferences(typeof(Corrente).Assembly);
                Func <Corrente, bool> corrExpress = await CSharpScript.EvaluateAsync <Func <Corrente, bool> >(exp, optCorrente);

                var             optNo     = ScriptOptions.Default.AddReferences(typeof(No).Assembly);
                Func <No, bool> noExpress = await CSharpScript.EvaluateAsync <Func <No, bool> >(exp, optNo);

                var optEntidade = ScriptOptions.Default.AddReferences(typeof(Entidade).Assembly);
                Func <Entidade, bool> entidadeExpress = await CSharpScript.EvaluateAsync <Func <Entidade, bool> >(exp, optEntidade);

                #endregion



                IQueryable <Entidade> entidades;
                List <Entidade>       entidadesList = new List <Entidade>();
                using (var context = new VCMContext())
                {
                    entidades = ((from a in context.Blend.Where(blendexp) select new Entidade {
                        Codigo = a.Codigo, Id = a.Id, TipoEntidadeId = a.TipoEntidadeId, TopologiaId = a.TopologiaId
                    })
                                 .Concat((from b in context.Conjunto.Where(conjueExp) select new Entidade {
                        Codigo = b.Codigo, Id = b.Id, TipoEntidadeId = b.TipoEntidadeId, TopologiaId = b.TopologiaId
                    })
                                         .Concat((from c in context.Contrato.Where(contExp) select new Entidade {
                        Codigo = c.Codigo, Id = c.Id, TipoEntidadeId = c.TipoEntidadeId, TopologiaId = c.TopologiaId
                    })
                                                 .Concat((from d in context.Desconto.Where(descExp) select new Entidade {
                        Codigo = d.Codigo, Id = d.Id, TipoEntidadeId = d.TipoEntidadeId, TopologiaId = d.TopologiaId
                    })
                                                         .Concat((from e in context.Estado.Where(estExp) select new Entidade {
                        Codigo = e.Sigla, Id = e.Id, TipoEntidadeId = e.TipoEntidadeId, TopologiaId = e.TopologiaId
                    })
                                                                 .Concat((from f in context.FaixaDesconto.Where(faixExp) select new Entidade {
                        Codigo = f.Codigo, Id = f.Id, TipoEntidadeId = f.TipoEntidadeId, TopologiaId = f.TopologiaId
                    })
                                                                         .Concat((from g in context.FaixaCustoFixo.Where(faxCusExpree) select new Entidade {
                        Codigo = g.Codigo, Id = g.Id, TipoEntidadeId = g.TipoEntidadeId, TopologiaId = g.TopologiaId
                    })
                                                                                 .Concat((from h in context.Familia.Where(famExpr) select new Entidade {
                        Codigo = h.Codigo, Id = h.Id, TipoEntidadeId = h.TipoEntidadeId, TopologiaId = h.TopologiaId
                    })
                                                                                         .Concat((from i in context.Pais.Where(paisExpree) select new Entidade {
                        Codigo = i.Codigo, Id = i.Id, TipoEntidadeId = i.TipoEntidadeId, TopologiaId = i.TopologiaId
                    })
                                                                                                 .Concat((from k in context.Periodo.Where(periExpr) select new Entidade {
                        Codigo = k.Codigo, Id = k.Id, TipoEntidadeId = k.TipoEntidadeId, TopologiaId = k.TopologiaId
                    })
                                                                                                         .Concat((from l in context.PeriodoAgregado.Where(periodAExpree) select new Entidade {
                        Codigo = l.Codigo, Id = l.Id, TipoEntidadeId = l.TipoEntidadeId, TopologiaId = l.TopologiaId
                    })
                                                                                                                 .Concat((from m in context.PrecoBase.Where(precExpr) select new Entidade {
                        Codigo = m.Codigo, Id = m.Id, TipoEntidadeId = m.TipoEntidadeId, TopologiaId = m.TopologiaId
                    })
                                                                                                                         .Concat((from n in context.Produto.Where(produExpree) select new Entidade {
                        Codigo = n.Codigo, Id = n.Id, TipoEntidadeId = n.TipoEntidadeId, TopologiaId = n.TopologiaId
                    })
                                                                                                                                 .Concat((from o in context.Regiao.Where(regiExpr) select new Entidade {
                        Codigo = o.Codigo, Id = o.Id, TipoEntidadeId = o.TipoEntidadeId, TopologiaId = o.TopologiaId
                    })
                                                                                                                                         .Concat((from p in context.Restricao.Where(restExpree) select new Entidade {
                        Codigo = p.Codigo, Id = p.Id, TipoEntidadeId = p.TipoEntidadeId, TopologiaId = p.TopologiaId
                    })
                                                                                                                                                 .Concat((from q in context.Silo.Where(siloExpress) select new Entidade {
                        Codigo = q.Codigo, Id = q.Id, TipoEntidadeId = q.TipoEntidadeId, TopologiaId = q.TopologiaId
                    })
                                                                                                                                                         .Concat((from r in context.Valvula.Where(valExpree) select new Entidade {
                        Codigo = r.Codigo, Id = r.Id, TipoEntidadeId = r.TipoEntidadeId, TopologiaId = r.TopologiaId
                    })
                                                                                                                                                                 .Concat((from p in this._context.Propriedade
                                                                                                                                                                          join pt in this._context.PropriedadeTopologia on p.Id equals pt.PropriedadeId
                                                                                                                                                                          join te in this._context.TipoEntidade on new { a = "Propriedade" } equals new { a = te.Nome }
                                                                                                                                                                          where p.TipoPropriedadeId != null
                                                                                                                                                                          select new Entidade {
                        Id = pt.Id, TipoEntidadeId = te.Id, TopologiaId = pt.TopologiaId
                    })

                                                                                                                                                                         .Concat((from co in context.Corrente.Where(corrExpress) select new Entidade {
                        Codigo = co.Codigo, Id = co.Id, TipoEntidadeId = co.TipoEntidadeId, TopologiaId = co.TopologiaId
                    })
                                                                                                                                                                                 .Concat((from no in context.No.Where(noExpress) select new Entidade {
                        Codigo = no.Codigo, Id = no.Id, TipoEntidadeId = no.TipoEntidadeId, TopologiaId = no.TopologiaId
                    })

                                                                                                                                                                                         )))))))))))))))))))).AsQueryable();

                    entidadesList = entidades.Where(entidadeExpress).ToList();
                }
                return(entidadesList);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
示例#10
0
 public GenericRepository(VCMContext context)
 {
     _context   = new VCMContext();
     this.dbSet = _context.Set <TEntity>();
 }
        private bool LerValoresSaidaEntradaBaseCalculoImposto(int cenarioId, string entidadeRaizCodigo, VCMContext context)
        {
            //pr_VCM_LerValoresSaidaBaseCalculoImposto
            //pr_VCM_LerValoresEntradaBaseCalculoImposto

            List <Entrada> entradaInsertList = new List <Entrada>();

            entradaInsertList.AddRange(LerValoresSaidaEntradaBaseCalculoImposto(cenarioId, entidadeRaizCodigo, 693, 695));
            entradaInsertList.AddRange(LerValoresSaidaEntradaBaseCalculoImposto(cenarioId, entidadeRaizCodigo, 694, 696));
            entradaInsertList.AddRange(LerValoresSaidaEntradaBaseCalculoImposto(cenarioId, entidadeRaizCodigo, 695, 693));
            entradaInsertList.AddRange(LerValoresSaidaEntradaBaseCalculoImposto(cenarioId, entidadeRaizCodigo, 696, 694));


            context.Entrada.AddRange(entradaInsertList);
            return(true);
        }
        public bool SaveArmazenamentoCenario(int elementoId, int cenarioId, bool incluircalculoImposto, int tipoArmazenamentoId, decimal capex, bool comFaixa)
        {
            using (var context = new VCMContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        //pr_VCM_ArmazenamentoCenarioUpdate
                        var codigo = _unitOfw.NoRepository.Get(y => y.Id == elementoId).FirstOrDefault()?.Codigo;

                        List <int> simbolos = new List <int>();
                        if (!incluircalculoImposto)
                        {
                            simbolos = _unitOfw.SimboloRepository.Get(y => y.Codigo == SimboloCodigo.PrecoCompraNF.ToString() ||
                                                                      y.Codigo == SimboloCodigo.PrecoVendaNF.ToString() ||
                                                                      y.Codigo == SimboloCodigo.ICMSPorctSubstEnt.ToString() ||
                                                                      y.Codigo == SimboloCodigo.ICMSPorctSubstSai.ToString() ||
                                                                      y.Codigo == SimboloCodigo.ValorBenefICMS.ToString()).Select(y => y.Id).ToList();
                        }
                        EntradaDelete(cenarioId, codigo, simbolos, context);
                        ArmazenamentoCenario armazenamentoCenario = _unitOfw.ArmazenamentoCenarioRepository.Get(y => y.NoId == elementoId && y.CenarioId == cenarioId).FirstOrDefault();

                        bool incluirCalculoImpostoOld = armazenamentoCenario.IncluirCalculoImpostos;

                        armazenamentoCenario.TipoArmazenamentoId    = tipoArmazenamentoId;
                        armazenamentoCenario.IncluirCalculoImpostos = incluircalculoImposto;
                        armazenamentoCenario.Capex    = capex;
                        armazenamentoCenario.ComFaixa = comFaixa;
                        _unitOfw.ArmazenamentoCenarioRepository.Update(armazenamentoCenario);

                        if (!incluirCalculoImpostoOld && incluircalculoImposto)
                        {
                            LerValoresSaidaEntradaBaseCalculoImposto(cenarioId, codigo, context);
                        }

                        if (comFaixa)
                        {
                            var faixacustoFixo = (from fcf in _unitOfw.FaixaCustoFixoRepository.Get(y => y.Id == cenarioId && y.Codigo != "F001")
                                                  join c in _unitOfw.CenarioRepository.Get() on fcf.TopologiaId equals c.TopologiaId
                                                  select new List <int>
                            {
                                fcf.Id
                            }).FirstOrDefault();

                            var toBeDelete = _unitOfw.NoCenarioFaixaCustoFixoRepository.Get(y => y.NoId == elementoId && y.CenarioId == cenarioId && faixacustoFixo.Contains(y.FaixaId)).ToList();
                            context.NoCenarioFaixaCustoFixo.RemoveRange(toBeDelete);

                            var simbolosId = _unitOfw.SimboloRepository.Get(v => (v.Codigo == "valorFaixaInfU" || v.Codigo == "valorFaixaSupU") ||
                                                                            (v.Codigo == "CfxoUA")).Select(s => s.Id).ToList();

                            List <Entrada> entradasTobeDelete = _unitOfw.EntradaRepository.Get(y => y.EntidadeCodigo1 == codigo && y.EntidadeCodigo3 != "F001" &&
                                                                                               simbolosId.Contains(y.SimboloId)).ToList();
                            context.Entrada.RemoveRange(entradasTobeDelete);
                        }
                        return(true);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                    }
                }
            }

            return(true);
        }