コード例 #1
0
ファイル: DirDoc.cs プロジェクト: maurahc/HerculesWorking
        /// <summary>
        /// Gera certificado para todos os alunos que tiverem 100% de presença no evento
        /// </summary>
        /// <param name="idEvento">evento desejado</param>
        /// <returns></returns>
        public static bool GeraCertificado(int idEvento)
        {
            AlunoRepository  ar              = new AlunoRepository();
            Evento           ev              = eventoRepository.GetEventoById(idEvento);
            bool             flag            = true;
            string           templatePath    = caminhoTemplates + "template-certificado.docx"; //caminhoDoTemplate
            List <Documento> certificadosDoc = new List <Documento>();
            var          template            = new FileStream(templatePath, FileMode.Open, FileAccess.Read);
            List <Aluno> alunos              = eventoRepository.GetAlunosPresentes(ev); //alunos com presença

            foreach (Aluno al in alunos)
            {
                string curso       = al.AlunoCurso.Select(x => x.Curso.Nome).FirstOrDefault().ToString();
                string novoArquivo = CriaDiretorio(new string[] { curso, al.IdAluno.ToString(), "Certificado" });
                novoArquivo = novoArquivo + "(" + al.IdUsuario + ") " + ev.IdEvento + " - " + "temp" + ev.NomeEvento + ".docx";
                Documento     documento = new Documento();
                TipoDocumento tipoDoc   = tipoDocumentoRepository.GetTipoDoc("Certificado");

                documento.IdTipoDoc     = tipoDoc.IdTipoDoc;
                documento.NomeDocumento = "(" + al.IdUsuario + ") " + ev.IdEvento + " - " + "temp" + ev.NomeEvento + ".pdf";
                documento.Data          = DateTime.Now;

                documento.IdAlunoCurso = al.AlunoCurso.Select(x => x.IdAlunoCurso).FirstOrDefault();
                documento.IdEvento     = ev.IdEvento;

                if (File.Exists(Path.ChangeExtension(novoArquivo, ".pdf")))
                {
                    // certificadosDoc.Add(documento);
                }
                else
                {
                    {
                        #region substitui informaçoes seguindo a template


                        DocX doc = DocX.Create(novoArquivo);

                        doc.ApplyTemplate(template, true);


                        if (doc.Text.Contains("<NOME>"))
                        {
                            doc.ReplaceText("<NOME>", al.Usuario.Nome);
                        }
                        if (doc.Text.Contains("<EVENTO>"))
                        {
                            doc.ReplaceText("<EVENTO>", ev.NomeEvento);
                        }
                        if (doc.Text.Contains("<HORAS>"))
                        {
                            doc.ReplaceText("<HORAS>", ev.CargaHoraria.ToString());
                        }
                        if (doc.Text.Contains("<DIA>"))
                        {
                            doc.ReplaceText("<DIA>", DateTime.Now.Day.ToString());
                        }
                        if (doc.Text.Contains("<MES>"))
                        {
                            string mes = DateTime.Now.ToString("MMMM", CultureInfo.CreateSpecificCulture("pt-BR"));
                            doc.ReplaceText("<MES>", mes);
                        }
                        if (doc.Text.Contains("<ANO>"))
                        {
                            doc.ReplaceText("<ANO>", DateTime.Now.Year.ToString());
                        }

                        doc.Save();
                        doc.Dispose();
                        Document pdf = new Document();
                        pdf.LoadFromFile(novoArquivo);
                        File.Delete(novoArquivo);
                        novoArquivo = Path.ChangeExtension(novoArquivo, ".pdf");
                        pdf.SaveToFile(novoArquivo, FileFormat.PDF);
                    }

                    #region criptografa certificado
                    try
                    {
                        string     caminhonovo = novoArquivo.Replace("temp", "");
                        FileStream fs          = new FileStream(caminhonovo, FileMode.Create);
                        byte[]     arquivo     = File.ReadAllBytes(novoArquivo);
                        File.Delete(novoArquivo);
                        RijndaelManaged rmCryp = new RijndaelManaged();
                        CryptoStream    cs     = new CryptoStream(fs, rmCryp.CreateEncryptor(Key, Key), CryptoStreamMode.Write);

                        foreach (var data in arquivo)
                        {
                            cs.WriteByte((byte)data);
                        }
                        cs.Close();
                        fs.Close();
                        documento.CaminhoDocumento = caminhonovo;
                        certificadosDoc.Add(documento);
                        ar.AdicionaHoras(ev.CargaHoraria, al.IdAluno, ev.IdEvento);
                    }
                    catch (Exception e)
                    {
                        flag = false;
                    }
                    #endregion

                    #endregion
                }
            }

            if (!documentoRepository.PersisteCertificados(certificadosDoc))
            {
                flag = false;
            }
            else
            {
            }

            return(flag);
        }
