public PartialViewResult AddUsuarioAjax(UsuarioAdapter adapter)
        {
            var p     = (Pessoa)Session["CadastroPessoa"];
            var model = ConnectionDbClass.DataModel;

            var usuario = adapter.ConvertToUsuario();

            usuario.Gamify = true;

            usuario.Pessoa = p;
            p.Usuarios.Add(usuario);

            ConnectionDbClass.DataModel.Add(p);

            if (model.HasChanges)
            {
                model.SaveChanges();
            }

            Session["CadastroPessoa"] = null;
            Session.Remove("CadastroPessoa");

            ViewData["Titulo"] = p.Nome;
            ViewData["Msg"]    = "Seu Usuário foi criado com sucesso!";

            PontuacaoUtils.Pontuar(usuario.Pessoa, PontuacaoEnum.CadastroUsuario);

            return(PartialView("_MensagemAlerta"));
        }
Beispiel #2
0
        public string _VerificarNivel()
        {
            if (!TipoAmbienteCtrl.ControlarGamificacao)
            {
                return("");
            }

            var     model   = ConnectionDbClass.DataModel;
            Usuario usuario = null;

            if (Session["NivelUsuarioAtual"] == null)
            {
                usuario = (Usuario)Session["Usuario"];
                if (usuario != null)
                {
                    var nivel = model.Pessoa_nivel_pontos.First(f => f.Id_pessoa == usuario.Id_pessoa);
                    Session["NivelUsuarioAtual"] = nivel.Nivel;
                }
            }

            if (Session["Usuario"] != null)
            {
                var nivel = (int?)Session["NivelUsuarioAtual"];
                usuario = (Usuario)Session["Usuario"];

                ConnectionDbClass.DataModel.Refresh(RefreshMode.OverwriteChangesFromStore, ConnectionDbClass.DataModel.Pessoas);
                ConnectionDbClass.DataModel.Refresh(RefreshMode.OverwriteChangesFromStore, ConnectionDbClass.DataModel.Pessoa_nivel_pontos);

                if (PontuacaoUtils.AvancarNivel(usuario.Pessoa))
                {
                    var nivelAtual = model.Pessoa_nivel_pontos.First(f => f.Id_pessoa == usuario.Id_pessoa);

                    nivelAtual.Nivel++;

                    if (model.HasChanges)
                    {
                        model.SaveChanges();
                    }

                    var proxNivel = PontuacaoUtils.PontosProximoNivel(usuario.Pessoa);
                    var difPontos = proxNivel - nivelAtual.Pontos;

                    var str = "<h2>Parabéns " + usuario.Pessoa.Nome + "</h2><br>" +
                              "<p>Você avanço do nível " + nivel.Value + " para o nível " + nivelAtual.Nivel +
                              " com " + nivelAtual.Pontos + "</p>" +
                              "<p>Para o o nível " + (nivelAtual.Nivel) + " você irá precisar de " + difPontos +
                              " pontos!</p>" +
                              "<p><strong>BOA SORTE!</strong></p>";

                    return(str);
                }
            }


            return("");
        }
Beispiel #3
0
        public PartialViewResult _DesafiosPessoa(int IdPessoa)
        {
            var pessoa = ConnectionDbClass.DataModel.Pessoas.FirstOrDefault(f => f.Id == IdPessoa);

            if (pessoa == null)
            {
                return(PartialView("Error"));
            }

            if (Session["Usuario"] != null)
            {
                var usuario = (Usuario)Session["Usuario"];

                if (pessoa.Id == usuario.Pessoa.Id)
                {
                    PontuacaoUtils.CalcularDesafios(usuario.Pessoa);
                }
            }

            return(PartialView("_DesafiosPessoa", pessoa));
        }
