public object ExcluirSolicitacao(SolicitacaoDocumento sol)
        {
            Usuario user = GetSessionUser();

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

            var s = solicitacaoRepository.GetSolicitacaoById(sol.IdSolicitacao);

            if (s.Status == EnumStatusSolicitacao.pendente) //regra q soh deleta se status for pendente
            {
                if (documentoRepository.DeletaArquivo(s.Documento, true))
                {
                    Utilidades.SalvaLog(user, EnumAcao.Excluir, s, s.IdSolicitacao);
                    return(Json(new { Status = true, Type = "success", Message = "Solicitação deletada com sucesso!" }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new { Status = false, Type = "error", Message = "Ocorreu um erro ao realizar esta operação." }, JsonRequestBehavior.AllowGet));
                }
            }
            return(Json(new { Status = false, Type = "error", Message = "Só é possível realizar exclusão de solicitações pendentes." }, JsonRequestBehavior.AllowGet));
        }
        public object ExcluirDocumento(Documento doc)
        {
            Usuario user = GetSessionUser();

            // valida se o aluno está matriculado no curso que coordena
            if (user.Permissao == EnumPermissaoUsuario.coordenador)
            {
                List <Curso> cursos = cursoRepository.GetCursoByCoordenador(user.IdUsuario);

                List <int> alunos = new List <int>();
                doc = documentoRepository.GetDocumentoById(doc.IdDocumento);

                foreach (Curso c in cursos)
                {
                    alunos.AddRange(c.AlunoCurso.Select(x => x.IdAluno));
                }

                if (!alunos.Contains(doc.AlunoCurso.IdAluno))
                {
                    return(Json(new { Status = false, Type = "error", Message = "Não autorizado!" }, JsonRequestBehavior.AllowGet));
                }
            }

            if (documentoRepository.DeletaArquivo(doc, true))
            {
                Utilidades.SalvaLog(user, EnumAcao.Excluir, doc, (int?)doc.IdDocumento);
                return(Json(new { Status = true, Type = "success", Message = "Documento deletado com sucesso!", ReturnUrl = Url.Action("Index") }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { Status = false, Type = "error", Message = "Ocorreu um erro ao realizar esta operação, verifique se existe uma solicitação vinculada a este documento." }, JsonRequestBehavior.AllowGet));
        }
예제 #3
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));
            }
        }