public static long GetValue(PontuacaoEnum enumValue)
        {
            switch (enumValue)
            {
            case PontuacaoEnum.CadastroUsuario:
                return(5);

            case PontuacaoEnum.AcessoReclamacao:
                return(1);

            case PontuacaoEnum.CadastroReclamacao:
                return(10);

            case PontuacaoEnum.CurtirReclamacao:
                return(2);

            case PontuacaoEnum.ReclamacaoCurtida:
                return(2);

            case PontuacaoEnum.DescurtirReclamacao:
                return(1);

            case PontuacaoEnum.ReclamacaoDescurtida:
                return(-1);

            case PontuacaoEnum.ComentarReclamacao:
                return(3);

            case PontuacaoEnum.MarcarSolucaoComentario:
                return(5);

            case PontuacaoEnum.DesmarcarSolucaoComentario:
                return(-5);

            case PontuacaoEnum.CurtirComentario:
                return(1);

            case PontuacaoEnum.ComentarioCurtido:
                return(1);

            case PontuacaoEnum.DescurtirComentario:
                return(1);

            case PontuacaoEnum.ComentarioDescurtido:
                return(-1);

            case PontuacaoEnum.SolucioncarReclamacao:
                return(50);

            case PontuacaoEnum.ReclamacaoEmMidia:
                return(3);

            default:
                return(0);
            }
        }
        public static string GetDescription(PontuacaoEnum enumValue)
        {
            switch (enumValue)
            {
            case PontuacaoEnum.CadastroUsuario:
                return("Cadastrou Usuário");

            case PontuacaoEnum.AcessoReclamacao:
                return("Acessou Reclamação");

            case PontuacaoEnum.CadastroReclamacao:
                return("Cadastrou Reclamação");

            case PontuacaoEnum.CurtirReclamacao:
                return("Curtiu Reclamação");

            case PontuacaoEnum.ReclamacaoCurtida:
                return("Reclamação Curtida");

            case PontuacaoEnum.DescurtirReclamacao:
                return("Descurtiu Reclamação");

            case PontuacaoEnum.ReclamacaoDescurtida:
                return("Reclamação Descurtida");

            case PontuacaoEnum.ComentarReclamacao:
                return("Comentou Reclamação");

            case PontuacaoEnum.MarcarSolucaoComentario:
                return("Comentário Marcado Como Solução");

            case PontuacaoEnum.DesmarcarSolucaoComentario:
                return("Comentário Desmarcado Como Solução");

            case PontuacaoEnum.CurtirComentario:
                return("Curtiu Comentário");

            case PontuacaoEnum.ComentarioCurtido:
                return("Comentário Curtido");

            case PontuacaoEnum.DescurtirComentario:
                return("Descurtiu Comentário");

            case PontuacaoEnum.ComentarioDescurtido:
                return("Comentário Descurtido");

            case PontuacaoEnum.SolucioncarReclamacao:
                return("Solucionou Reclamação");

            case PontuacaoEnum.ReclamacaoEmMidia:
                return("Inseriu uma mídia na reclamação");

            default:
                return("");
            }
        }
        public static void Pontuar(Pessoa pessoa, PontuacaoEnum tipoPonto)
        {
            var model = ConnectionDbClass.DataModel;

            var logNivel = model.Pessoa_nivel_pontos.FirstOrDefault(f => f.Id_pessoa == pessoa.Id);

            if (logNivel == null)
            {
                logNivel = new Pessoa_nivel_ponto()
                {
                    Id_pessoa = pessoa.Id,
                    Nivel     = 0,
                    Pontos    = -1
                };

                model.Add(logNivel);
            }

            var logPontos = new Log_pontos_pessoa()
            {
                Id_pessoa = pessoa.Id,
                Pontos    = PontuacaoEnumHelper.GetValue(tipoPonto),
                TipoPonto = (int)tipoPonto,
                Descricao = PontuacaoEnumHelper.GetDescription(tipoPonto),
                Data      = DateTime.Now
            };

            if (logNivel != null)
            {
                logNivel.Pontos += logPontos.Pontos;
            }

            if (AvancarNivel(pessoa))
            {
                var nivelAtual = model.Pessoa_nivel_pontos.First(f => f.Id_pessoa == pessoa.Id);

                nivelAtual.Nivel++;
            }

            model.Add(logPontos);

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