Esempio n. 1
0
        public ActionResult CriarSolicitacao(FornecedoresVM model, int?CategoriaSelecionada, string CategoriaSelecionadaNome, int?SolicitacaoID, int Empresa, string Acao)
        {
            if (string.IsNullOrEmpty(Acao))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            int  contratanteId          = (int)Geral.PegaAuthTicket("ContratanteId");
            int  usuarioId              = (int)Geral.PegaAuthTicket("UsuarioId");
            bool solicitaDocumentos     = (bool)Geral.PegaAuthTicket("SolicitaDocumentos");
            bool solicitaFichaCadastral = (bool)Geral.PegaAuthTicket("SolicitaFichaCadastral");
            int? grupoId = (int?)Geral.PegaAuthTicket("Grupo");

            ViewBag.Categoria                = Mapper.Map <List <CategoriaVM> >(_fornecedorCategoriaService.BuscarCategorias(contratanteId).OrderBy(x => x.DESCRICAO).ToList(), opt => opt.Items["Url"] = Url);
            ViewBag.CategoriaSelecionada     = CategoriaSelecionada;
            ViewBag.CategoriaSelecionadaNome = CategoriaSelecionadaNome;
            if (CategoriaSelecionada != null)
            {
                model.Categoria = (int)CategoriaSelecionada;
            }

            if (grupoId != null)
            {
                ViewBag.Empresa = new SelectList(_contratanteService.ListarTodosPorUsuario(usuarioId), "ID", "RAZAO_SOCIAL", Empresa);
            }
            ViewBag.SolicitaDocumentos     = solicitaDocumentos;
            ViewBag.solicitaFichaCadastral = solicitaFichaCadastral;
            ViewBag.Compras = new SelectList(_organizacaoComprasService.ListarTodosPorIdContratante(contratanteId), "ID", "ORG_COMPRAS_DSC");
            ViewBag.Robo    = false;

            ValidarFormularioCriacaoSolicitacao(model, Acao);
            ModelState.Remove("Email");
            if (ModelState.IsValid)
            {
                SOLICITACAO solicitacao;
                var         papelAtual = _papelService.BuscarPorContratanteETipoPapel(contratanteId, (int)EnumTiposPapel.Solicitante).ID;

                //INCLUSÃO DO FORNECEDOR
                switch (Acao)
                {
                case "Incluir":
                    string cnpj = string.Empty;
                    if (model.TipoFornecedor != (int)EnumTiposFornecedor.EmpresaEstrangeira)
                    {
                        cnpj = model.CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "");
                    }

                    CadastrarSolicitacaoDTO modeloCadastro = new CadastrarSolicitacaoDTO()
                    {
                        TipoCadastro   = model.TipoCadastro,
                        TipoFornecedor = model.TipoFornecedor,
                        ContratanteId  = contratanteId,
                        UsuarioId      = usuarioId,
                        CategoriaId    = model.Categoria,
                        ComprasId      = model.Compras,
                        CNPJ           = cnpj,
                        ContatoNome    = model.NomeContato,
                        ContatoEmail   = model.Email,
                        Telefone       = model.Telefone,
                        Assunto        = System.Web.HttpContext.Current.Application["NomeSistema"].ToString(),
                        RazaoSocial    = model.RazaoSocial,
                        CPF            = cnpj,
                        DataNascimento = model.DataNascimento
                    };
                    solicitacao = _solicitacaoService.CadastrarSolicitacaoPreCadastro(model.ID, modeloCadastro);

                    ViewBag.SolicitacaoId = solicitacao.ID;

                    if (model.TipoFornecedor != (int)EnumTiposFornecedor.EmpresaEstrangeira)     // SE NACIONAL
                    {
                        _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aguardando, usuarioId);
                        ViewBag.Robo = true;

                        return(View(model));
                    }

                    return(RedirectToAction("FornecedoresDiretoFrm", "FornecedoresDireto", new { chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key) }));

                //break;

                case "Continuar":
                    solicitacao = _solicitacaoService.BuscarPorIdComSolicitacaoCadastroFornecedor((int)SolicitacaoID);
                    var robo = solicitacao.ROBO.FirstOrDefault();

                    if (robo != null)
                    {
                        if (robo.RF_CONSULTA_DTHR != null && robo.SINT_CONSULTA_DTHR != null && robo.SN_CONSULTA_DTHR != null)
                        {
                            solicitacao.ROBO_EXECUTADO = true;
                            _solicitacaoService.Alterar(solicitacao);
                        }
                    }

                    if (model.TipoCadastro == (int)EnumTiposPreenchimento.Fornecedor)
                    {
                        _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, (int)EnumStatusTramite.Aprovado, usuarioId);
                        return(RedirectToAction("EnviarSolicitacao", "PreCadastroFornecedor", new
                        {
                            chaveUrl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key),
                            nomeContato = model.NomeContato,
                            emailContato = model.Email,
                            contratanteId = Empresa,
                            documentoPfPj = model.CNPJ
                        }));
                    }

                    return(RedirectToAction("FornecedoresDiretoFrm", "FornecedoresDireto", new { chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}", solicitacao.ID), Key) }));

                //break;
                case "Cancelar":
                    solicitacao = _solicitacaoService.BuscarPorIdIncluindoFluxo((int)SolicitacaoID);

                    _tramite.AtualizarTramite(contratanteId, solicitacao.ID, solicitacao.FLUXO_ID, papelAtual, 6, usuarioId);

                    return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = "Solicitação Cancelada!" }));
                    //break;
                }
            }
            if (model == null)
            {
                return(HttpNotFound());
            }

            return(View(model));
        }