public DataSet ObterDadosRelatorioAdo(string nomeRelatorio, ReportFiltroViewModel filtroModel)
        {
            if (string.IsNullOrEmpty(nomeRelatorio) || filtroModel == null)
            {
                return(null);
            }

            switch (nomeRelatorio.ToLower())
            {
            case "fluxodeatendimentos":

                return(_servicoReport.ObterDadosRelatorioFluxoDeAtendimento(filtroModel.DataInicio,
                                                                            filtroModel.DataFim,
                                                                            filtroModel.CanalId, filtroModel.OcorrenciaTipoEstrutura, filtroModel.StatusEntidadeId,
                                                                            filtroModel.Sentido, filtroModel.UsuarioId));

            case "fluxodeatendimentosprodutivos":
                return(_servicoReport.ObterDadosRelatorioFluxoDeAtendimentoProdutivo(filtroModel.DataInicio,
                                                                                     filtroModel.DataFim,
                                                                                     filtroModel.CanalId, filtroModel.OcorrenciaTipoEstrutura, filtroModel.StatusEntidadeId,
                                                                                     filtroModel.Sentido, filtroModel.UsuarioId));
            }

            return(null);
        }
        public ReportViewModel CarregarRelatorio(string nomeRelatorio, ReportFiltroViewModel filtroModel, bool carregarDados = false)
        {
            var model = new ReportViewModel(nomeRelatorio);

            if (!model.ValidationResult.IsValid)
            {
                return(model);
            }

            if (filtroModel == null)
            {
                //Primeiro Passo - Carregar os Filtros padrões
                model = CarregarFiltrosPadrão(model);
            }
            else
            {
                model.Filtro = filtroModel;
                model.Filtro = CarregarFiltrosPorExtenso(model.Filtro);
            }

            model.Filtro.SetarParametrosConformeRelatorio(nomeRelatorio);

            if (carregarDados)
            {
                if (model.EhDataSet)
                {
                    model.DataSet = ObterDadosRelatorioAdo(model.NomeArquivoRelatorio, model.Filtro);
                }
                else
                {
                    model.Dados = ObterDadosRelatorio(model.NomeArquivoRelatorio, model.Filtro);
                }
            }

            return(model);
        }
        public ReportFiltroViewModel CarregarFiltrosPorExtenso(ReportFiltroViewModel model)
        {
            //model.dsAtividadeTipo
            if (model.AtividadeTipoId != null && string.IsNullOrEmpty(model.DsAtividadeTipo))
            {
                model.DsAtividadeTipo = _servicoAtividadeTipo.ObterPorId((int)model.AtividadeTipoId).Nome;
            }

            //model.dsCanal
            if (model.AtividadeTipoId != null && string.IsNullOrEmpty(model.DsCanal))
            {
                model.DsCanal = _servicoAtividadeTipo.ObterPorId((int)model.AtividadeTipoId).Nome;
            }

            //model.dsCriadoPor
            if (!string.IsNullOrEmpty(model.CriadoPor) && string.IsNullOrEmpty(model.DsCriadoPor))
            {
                model.DsCriadoPor = _servicoUsuario.ObterPorUserId(model.CriadoPor).Nome;
            }

            //model.dsCliente
            if (model.PessoaFisicaId != null || model.PessoaJuridicaId != null ||
                model.PotenciaisClientesId != null && string.IsNullOrEmpty(model.DsCliente))
            {
                if (model.PessoaFisicaId != null)
                {
                    model.DsCliente = _servicoPessoaFisica.ObterPorId((long)model.PessoaFisicaId).Nome;
                }

                if (model.PessoaJuridicaId != null)
                {
                    model.DsCliente = _servicoPessoaJuridica.ObterPorId((long)model.PessoaJuridicaId).RazaoSocial;
                }

                if (model.PotenciaisClientesId != null)
                {
                    model.DsCliente = _servicoPotenciaisCliente.ObterPorId((long)model.PotenciaisClientesId).nome;
                }
            }

            //model.dsMidia
            if (model.MidiaId != null && string.IsNullOrEmpty(model.DsMidia) && model.MidiaId != 99999)
            {
                model.DsMidia = _servicoMidia.ObterPorId((int)model.MidiaId).Nome;
            }

            //model.dsOcorrenciaTipo
            if (model.OcorrenciaTipoId != null)
            {
                model.DsOcorrenciaTipo = _servicoOcorrenciaTipo.ObterPorId((int)model.OcorrenciaTipoId).Nome;
            }

            //model.dsOcorrenciaTratativa
            if (!string.IsNullOrEmpty(model.OcorrenciaTratativa) && string.IsNullOrEmpty(model.DsOcorrenciaTratativa))
            {
                model.DsOcorrenciaTratativa = model.OcorrenciaTratativa.ToLower() == "c" ? "Criado" : "Tratado";
            }

            //model.dsSentido
            if (!string.IsNullOrEmpty(model.Sentido) && string.IsNullOrEmpty(model.DsSentido))
            {
                model.DsSentido = model.Sentido.ToLower() == "e" ? "Receptivo" : "Ativo";
            }

            //model.dsStatusAtividade
            if (model.StatusAtividadeId != null && string.IsNullOrEmpty(model.DsStatusAtividade))
            {
                model.DsStatusAtividade = _servicoStatusAtividade.ObterPorId((int)model.StatusAtividadeId).Descricao;
            }

            //model.dsStatusEntidade
            if (model.StatusEntidadeId != null && string.IsNullOrEmpty(model.DsStatusEntidade))
            {
                model.DsStatusEntidade = _servicoStatusEntidade.ObterPorId((int)model.StatusEntidadeId).nome;
            }

            if (model.FilaId != null && string.IsNullOrEmpty(model.DsFila))
            {
                model.DsFila = _servicoFila.ObterPorId((int)model.FilaId).Nome;
            }


            if (model.CanalId.HasValue && string.IsNullOrEmpty(model.DsCanal))
            {
                model.DsCanal = _canalServico.ObterPorId((int)model.CanalId).Nome;
            }

            if (model.AtividadesNoPrazo.HasValue)
            {
                model.DsAtividadesNoPrazo = model.AtividadesNoPrazo.Value ? "Sim" : "Não";
            }

            if (model.ProdutoId.HasValue && string.IsNullOrEmpty(model.DsProduto))
            {
                model.DsProduto = _produtoServico.ObterPorId(model.ProdutoId.Value).nome;
            }

            return(model);
        }
        protected IEnumerable <dynamic> ObterDadosRelatorio(string nomeRelatorio, ReportFiltroViewModel filtroModel)
        {
            var dados = new List <dynamic>();

            if (string.IsNullOrEmpty(nomeRelatorio) || filtroModel == null)
            {
                return(dados);
            }

            switch (nomeRelatorio.ToLower())
            {
            case "consolidadocontato":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioConsolidadoContatos(filtroModel.AtividadeTipoId,
                                                                           filtroModel.DataInicio, filtroModel.DataFim, filtroModel.StatusAtividadeId,
                                                                           filtroModel.CriadoPor, filtroModel.Sentido, filtroModel.PessoaFisicaId,
                                                                           filtroModel.PessoaJuridicaId, filtroModel.PotenciaisClientesId, filtroModel.MidiaId))
                    .ToList
                        ();
                break;

            case "detalhecontato":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioDetalheContato(filtroModel.AtividadeTipoId,
                                                                      filtroModel.DataInicio, filtroModel.DataFim, filtroModel.StatusAtividadeId,
                                                                      filtroModel.CriadoPor, filtroModel.Sentido, filtroModel.MidiaId, filtroModel.PessoaFisicaId,
                                                                      filtroModel.PessoaJuridicaId, filtroModel.PotenciaisClientesId)).ToList();
                break;

            case "detalheocorrencia":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioDetalheOcorrencia(filtroModel.AtividadeTipoId,
                                                                         filtroModel.DataInicio, filtroModel.DataFim, filtroModel.StatusEntidadeId,
                                                                         filtroModel.CriadoPor, filtroModel.Sentido, filtroModel.MidiaId, filtroModel.PessoaFisicaId,
                                                                         filtroModel.PessoaJuridicaId, filtroModel.PotenciaisClientesId, filtroModel.OcorrenciaId,
                                                                         filtroModel.OcorrenciaTipoId, filtroModel.AtividadeId, filtroModel.AcaoOcorrencia,
                                                                         filtroModel.AtendimentoId)).ToList();
                break;

            case "consolidadofilaatividade":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioConsolidadoFilaAtividade(filtroModel.FilaId,
                                                                                filtroModel.DataInicio, filtroModel.DataFim)).ToList();
                break;

            case "detalheatividade":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioDetalheAtividade(filtroModel.FilaId,
                                                                        filtroModel.StatusAtividadeId, filtroModel.DataInicio, filtroModel.DataFim)).ToList();
                break;

            case "cronologiaatendimento":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioCronologiaAtendimento(filtroModel.DataInicio,
                                                                             filtroModel.DataFim)).ToList();
                break;

            case "ocorrencia":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioOcorrencia(filtroModel.DataInicio,
                                                                  filtroModel.DataFim)).ToList();
                break;

            case "ligacao":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioLigacao(filtroModel.DataInicio,
                                                               filtroModel.DataFim)).ToList();
                break;

            case "consolidadoocorrencia":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioConsolidadoOcorrencia(filtroModel.DataInicio,
                                                                             filtroModel.DataFim, filtroModel.CriadoPor, filtroModel.StatusAtividadeId,
                                                                             filtroModel.OcorrenciaTipoId)).ToList();
                break;

            case "atendimento":
                dados =
                    ((IEnumerable <dynamic>)
                     _servicoReport.ObterDadosRelatorioAtendimento(filtroModel.DataInicio,
                                                                   filtroModel.DataFim)).ToList();
                break;
            }

            return(dados);
        }