Beispiel #1
0
        public object informarParticipacaoConheciGame(DTOParticipacaoConheciGame dtoParicipacao)
        {
            var manterItemTrilha = new ManterItemTrilha();
            var usuarioTrilha    = new ManterUsuarioTrilha().ObterPorId(dtoParicipacao.ID_UsuarioTrilha);
            var itemTrilha       = manterItemTrilha.ObterItemTrilhaPorID(dtoParicipacao.ID_ItemTrilha);

            if (dtoParicipacao.QuantidadeAcertos >= itemTrilha.QuantidadeAcertosTema && itemTrilha.Moedas.HasValue)
            {
                var manterMoedas = new ManterUsuarioTrilhaMoedas();

                if (!manterMoedas.ObterTodosIQueryable()
                    .Select(x => new { ID_ItemTrilha = x.ItemTrilha.ID, ID_UsuaioTrilha = x.UsuarioTrilha.ID })
                    .Any(x => x.ID_ItemTrilha == itemTrilha.ID && x.ID_UsuaioTrilha == usuarioTrilha.ID))
                {
                    manterMoedas.Incluir(usuarioTrilha, itemTrilha, null, 0, dtoParicipacao.QuantidadeAcertos);
                    return(new
                    {
                        Aprovado = true,
                        QuantidadeMoedas = itemTrilha.Moedas
                    });
                }
            }

            return(new
            {
                Aprovado = false,
                QuantidadeMoedas = itemTrilha.Moedas
            });
        }
        private DTOMensagemGuia VerificarMoedasProvaFinal(UsuarioTrilha matricula)
        {
            try
            {
                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

                var momento = enumMomento.PossuirMoedasProvaFinal;

                // Refresh básico da matrícula. Foi mal, mas estamos com pressa.
                matricula = new ManterUsuarioTrilha().ObterPorId(matricula.ID);

                var moedas = new ManterUsuarioTrilhaMoedas().Obter(matricula, enumTipoMoeda.Ouro);

                var minimoMoedas = matricula.TrilhaNivel.QuantidadeMoedasProvaFinal;

                var jaVisualizou =
                    new ManterUsuarioTrilhaMensagemGuia().ObterTodos()
                    .Any(x => x.UsuarioTrilha.ID == matricula.ID && x.MensagemGuia.ID == momento);

                if (minimoMoedas > 0 && moedas >= minimoMoedas && !jaVisualizou)
                {
                    var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                    var visualizacao = RegistrarVisualizacao(matricula, mensagem);

                    return(new DTOMensagemGuia(visualizacao.ID, mensagem.ObterTexto(trilha, matricula)));
                }

                return(null);
            }
            catch (Exception)
            {
                return(null);
            }
        }
        private DTOMensagemGuia VerificarEvolucaoPin(UsuarioTrilha matricula)
        {
            try
            {
                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

                var manterMatricula = new ManterUsuarioTrilha();
                var momento         = enumMomento.EvoluirPin;

                // Refresh básico da matrícula. Foi mal, mas estamos com pressa.
                matricula = manterMatricula.ObterPorId(matricula.ID);

                var moedasOuro  = new ManterUsuarioTrilhaMoedas().Obter(matricula, enumTipoMoeda.Ouro);
                var moedasNivel = new ManterTrilhaNivel().ObterTotalMoedasSolucoesSebrae(matricula.TrilhaNivel.ID);

                var tipoTrofeu = matricula.ObterTipoTrofeu(moedasOuro, moedasNivel);

                if (tipoTrofeu > matricula.TipoTrofeu && tipoTrofeu != enumTipoTrofeu.Bronze)
                {
                    matricula.TipoTrofeu = tipoTrofeu;
                    manterMatricula.Salvar(matricula);

                    var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                    var visualizacao = RegistrarVisualizacao(matricula, mensagem);

                    return(new DTOMensagemGuia(visualizacao.ID,
                                               mensagem.ObterTexto(trilha, matricula, corPin: tipoTrofeu.ToString())));
                }

                return(null);
            }
            catch (Exception)
            {
                return(null);
            }
        }