public ActionResult Index(int solicitacaoID) { try { //TODO: Nelson Neto - RETIRAR OS COMENTÁRIOS //int idSolicitacao = 124; int solicitacaoTipoID = 1; int papelID = 1; var contratanteID = (int)Geral.PegaAuthTicket("ContratanteId"); ViewBag.Fluxo = solicitacaoTipoID; ViewBag.Bancos = _bancoBP.ListarTodosPorNome(); #region Ficha Cadastral FichaCadastralWebForLinkVM modelo = new FichaCadastralWebForLinkVM { DadosBancarios = new List <DadosBancariosVM>(), DadosContatos = new List <DadosContatoVM>(), SolicitacaoFornecedor = new SolicitacaoFornecedorVM { Documentos = new List <SolicitacaoDocumentosVM>() }, Aprovacao = new AprovacaoVM(), Solicitacao = new SolicitacaoVM { Fluxo = new FluxoVM() }, DadosBloqueio = new DadosBloqueioVM(), FornecedorRobo = new FornecedorRoboVM(), FornecedoresUnspsc = new List <FornecedorUnspscVM>() }; #region BPs SOLICITACAO solicitacao = _solicitacaoService.BuscarPorSolicitacaoId(solicitacaoID); if (solicitacao == null) { throw new Exception(string.Format("Solicitação com id {0} inexistente.", solicitacaoID)); } SolicitacaoCadastroFornecedor cadastroPJPF = solicitacao.SolicitacaoCadastroFornecedor.FirstOrDefault(); List <SolicitacaoModificacaoDadosBancario> cadastroBanco = solicitacao.SolicitacaoModificacaoDadosBancario.ToList(); List <SolicitacaoModificacaoDadosContato> cadastroContatos = solicitacao.SolicitacaoModificacaoDadosContato.ToList(); #endregion FichaCadastralWebForLinkVM fichaCadastralVM = new FichaCadastralWebForLinkVM() { ID = solicitacao.ID, ContratanteID = solicitacao.CONTRATANTE_ID, ContratanteFornecedorID = 0, NomeEmpresa = cadastroPJPF != null ? cadastroPJPF.RAZAO_SOCIAL : string.Empty, RazaoSocial = cadastroPJPF.RAZAO_SOCIAL, NomeFantasia = cadastroPJPF.NOME_FANTASIA, //CNAE = cadastroPJPF.CNAE, CNPJ_CPF = cadastroPJPF.CNPJ ?? cadastroPJPF.CPF, InscricaoEstadual = cadastroPJPF.INSCR_ESTADUAL, InscricaoMunicipal = cadastroPJPF.INSCR_MUNICIPAL, TipoLogradouro = cadastroPJPF.TP_LOGRADOURO, Endereco = cadastroPJPF.ENDERECO, Numero = cadastroPJPF.NUMERO, Complemento = cadastroPJPF.COMPLEMENTO, Cep = cadastroPJPF.CEP, Bairro = cadastroPJPF.BAIRRO, Cidade = cadastroPJPF.CIDADE, Estado = cadastroPJPF.UF, Pais = cadastroPJPF.PAIS, Observacao = cadastroPJPF.OBSERVACAO, TipoFornecedor = cadastroPJPF.PJPF_TIPO, DadosBancarios = cadastroBanco.Select(x => new DadosBancariosVM() { Agencia = x.AGENCIA, Digito = x.AG_DV, Banco = x.BANCO_ID, ContaCorrente = x.CONTA, ContaCorrenteDigito = x.CONTA_DV, NomeBanco = x.T_BANCO.BANCO_NM, }).ToList(), DadosContatos = cadastroContatos.Select(x => new DadosContatoVM() { Celular = x.CELULAR, ContatoID = x.CONTATO_PJPF_ID ?? 0, EmailContato = x.EMAIL, NomeContato = x.NOME, Telefone = x.TELEFONE }).ToList() }; #endregion List <QUESTIONARIO> questionarioList = _cadastroUnicoBP.BuscarPorIdContratante(contratanteID); foreach (QUESTIONARIO questionario in questionarioList) { List <QUESTIONARIO_ABA> abasQuestionario = questionario .QIC_QUEST_ABA .OrderBy(x => x.ORDEM) .ToList(); List <AbaVM> questionarioAbas = new List <AbaVM>(); foreach (QUESTIONARIO_ABA aba in abasQuestionario) { List <QUESTIONARIO_PERGUNTA> perguntasAba = aba .QIC_QUEST_ABA_PERG .OrderBy(x => x.ORDEM) .ToList(); List <PerguntaVM> abaPerguntas = new List <PerguntaVM>(); foreach (QUESTIONARIO_PERGUNTA pergunta in perguntasAba) { QUESTIONARIO_PAPEL papelPergunta = pergunta .QIC_QUEST_ABA_PERG_PAPEL .FirstOrDefault(x => x.PAPEL_ID == papelID); WFD_INFORM_COMPL resposta = pergunta .WFD_INFORM_COMPL .FirstOrDefault(x => x.PERG_ID == pergunta.ID); if (papelPergunta.LEITURA) { PerguntaVM perguntaVM = Mapper.Map <PerguntaVM>(pergunta); Mapper.Map <PerguntaVM>(papelPergunta); if (pergunta.TP_DADO == "DOMINIO" && pergunta.DOMINIO == true) { perguntaVM.DominioList = Mapper.Map <List <QUESTIONARIO_RESPOSTA>, List <SelectListItem> >(pergunta .QIC_QUEST_ABA_PERG_RESP .OrderBy(x => x.ORDEM).ToList()); perguntaVM.DominioList.Insert(0, new SelectListItem() { Value = "0", Text = "--Selecione", Selected = true }); perguntaVM.DominioListId = !string.IsNullOrEmpty(perguntaVM.Resposta) ? int.Parse(perguntaVM.Resposta) : 0; } if (pergunta.PERG_PAI != null) { int pergPai = pergunta.PERG_PAI ?? 0; WFD_INFORM_COMPL informaCompl = _informacaoComplementarBP.BuscarPorPerguntaId(pergPai); //TODO: Validar LEITURA ///Validar se pode ser desbloqueado por resposta do pai /// pelo papel /// pela resposta anterior perguntaVM.Leitura = informaCompl != null; perguntaVM.PaiRespondido = informaCompl != null ? informaCompl.PERG_ID : 0; } //perguntaVM.Leitura = papelPergunta. abaPerguntas.Add(perguntaVM); } } //Mapear Lista de aba com Modelo de aba AbaVM abaModelo = Mapper.Map <QUESTIONARIO_ABA, AbaVM>(aba); abaModelo.PerguntaList = abaPerguntas; questionarioAbas.Add(abaModelo); } //Mapear Lista de Questionários com Modelo de Questionários QuestionarioVM questionarioModelo = Mapper.Map <QUESTIONARIO, QuestionarioVM>(questionario); questionarioModelo.AbaList = questionarioAbas; fichaCadastralVM.Questionarios.QuestionarioDinamicoList.Add(questionarioModelo); } return(View(fichaCadastralVM)); } catch (Exception ex) { Log.Error(ex); ViewBag.Message = ex.Message; return(View(new FichaCadastralWebForLinkVM())); } }
public bool FinalizarFichaCadastral(FichaCadastralWebForLinkVM model) { var preenchimentoValido = false; #region Validar Dados do Questionario Dinâmico List <WFD_INFORM_COMPL> informacoesComplementar = new List <WFD_INFORM_COMPL>(); if (model.Questionarios != null) { if (model.Questionarios.QuestionarioDinamicoList != null) { foreach (var questionario in model.Questionarios.QuestionarioDinamicoList) { foreach (var aba in questionario.AbaList) { foreach (var pergunta in aba.PerguntaList) { #region Validar se os campos obrigatórios estão preenchidos //if (pergunta.Obrigatorio) //{ // if (string.IsNullOrEmpty(pergunta.Resposta)) // { // ModelState.AddModelError("QuestionarioDinamicoValidation", string.Format("Campo {0} obrigatório!", pergunta.Titulo)); // } //} #endregion //if (ModelState.IsValid) //{ WFD_INFORM_COMPL infoCompleRespondida = new WFD_INFORM_COMPL() { SOLICITACAO_ID = model.Solicitacao.ID, PERG_ID = pergunta.Id, RESPOSTA = pergunta.Resposta }; switch (pergunta.TipoDado) { case "RadioButton": { if (pergunta.DominioListId != 0) { infoCompleRespondida.RESPOSTA = pergunta.DominioListId.ToString(); } } break; case "Checkbox": { string respostaIdentada = string.Empty; foreach (string resposta in pergunta.RespostaCheckbox) { if (!resposta.Equals("false")) { respostaIdentada = string.Concat(respostaIdentada, "^", resposta); } } if (!string.IsNullOrEmpty(respostaIdentada)) { infoCompleRespondida.RESPOSTA = respostaIdentada.Remove(0, 1); } } break; } informacoesComplementar.Add(infoCompleRespondida); //} } } } } } #endregion FORNECEDOR_CATEGORIA categoria = _fornecedorCategoriaService.BuscarPorId((int)model.CategoriaId); if (model.TipoFornecedor != 1) { if (model.DadosEnderecos == null || !model.DadosEnderecos.Any()) { ModelState.AddModelError("DadosEnderecoValidation", "Informar ao menos um Endereço!"); } else if (model.DadosEnderecos.Any(x => x.TipoEnderecoId == 0 || String.IsNullOrEmpty(x.Endereco) || String.IsNullOrEmpty(x.Numero) || String.IsNullOrEmpty(x.CEP))) { ModelState.AddModelError("DadosEnderecoValidation", "Dados incompletos no Endereço!"); } } if (!categoria.ISENTO_DADOSBANCARIOS && !model.ApenasSalvar) { if (!model.DadosBancarios.Any()) { ModelState.AddModelError("DadosBancariosValidation", "Informar ao menos um Dado Bancário!"); model.DadosBancarios.Add(new DadosBancariosVM()); } } else { //REMOVE AS CRITICAS DOS DADOS BANCARIOS CASO A CATEGORIA SEJA ISENTA while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("Banco")).Value != null) { ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("Banco"))); } while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("Agencia")).Value != null) { ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("Agencia"))); } while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("ContaCorrente")).Value != null) { ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("ContaCorrente"))); } while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("ContaCorrenteDigito")).Value != null) { ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosBancarios") && ms.Key.Contains("ContaCorrenteDigito"))); } } if (!categoria.ISENTO_CONTATOS && !model.ApenasSalvar) { if (model.DadosContatos == null || !model.DadosContatos.Any()) { ModelState.AddModelError("DadosContatosValidation", "Informar os Dados do Contato!"); model.DadosContatos = new List <DadosContatoVM>(); model.DadosContatos.Add(new DadosContatoVM()); } } else { //REMOVE AS CRITICAS DOS DADOS DE CONTATOS CASO A CATEGORIA SEJA ISENTA while (ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosContatos") && ms.Key.Contains("EmailContato")).Value != null) { ModelState.Remove(ModelState.FirstOrDefault(ms => ms.Key.Contains("DadosContatos") && ms.Key.Contains("EmailContato"))); } } if (!categoria.ISENTO_DOCUMENTOS && !model.ApenasSalvar && model.TipoFornecedor != 2) { List <SolicitacaoDocumentosVM> docsObrigatorios = model.SolicitacaoFornecedor.Documentos.Where(x => x.Obrigatorio == true && x.ArquivoSubido == null).ToList(); if (docsObrigatorios.Any()) { ModelState.AddModelError("AnexosValidation", "Favor subir os arquivos dos documentos Exigíveis!"); } } ModelState.Remove("SolicitacaoFornecedor.Assunto"); ModelState.Remove("SolicitacaoFornecedor.DescricaoSolicitacao"); ModelState.Remove("SolicitacaoFornecedor.Mensagem"); ModelState.Remove("SolicitacaoFornecedor.DadosEnderecos.T_UF.UF_NM"); int tipoPapel = model.TipoPreenchimento.Equals((int)EnumTiposPreenchimento.Fornecedor) ? (int)EnumTiposPapel.Fornecedor : (int)EnumTiposPapel.Solicitante; int papelAtual = _papelService.BuscarPorContratanteETipoPapel(model.ContratanteID, tipoPapel).ID; foreach (var modeloErrado in ModelState.Values) { if (modeloErrado.Errors.Count != 0) { } } if (ModelState.IsValid) { try { SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedor = _solicitacaoCadastroFornecedorService.BuscarPorSolicitacaoId(model.Solicitacao.ID); CompletarSolicitacaoCadastroPJPF(ref solicitacaoCadastroFornecedor, model); _solicitacaoCadastroFornecedorService.AtualizarSolicitacao(solicitacaoCadastroFornecedor); ManterDadosBancarios(model.DadosBancarios.Where(w => w.Banco != null && w.Agencia != null && w.ContaCorrente != null).ToList(), model.Solicitacao.ID, model.ContratanteID); ManterDadosContatos(model.DadosContatos.Where(w => w.EmailContato != null).ToList(), solicitacaoCadastroFornecedor.SOLICITACAO_ID); ManterDadosEnderecos(model.DadosEnderecos.Where(x => x.TipoEnderecoId > 0).ToList(), solicitacaoCadastroFornecedor.SOLICITACAO_ID); ManterUnspsc(model.FornecedoresUnspsc.ToList(), model.Solicitacao.ID); if (model.TipoFornecedor != (int)EnumTiposFornecedor.EmpresaEstrangeira) { ManterDocumentos(model.SolicitacaoFornecedor.Documentos, model.Solicitacao.ID, model.ContratanteID); } _informacaoComplementarService.InsertAll(informacoesComplementar); model.ProrrogacaoPrazo = new ProrrogacaoPrazoVM(); if (solicitacaoCadastroFornecedor.WFD_SOLICITACAO.WFD_SOLICITACAO_PRORROGACAO.Any()) { //Busca a ultima solicitacao de prorrogação, ou seja a ativa. model.ProrrogacaoPrazo = ProrrogacaoPrazoVM.ToViewModel(solicitacaoCadastroFornecedor.WFD_SOLICITACAO.WFD_SOLICITACAO_PRORROGACAO.OrderBy(o => o.ID).LastOrDefault()); } model.ProrrogacaoPrazo.PrazoPreenchimento = _contratanteConfiguracaoService.BuscarPrazo(solicitacaoCadastroFornecedor.WFD_SOLICITACAO); if (model.ProrrogacaoPrazo.Aprovado != null) { if ((bool)model.ProrrogacaoPrazo.Aprovado) { model.ProrrogacaoPrazo.Status = "Aprovado"; } else { model.ProrrogacaoPrazo.Status = "Reprovado"; } } else { model.ProrrogacaoPrazo.Status = "Aguardando Aprovação..."; } if (!model.ApenasSalvar) { _tramite.AtualizarTramite(model.ContratanteID, model.Solicitacao.ID, model.Solicitacao.Fluxo.ID, papelAtual, (int)EnumStatusTramite.Aprovado, null); ViewBag.MensagemSucesso = "Dados Enviados com Sucesso!"; ViewBag.StatusTramite = (int)EnumStatusTramite.Aprovado; } else { ViewBag.MensagemSucesso = "Dados Salvos com Sucesso!"; ViewBag.StatusTramite = (int)EnumStatusTramite.Aguardando; } preenchimentoValido = true; } catch (Exception e) { ViewBag.MensagemErro = "Erro ao tentar Salvar a ficha cadastral!"; ViewBag.StatusTramite = (int)EnumStatusTramite.Aguardando; Log.Error(e); } } else { ViewBag.MensagemErro = "Não foi possível enviar a Ficha Cadastral! Existem dados incompletos abaixo."; ViewBag.StatusTramite = (int)EnumStatusTramite.Aguardando; } model.Questionarios = new RetornoQuestionario <QuestionarioVM> { QuestionarioDinamicoList = Mapper.Map <List <QuestionarioDinamico>, List <QuestionarioVM> >( _cadastroUnicoBP.BuscarQuestionarioDinamico(new QuestionarioDinamicoFiltrosDTO() { //PapelId = papelAtual, UF = "RJ", ContratanteId = model.ContratanteID, PapelId = papelAtual, CategoriaId = categoria.ID, Alteracao = true, SolicitacaoId = model.Solicitacao.ID }) ) }; PersistirDadosEnderecoEmMemoria(); return(preenchimentoValido); }