Beispiel #4
0
        public ActionResult AddComentarioAjax(Comentario comentario, HttpPostedFileBase file, string tipo)
        {
            var model = ConnectionDbClass.DataModel;

            var reclamacao = model.Reclamacaos.FirstOrDefault(f => f.Id == comentario.Id_reclamacao);

            var usuario = (Usuario)Session["Usuario"];

            if (file != null)
            {
                if (file.ContentType.Contains("image"))
                {
                    if (file.ContentLength > 2097152)
                    {
                        ViewBag.Erro = "O Arquivo de imagem ultrapassa o limite de 2Mb.";
                        return(View("AcessarReclamacao", reclamacao));
                    }
                }
                else if (file.ContentType.Contains("video"))
                {
                    if (file.ContentLength > 26214400)
                    {
                        ViewBag.Erro = "O Arquivo anexo ultrapassa o limite de 25Mb.";
                        return(View("AcessarReclamacao", reclamacao));
                    }
                }
                else
                {
                    ViewBag.Erro = "Somente é permitda a inclusão de fotos ou vídeos.";
                    return(View("AcessarReclamacao", reclamacao));
                }

                if (file.ContentLength > 0)
                {
                    var fileName = "";
                    if (file.ContentType.Contains("image"))
                    {
                        if (string.IsNullOrEmpty(fileName))
                        {
                            fileName = "rec_solucao_" + usuario.Pessoa.Id + "_" + DateTime.Now.ToString("yyyyMd_hhmmss") + ".jpg";
                        }
                    }
                    else
                    {
                        string extensao = Path.GetExtension(file.FileName);

                        fileName = "rec_solucao_" + usuario.Pessoa.Id + "_" + DateTime.Now.ToString("yyyyMd_hhmmss") + extensao;
                    }

                    var path = Path.Combine(Server.MapPath("~/Images/Uploads/Queixa"), fileName);

                    comentario.Anexo = fileName;

                    file.SaveAs(path);
                }
            }

            var logParticipacao = new Log_participapao()
            {
                Id_pessoa     = comentario.Id_pessoa,//usuario.Id_pessoa,
                Id_reclamacao = comentario.Id_reclamacao,
                Datahora      = DateTime.Now,
                Acesso        = false,
                Tipo          = usuario.Pessoa.Nome + " Comentou sua reclamação"
            };

            comentario.Likes          = 0;
            comentario.Deslikes       = 0;
            comentario.Id_pessoa      = usuario.Id_pessoa;
            comentario.DataComentario = DateTime.Now;
            comentario.IsSolucao      = false;
            comentario.IsSolucao      = comentario.IsSolucaoFinal ?? false;
            comentario.IsSolucaoFinal = comentario.IsSolucaoFinal ?? false;

            if (comentario.IsSolucaoFinal.Value)
            {
                logParticipacao.Tipo     = "Solucionou";
                reclamacao.IsSolucionado = true;
            }

            model.Add(comentario);
            model.Add(logParticipacao);

            if (model.HasChanges)
            {
                model.SaveChanges();
            }

            if (comentario.IsSolucaoFinal.Value)
            {
                PontuacaoUtils.Pontuar(usuario.Pessoa, PontuacaoEnum.SolucioncarReclamacao);
            }
            else
            {
                PontuacaoUtils.Pontuar(usuario.Pessoa, PontuacaoEnum.ComentarReclamacao);
            }

            if (tipo == "http")
            {
                return(View("AcessarReclamacao", reclamacao));
            }
            else
            {
                return(PartialView("_VerComentariosView", reclamacao));
            }
        }
Beispiel #5
0
        public string _AtualizarLikesDeslikesComentario(int id, bool tipo)
        {
            var model = ConnectionDbClass.DataModel;

            var comentario = model.Comentarios.FirstOrDefault(f => f.Id == id);

            var usuario = (Usuario)Session["Usuario"];

            if (comentario != null)
            {
                Log_participapao log = null;

                if (tipo)
                {
                    comentario.Likes = comentario.Likes != null ? comentario.Likes + 1 : 1;

                    log = new Log_participapao()
                    {
                        Acesso        = false,
                        Datahora      = DateTime.Now,
                        Id_pessoa     = comentario.Pessoa.Id,
                        Id_reclamacao = comentario.Id_reclamacao,
                        Tipo          = usuario.Pessoa.Nome + " Curtiu seu Comentário",
                        Id_comentario = id,
                        Id_curtidor   = usuario.Id_pessoa
                    };
                }
                else
                {
                    comentario.Deslikes = comentario.Deslikes != null ? comentario.Deslikes + 1 : 1;
                    log = new Log_participapao()
                    {
                        Acesso        = false,
                        Datahora      = DateTime.Now,
                        Id_pessoa     = comentario.Pessoa.Id,
                        Id_reclamacao = comentario.Id_reclamacao,
                        Tipo          = usuario.Pessoa.Nome + " Descurtiu Seu Comentário",
                        Id_comentario = id,
                        Id_curtidor   = usuario.Id_pessoa
                    };
                }

                model.Add(log);

                if (model.HasChanges)
                {
                    model.SaveChanges();
                }

                if (tipo)
                {
                    PontuacaoUtils.Pontuar(usuario.Pessoa, PontuacaoEnum.CurtirComentario);
                    PontuacaoUtils.Pontuar(comentario.Pessoa, PontuacaoEnum.ComentarioCurtido);

                    return("<span class='glyphicon glyphicon-thumbs-up'></span><span>" + (comentario.Likes ?? 0) + "</span>");
                }
                else
                {
                    PontuacaoUtils.Pontuar(usuario.Pessoa, PontuacaoEnum.DescurtirComentario);
                    PontuacaoUtils.Pontuar(comentario.Pessoa, PontuacaoEnum.ComentarioDescurtido);

                    return("<span class='glyphicon glyphicon-thumbs-down'></span><span>" + (comentario.Deslikes ?? 0) + "</span>");
                }
            }

            return("");
        }
