Esempio n. 1
0
        public ActionResult EnviarSolicitacao(SolicitacaoFornecedorVM model, string Email)
        {
            var solicitacao = _solicitacaoService.BuscarPorIdComDocumentos((int)model.SolicitacaoCriacaoID);
            var cadForn     = solicitacao.SolicitacaoCadastroFornecedor.FirstOrDefault();

            ViewBag.PassoAtual = model.PassoAtual;

            if (!solicitacao.SolicitacaoDeDocumentos.Any())
            {
                ModelState.AddModelError("", "Não é possível enviar a solicitação sem a lista de Documentos");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    SOLICITACAO_MENSAGEM solicitacaoMensagem = new SOLICITACAO_MENSAGEM
                    {
                        SOLICITACAO_ID = (int)model.SolicitacaoCriacaoID,
                        ASSUNTO        = model.Assunto,
                        MENSAGEM       = model.Mensagem,
                        DT_ENVIO       = DateTime.Now,
                    };

                    foreach (var item in solicitacao.SolicitacaoDeDocumentos)
                    {
                        item.WFD_SOL_MENSAGEM = solicitacaoMensagem;
                    }
                    _solicitacaoMensagemService.InserirMensagem(solicitacaoMensagem, solicitacao.SolicitacaoDeDocumentos.ToList());
                }
                catch
                {
                    ModelState.AddModelError("", "Erro ao tentar salvar a Solicitação de Documentos. A solicitação não foi enviada!");
                    return(View(model));
                }
                //se não for primeiro acesso enviar para tela de acesso
                string url = Url.Action("Index", "Home", new
                {
                    chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}&Login={1}&TravaLogin=1", model.SolicitacaoCriacaoID, model.Fornecedor.CNPJ), Key)
                }, Request.Url.Scheme);

                bool emailEnviadoComSucesso = false;

                _solicitacaoContatoService.ListarPorSolicitacaoId((int)model.SolicitacaoCriacaoID)
                .ForEach(x =>
                {
                    //se for primeiro acesso enviar para criação de usuário
                    #region BuscarPorEmail
                    //validar se o e-mail já existe na tabela de Usuarios
                    if (!_usuarioService.ValidarPorCnpj(model.Fornecedor.CNPJ))
                    {
                        url = Url.Action("CadastrarUsuarioFornecedor", "Home", new
                        {
                            chaveurl = Cripto.Criptografar(string.Format("Login={0}&SolicitacaoID={1}&Email={2}",
                                                                         model.Fornecedor.CNPJ,
                                                                         model.SolicitacaoCriacaoID,
                                                                         x.EMAIL), Key)
                        }, Request.Url.Scheme);
                    }
                    #endregion
                    string mensagem        = string.Concat(model.Mensagem, "<p><a href='", url, "'>Link</a>:", url, "</p>");
                    emailEnviadoComSucesso = _metodosGerais.EnviarEmail(x.EMAIL, model.Assunto, mensagem);
                });
                if (!emailEnviadoComSucesso)
                {
                    return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = "As tentativas de envio de e-mail falharam, favor reenviar a solicitação através da tela de acompanhamento." }));
                }

                return(RedirectToAction("FornecedoresLst", "Fornecedores", new { MensagemSucesso = string.Format("Solicitação Nº {0} enviada ao Fornecedor com sucesso!", model.SolicitacaoCriacaoID) }));
            }

            return(View(model));
        }