public GraphLinksModel CreateFluxograma(int fluxogramaId, int topologia, FluxogramaTipo tipoFluxograma)
 {
     return(new GraphLinksModel
     {
         NodeDataArray = pr_VCM_NoDrawingSelect(fluxogramaId),
         LinkDataArray = pr_VCM_CorrenteDrawingSelect(fluxogramaId),
         Erros = Validate(tipoFluxograma, topologia)
     });
 }
        public List <string> Validate(FluxogramaTipo tipoFluxograma, int topologiaId)
        {
            List <string> validateErrors = new List <string>();

            if (_unitOfw.ProdutoRepository.Get(y => y.TopologiaId == topologiaId).Count() == 0)
            {
                validateErrors.Add("Não há Produto para a topologia em uso.");
            }

            if (_unitOfw.PeriodoRepository.Get(y => y.TopologiaId == topologiaId).Count() == 0)
            {
                validateErrors.Add("Não há Período para a topologia em uso.");
            }

            if (tipoFluxograma == FluxogramaTipo.Cenario)
            {
                if (_unitOfw.EstadoRepository.Get(y => y.TopologiaId == topologiaId).Count() == 0)
                {
                    validateErrors.Add("Não há Estado para a topologia em uso.");
                }

                if (_unitOfw.ContratoRepository.Get(y => y.TopologiaId == topologiaId &&
                                                    y.TipoEntidade.Nome == "TakeOrPay" &&
                                                    y.TipoEntidade.Nome == "VendaFamilia" &&
                                                    y.TipoEntidade.Nome == "VendaProduto").Count() == 0)
                {
                    validateErrors.Add("Não há TakeOrPay e/ou VendaFamilia para a topologia em uso.");
                }



                var correntes = _unitOfw.CorrenteRepository.Get(y => y.TopologiaId == topologiaId).ToList();
                var correnteNaoContemProduto = correntes.Where(x => !_unitOfw.CorrenteProdutoRepository.Get().Select(y => y.CorrenteId).Contains(x.Id)).ToList();
                if (correnteNaoContemProduto.Count() > 0)
                {
                    var    elementos = correnteNaoContemProduto.Select(y => y.Codigo).Join(",");
                    string msg       = correnteNaoContemProduto.Count > 1 ? $"Os elementos {elementos} não contém produtos." : $"O elemento {elementos} não contém produtos.";

                    validateErrors.Add(msg);
                }

                // 1. Verifica se existem contratos por produto cadastrados na Topologia

                if (_unitOfw.ContratoRepository.Get(y => y.TopologiaId == topologiaId && y.TipoEntidade.Nome == "VendaProduto").Count() > 0)
                {
                    //Continuar fazendo a validação da classe MercadoContratoValidation linha 48
                }
            }



            return(validateErrors);
        }