Beispiel #6
0
        public ActionResult GravarReclamacao(Reclamacao reclamacao, HttpPostedFileBase file)
        {
            var usuario = (Usuario)Session["Usuario"];

            var model = ConnectionDbClass.DataModel;

            if (file != null)
            {
                if (file.ContentType.Contains("image"))
                {
                    if (file.ContentLength > 2097152)
                    {
                        ViewBag.Erro = "O Arquivo de imagem ultrapassa o limite de 2Mb.";
                        return(View("IncluirReclamacao"));
                    }
                }
                else if (file.ContentType.Contains("video"))
                {
                    if (file.ContentLength > 26214400)
                    {
                        ViewBag.Erro = "O Arquivo anexo ultrapassa o limite de 25Mb.";
                        return(View("IncluirReclamacao"));
                    }
                }
                else
                {
                    ViewBag.Erro = "Somente é permitda a inclusão de fotos ou vídeos.";
                    return(View("IncluirReclamacao"));
                }

                if (file.ContentLength > 0)
                {
                    var fileName = "";
                    if (file.ContentType.Contains("image"))
                    {
                        if (string.IsNullOrEmpty(fileName))
                        {
                            fileName = "rec_" + usuario.Pessoa.Id + "_" + DateTime.Now.ToString("yyyyMd_hhmmss") + ".jpg";
                        }
                    }
                    else
                    {
                        string extensao = Path.GetExtension(file.FileName);

                        fileName = "rec_" + usuario.Pessoa.Id + "_" + DateTime.Now.ToString("yyyyMd_hhmmss") + extensao;
                    }

                    var path = Path.Combine(Server.MapPath("~/Images/Uploads/Queixa"), fileName);

                    reclamacao.Anexo = fileName;

                    file.SaveAs(path);

                    PontuacaoUtils.Pontuar(usuario.Pessoa, PontuacaoEnum.ReclamacaoEmMidia);
                }
            }

            if (string.IsNullOrEmpty(reclamacao.Descricao) || string.IsNullOrEmpty(reclamacao.Titulo))
            {
                ViewBag.Erro = "Não é permitida a Inclusão de Reclamações sem Descrição ou Título.";
                return(View("IncluirReclamacao"));
            }

            reclamacao.Id_pessoa     = usuario.Pessoa.Id;
            reclamacao.DataHora      = DateTime.Now;
            reclamacao.IsSolucionado = false;
            reclamacao.IsAtivo       = true;

            if (reclamacao.Id == 0 || reclamacao.Id == null)
            {
                model.Add(reclamacao);
            }
            else
            {
                var rec = model.Reclamacaos.FirstOrDefault(f => f.Id == reclamacao.Id);

                rec.Departamento   = reclamacao.Departamento;
                rec.Id_instituicao = reclamacao.Id_instituicao;
                rec.Descricao      = reclamacao.Descricao;
                rec.Titulo         = reclamacao.Titulo;
                rec.Anexo          = reclamacao.Anexo;
            }

            if (reclamacao.Id == 0 || reclamacao.Id == null)
            {
                var log = new Log_participapao()
                {
                    Datahora  = DateTime.Now,
                    Acesso    = false,
                    Id_pessoa = reclamacao.Id_pessoa,
                    Tipo      = "Criou uma Reclamação"
                };

                reclamacao.Log_participapaos.Add(log);
                log.Reclamacao = reclamacao;

                model.Add(log);
            }

            if (model.HasChanges)
            {
                model.SaveChanges();
            }

            PontuacaoUtils.Pontuar(usuario.Pessoa, PontuacaoEnum.CadastroReclamacao);

            return(RedirectToAction("AcessarReclamacao", "Ouvidoria", new { Id = reclamacao.Id }));
        }
Beispiel #7
0
        public PartialViewResult _MarcarDesmarcarMelhorReposta(int id, int idRec, bool marcar)
        {
            var model = ConnectionDbClass.DataModel;

            var rec = model.Reclamacaos.FirstOrDefault(f => f.Id == idRec);

            Pessoa pessoa = null;

            if (rec != null)
            {
                var comentario = rec.Comentarios.FirstOrDefault(f => f.Id == id);

                if (comentario != null)
                {
                    comentario.IsSolucao = marcar;
                }

                pessoa = comentario.Pessoa;

                Log_participapao log = null;
                if (marcar)
                {
                    log = new Log_participapao()
                    {
                        Acesso        = false,
                        Datahora      = DateTime.Now,
                        Id_pessoa     = comentario.Id_pessoa,
                        Id_reclamacao = comentario.Id_reclamacao,
                        Tipo          = "Macou como solução"
                    };
                }
                else
                {
                    log = new Log_participapao()
                    {
                        Acesso        = false,
                        Datahora      = DateTime.Now,
                        Id_pessoa     = comentario.Id_pessoa,
                        Id_reclamacao = comentario.Id_reclamacao,
                        Tipo          = "Desmacou como solução"
                    };
                }

                model.Add(log);
            }

            if (model.HasChanges)
            {
                model.SaveChanges();
            }


            if (pessoa != null)
            {
                if (marcar)
                {
                    PontuacaoUtils.Pontuar(pessoa, PontuacaoEnum.MarcarSolucaoComentario);
                }
                else
                {
                    PontuacaoUtils.Pontuar(pessoa, PontuacaoEnum.DesmarcarSolucaoComentario);
                }
            }

            return(PartialView("_VerComentariosView", rec));
        }