コード例 #2
0
        public object AlterarStatus(SolicitacaoDocumento solic, int?Horas)
        {
            Usuario user = GetSessionUser();

            try
            {
                if (user.Permissao == EnumPermissaoUsuario.coordenador)
                {
                    var retorno = solicitacaoRepository.GetSolicitacaoByCoordenador(User.Identity.Name);
                    if (!retorno.Any(x => x.IdSolicitacao == solic.IdSolicitacao))
                    {
                        return(Json(new { Status = false, Type = "error", Message = "Não autorizado!" }, JsonRequestBehavior.AllowGet));
                    }
                }

                if (solic.Status == EnumStatusSolicitacao.concluido && !Horas.HasValue)
                {
                    return(Json(new { Status = false, Type = "error", Message = "Informe a quantidade de horas." }, JsonRequestBehavior.AllowGet));
                }
                else if (solic.Status == EnumStatusSolicitacao.reprovado && string.IsNullOrEmpty(solic.Observacao))
                {
                    return(Json(new { Status = false, Type = "error", Message = "Informe a observação sobre reprovação." }, JsonRequestBehavior.AllowGet));
                }
                var ok = true;

                var sol = solicitacaoRepository.GetSolicitacaoById(solic.IdSolicitacao);
                sol.Status = solic.Status;

                if (sol.Status == EnumStatusSolicitacao.reprovado)
                {
                    sol.Observacao = solic.Observacao;
                }
                else if (sol.Status == EnumStatusSolicitacao.concluido)
                {
                    ok = alunoRepository.AdicionaHoras(Horas.Value, sol.IdSolicitacao);
                }

                var msg = "";
                if (ok)
                {
                    msg = solicitacaoRepository.PersisteSolicitacao(sol);
                }
                else
                {
                    return(Json(new { Status = false, Type = "error", Message = "Ocorreu um erro ao realizar esta operação." }, JsonRequestBehavior.AllowGet));
                }

                if (msg != "Erro")
                {
                    try
                    {
                        if (sol.Status == EnumStatusSolicitacao.reprovado && !string.IsNullOrEmpty(sol.Documento.CaminhoDocumento))
                        {
                            documentoRepository.DeletaArquivo(sol.Documento, false);
                            //DirDoc.DeletaArquivo(sol.Documento.CaminhoDocumento);
                            //sol.Documento.CaminhoDocumento = null;
                        }

                        var acao = sol.Status == EnumStatusSolicitacao.concluido ? "aprovada" :
                                   sol.Status == EnumStatusSolicitacao.reprovado ? "reprovada" : "";

                        var    url              = System.Web.Hosting.HostingEnvironment.MapPath("~/Views/Email/AlteracaoStatusSolicitacaoHoras.cshtml");
                        string viewCode         = System.IO.File.ReadAllText(url);
                        var    solicitacaoEmail = solicitacaoRepository.ConverToEmailModel(sol, Url.Action("Login", "Account", null, Request.Url.Scheme));

                        var html = RazorEngine.Razor.Parse(viewCode, solicitacaoEmail);
                        var to   = new[] { solicitacaoEmail.EmailAluno };
                        var from = System.Configuration.ConfigurationManager.AppSettings["MailFrom"].ToString();
                        Email.EnviarEmail(from, to, "Solicitação de horas complementares " + acao, html);
                    }
                    catch (Exception e)
                    {
                    }

                    if (sol.Status == EnumStatusSolicitacao.concluido)
                    {
                        Utilidades.SalvaLog(user, EnumAcao.Aprovar, sol, sol.IdSolicitacao);
                    }
                    else if (sol.Status == EnumStatusSolicitacao.reprovado)
                    {
                        Utilidades.SalvaLog(user, EnumAcao.Reprovar, sol, sol.IdSolicitacao);
                    }

                    return(Json(new { Status = true, Type = "success", Message = "Solicitação salva com sucesso", ReturnUrl = Url.Action("Index") }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new { Status = false, Type = "error", Message = "Ocorreu um erro ao realizar esta operação." }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception e)
            {
                return(Json(new { Status = false, Type = "error", Message = "Ocorreu um erro ao realizar esta operação." }, JsonRequestBehavior.AllowGet));
            }
        }