示例#1
0
        public IHttpActionResult PutDefinirHorario(int id, DateTime dataJogo, string horaJogo = "", string localJogo = "")
        {
            try
            {
                var jogo = db.Jogo.Find(id);
                if (jogo == null)
                {
                    return(InternalServerError(new Exception("Jogo não encontrado.")));
                }
                jogo.dataJogo  = dataJogo;
                jogo.horaJogo  = horaJogo;
                jogo.localJogo = localJogo;
                if (jogo.situacao_Id != 4 && jogo.situacao_Id != 5)
                {
                    jogo.situacao_Id = 2;
                }
                db.Entry(jogo).State = EntityState.Modified;
                db.SaveChanges();
            }
            catch (Exception e) {
                return(InternalServerError(e));
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#2
0
        public IHttpActionResult PutLancarResultado(int id, int games1setDesafiante = 0, int games2setDesafiante = 0, int games3setDesafiante = 0, int games1setDesafiado = 0, int games2setDesafiado = 0, int games3setDesafiado = 0)
        {
            var jogo = db.Jogo.Find(id);

            jogo.qtddGames1setDesafiante = games1setDesafiante;
            jogo.qtddGames2setDesafiante = games2setDesafiante;
            jogo.qtddGames3setDesafiante = games3setDesafiante;

            jogo.qtddGames1setDesafiado = games1setDesafiado;
            jogo.qtddGames2setDesafiado = games2setDesafiado;
            jogo.qtddGames3setDesafiado = games3setDesafiado;
            jogo.usuarioInformResultado = ""; //User.Identity.Name; TODO: PEGAR O NOME DO USUÁRIO
            jogo.dataCadastroResultado  = DateTime.Now;
            jogo.situacao_Id            = 4;

            db.Entry(jogo).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
                tc.MontarProximoJogoTorneio(jogo);
            }
            catch (Exception)
            {
                return(InternalServerError(new Exception("Erro ao lançar resultado.")));
            }
            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#3
0
        public IHttpActionResult PutBarragemView(int id, BarragemView barragemView)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != barragemView.Id)
            {
                return(BadRequest());
            }

            db.Entry(barragemView).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!BarragemViewExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#4
0
        public void gravarPontuacaoNaRodada(int idRodada, UserProfile jogador, double pontosConquistados, bool isReprocessamento = false)
        {
            if (jogador.situacao.Equals("curinga") || jogador.situacao.Equals("pendente"))
            {
                return;
            }
            Rancking ran            = null;
            double   pontuacaoTotal = db.Rancking.Where(r => r.rodada.isAberta == false && r.userProfile_id == jogador.UserId && r.rodada_id < idRodada).OrderByDescending(r => r.Id).Take(9).Sum(r => r.pontuacao);

            if (isReprocessamento)
            {
                ran           = db.Rancking.Where(r => r.rodada_id == idRodada && r.userProfile_id == jogador.UserId).Single();
                ran.pontuacao = Math.Round(pontosConquistados, 2);
                //ran.totalAcumulado = Math.Round(pontuacaoTotal + pontosConquistados, 2);
                db.SaveChanges();
            }
            else
            {
                ran                = new Rancking();
                ran.rodada_id      = idRodada;
                ran.pontuacao      = Math.Round(pontosConquistados, 2);
                ran.totalAcumulado = Math.Round(pontuacaoTotal + pontosConquistados, 2);
                ran.posicao        = 0;
                ran.userProfile_id = jogador.UserId;
                ran.classeId       = jogador.classeId;
                db.Rancking.Add(ran);
                db.SaveChanges();
            }
        }
示例#5
0
        public ActionResult Resetar()
        {
            string mensagem = "";

            try{
                using (TransactionScope scope = new TransactionScope()){
                    db.Database.ExecuteSqlCommand("Delete from Jogo");
                    db.Database.ExecuteSqlCommand("Delete from Rancking");
                    db.Database.ExecuteSqlCommand("Delete from Rodada where isRodadaCarga=0");
                    db.Database.ExecuteSqlCommand("update UserProfile set situacao='ativo' where situacao='suspenso'");
                    Rancking           ranking   = null;
                    List <Rodada>      rodadas   = db.Rodada.ToList();
                    List <UserProfile> jogadores = db.UserProfiles.ToList();
                    foreach (var rodada in rodadas)
                    {
                        foreach (var jogador in jogadores)
                        {
                            ranking                = new Rancking();
                            ranking.rodada_id      = rodada.Id;
                            ranking.pontuacao      = 5.0;
                            ranking.posicao        = 0;
                            ranking.totalAcumulado = 50;
                            ranking.userProfile_id = jogador.UserId;
                            db.Rancking.Add(ranking);
                        }
                    }
                    db.SaveChanges();
                    scope.Complete();
                    mensagem = "ok";
                }
            }catch (Exception ex) {
                mensagem = ex.Message;
            }
            return(RedirectToAction("Edit", "Configuracao", new{ id = 1, msg = mensagem }));
        }
示例#6
0
        public ActionResult Create(Liga liga)
        {
            if (ModelState.IsValid)
            {
                db.Liga.Add(liga);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(liga));
        }
示例#7
0
        public ActionResult Create(Barragens barragens)
        {
            try
            {
                var codigo = 91;
                var sql    = "";
                if (barragens.valorPorUsuario == null)
                {
                    barragens.valorPorUsuario = 5;
                }
                if (barragens.soTorneio == null)
                {
                    barragens.soTorneio = false;
                }
                using (TransactionScope scope = new TransactionScope())
                {
                    if (ModelState.IsValid)
                    {
                        if (!barragens.email.Equals(""))
                        {
                            if (!Funcoes.IsValidEmail(barragens.email))
                            {
                                ViewBag.MsgErro = string.Format("E-mail inválido. '{0}'", barragens.email);
                                return(View(barragens));
                            }
                        }
                        var meuRanking = db.Barragens.Find(8);
                        barragens.regulamento = meuRanking.regulamento;
                        db.Barragens.Add(barragens);
                        db.SaveChanges();
                        for (int i = 1; i <= 10; i++)
                        {
                            sql = "INSERT INTO Rodada(codigo, dataInicio, dataFim, isAberta, sequencial, isRodadaCarga, barragemId) " +
                                  "VALUES (" + codigo + ",'2000-01-01','2000-01-01', 0, " + i + ", 1, " + barragens.Id + ")";
                            db.Database.ExecuteSqlCommand(sql);
                            codigo = codigo + 1;
                        }
                        for (int i = 1; i <= 5; i++)
                        {
                            sql = "INSERT INTO Classe (nome, nivel, barragemId) VALUES ('" + i + "ª Classe'," + i + ", " + barragens.Id + ")";
                            db.Database.ExecuteSqlCommand(sql);
                        }
                        scope.Complete();
                        return(RedirectToAction("Index"));
                    }
                }
            }
            catch (Exception ex)
            {
                ViewBag.MsgErro = ex.Message;
            }

            return(View(barragens));
        }
示例#8
0
        public ActionResult Create(Jogo jogo)
        {
            if (ModelState.IsValid)
            {
                db.Jogo.Add(jogo);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.desafiado_id  = new SelectList(db.UserProfiles, "UserId", "UserName", jogo.desafiado_id);
            ViewBag.desafiante_id = new SelectList(db.UserProfiles, "UserId", "UserName", jogo.desafiante_id);
            ViewBag.rodada_id     = new SelectList(db.Rodada, "Id", "codigo", jogo.rodada_id);
            return(View(jogo));
        }
示例#9
0
        public ActionResult EnviarEmail(String nome, String fone)
        {
            var mensagem = "";

            if (String.IsNullOrEmpty(nome))
            {
                mensagem = "Favor informar seu nome.";
            }
            else if (String.IsNullOrEmpty(fone))
            {
                mensagem = "Favor informar um telefone de contato.";
            }
            else if (fone.Length < 15)
            {
                mensagem = "Número de celular incompleto. Verifique se foi preenchido o DDD + número de celular.";
            }
            else
            {
                mensagem = "Parabéns!!! Seu cadastro foi realizado com sucesso. Entraremos em contato em breve.";
                try
                {
                    Mail e = new Mail();
                    //e.SendEmail("*****@*****.**", "Solicitação de contato Ranking de tenis", "Nome do contato: " + nome + "<br>telefone de contato: " + fone, Class.Tipos.FormatoEmail.Html);
                    e.assunto  = "Solicitação de contato Ranking de tenis";
                    e.conteudo = "Nome do contato: " + nome + "<br>telefone de contato: " + fone;
                    e.formato  = Class.Tipos.FormatoEmail.Html;
                    e.de       = "*****@*****.**";
                    e.para     = "*****@*****.**";
                    e.bcc      = new List <String>()
                    {
                        "*****@*****.**"
                    };
                    e.EnviarMail();
                }
                catch (Exception e)
                {
                    var log2 = new Log();
                    log2.descricao = "Email :" + e.Message;
                    db.Log.Add(log2);
                    db.SaveChanges();
                    return(RedirectToAction("Index", "Home", new { msg = "Desculpe. Casdastro temporariamente indisponível." }));
                }
            }
            return(RedirectToAction("Index", "Home", new { msg = mensagem }));
        }
示例#10
0
 public ActionResult Edit(Rodada rodada)
 {
     if (ModelState.IsValid)
     {
         rodada.dataFim         = new DateTime(rodada.dataFim.Year, rodada.dataFim.Month, rodada.dataFim.Day, 23, 59, 59);
         db.Entry(rodada).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(rodada));
 }
示例#11
0
 public ActionResult Edit(Configuracao configuracao)
 {
     if (ModelState.IsValid)
     {
         db.Entry(configuracao).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(configuracao));
 }
示例#12
0
 public ActionResult AlterarClassesJogadores(IEnumerable <RankingView> rankingView)
 {
     try
     {
         UserProfile jogador = null;
         foreach (RankingView user in rankingView)
         {
             jogador = db.UserProfiles.Find(user.userProfile_id);
             var barraId = jogador.barragemId;
             var classe  = db.Classe.Where(c => c.barragemId == barraId && c.nivel == user.classeId).Single();
             jogador.classeId        = classe.Id;
             db.Entry(jogador).State = EntityState.Modified;
             db.SaveChanges();
         }
         return(Json(new { erro = "", retorno = 1 }, "text/plain", JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json(new { erro = ex.Message, retorno = 0 }, "text/plain", JsonRequestBehavior.AllowGet));
     }
 }
示例#13
0
        public ActionResult SolicitarAtivacao()
        {
            //string userName = MD5Crypt.Descriptografar(token);
            var         userName = User.Identity.Name;
            UserProfile user     = null;

            try
            {
                user = db.UserProfiles.Where(u => u.UserName.ToLower() == userName.ToLower()).FirstOrDefault();
                if (user != null)
                {
                    user.situacao        = "Ativamento solicitado";
                    db.Entry(user).State = EntityState.Modified;
                    db.SaveChanges();
                    notificarOrganizadorSolicitacaoAtivar(user.nome, user.barragemId);
                    return(View("SolicitarAtivacao"));
                }
                else
                {
                    ViewBag.MsgErro = "Este usuário não existe.";
                    return(View());
                }
            }
            catch (Exception ex)
            {
                var routeData = new RouteData();
                routeData.Values["controller"] = "Erros";
                routeData.Values["exception"]  = ex;
                routeData.Values["action"]     = "General";
                return(RedirectToAction("General", "Erros", routeData));
            }
            finally
            {
                if (db != null)
                {
                    db.Dispose();
                }
            }
            //return View();
        }
示例#14
0
        private void criarJogo(int jogador1, int jogador2, int torneioId, int classeTorneio, int faseTorneio, int ordemJogo)
        {
            Jogo jogo = new Jogo();

            jogo.desafiado_id  = jogador1;
            jogo.desafiante_id = jogador2;
            jogo.torneioId     = torneioId;
            jogo.situacao_Id   = 1;
            jogo.classeTorneio = classeTorneio;
            jogo.faseTorneio   = faseTorneio;
            jogo.ordemJogo     = ordemJogo;
            if ((jogador2 == 0) && (jogador1 != 0))
            {
                jogo.situacao_Id             = 4;
                jogo.qtddGames1setDesafiado  = 6;
                jogo.qtddGames2setDesafiado  = 6;
                jogo.qtddGames1setDesafiante = 0;
                jogo.qtddGames2setDesafiante = 0;
            }
            db.Jogo.Add(jogo);
            db.SaveChanges();
        }
示例#15
0
        public IHttpActionResult PutAlterarPerfil(int userId, string nome, string email, string celular, string naturalidade, DateTime dataNascimento, string altura, string lateralidade, string informacoesAdicionais)
        {
            var user = db.UserProfiles.Find(userId);

            user.nome            = nome;
            user.email           = email;
            user.telefoneCelular = celular;
            user.naturalidade    = naturalidade;
            user.dataNascimento  = dataNascimento;
            user.altura2         = altura;
            user.lateralidade    = lateralidade;
            user.matriculaClube  = informacoesAdicionais;

            db.Entry(user).State = EntityState.Modified;
            try{
                db.SaveChanges();
            }catch (Exception e) {
                return(InternalServerError(e));
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#16
0
        public ActionResult Create(Rodada rodada)
        {
            if (ModelState.IsValid)
            {
                List <Rodada> rodadas = db.Rodada.Where(r => r.isAberta == true && r.barragemId == rodada.barragemId).ToList();

                if (rodadas.Count() > 0)
                {
                    var mensagem = "Não foi possível criar uma nova rodada, pois ainda existe rodada(s) em aberto.";
                    return(RedirectToAction("Index", new { msg = mensagem }));
                }
                try{
                    Rodada rd = db.Rodada.Where(r => r.barragemId == rodada.barragemId).OrderByDescending(r => r.Id).Take(1).Single();
                    if (rd.sequencial == 10)
                    {
                        string alfabeto = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                        int    pos      = alfabeto.IndexOf(rd.codigo);
                        pos++;
                        rodada.sequencial = 1;
                        rodada.codigo     = Convert.ToString(alfabeto[pos]);
                    }
                    else
                    {
                        rodada.sequencial = rd.sequencial + 1;
                        rodada.codigo     = rd.codigo;
                    }
                }catch (InvalidOperationException) {
                    rodada.sequencial = 1;
                    rodada.codigo     = "A";
                }
                rodada.isAberta = true;
                rodada.dataFim  = new DateTime(rodada.dataFim.Year, rodada.dataFim.Month, rodada.dataFim.Day, 23, 59, 59);
                db.Rodada.Add(rodada);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(rodada));
        }
示例#17
0
        public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl)
        {
            string provider       = null;
            string providerUserId = null;

            if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId))
            {
                return(RedirectToAction("Manage"));
            }

            if (ModelState.IsValid)
            {
                // Insert a new user into the database
                using (BarragemDbContext db = new BarragemDbContext())
                {
                    UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table
                        db.UserProfiles.Add(new UserProfile {
                            UserName = model.UserName
                        });
                        db.SaveChanges();

                        OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
                        OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);

                        return(RedirectToLocal(returnUrl));
                    }
                    else
                    {
                        ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name.");
                    }
                }
            }

            ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName;
            ViewBag.ReturnUrl           = returnUrl;
            return(View(model));
        }
示例#18
0
        public ActionResult Create(Pagamento pagamento)
        {
            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    if (ModelState.IsValid)
                    {
                        pagamento.status = "Criado";
                        db.Pagamento.Add(pagamento);
                        db.SaveChanges();

                        var barragens = db.BarragemView.Where(b => b.isAtiva && !b.isTeste && (bool)!b.soTorneio).ToList();

                        foreach (BarragemView barragem in barragens)
                        {
                            var pgBarragem = new PagamentoBarragem();
                            pgBarragem.barragemId  = barragem.Id;
                            pgBarragem.pagamentoId = pagamento.Id;
                            pgBarragem.cobrar      = true;
                            pgBarragem.status      = "Criado";
                            db.PagamentoBarragem.Add(pgBarragem);
                        }
                        db.SaveChanges();
                        scope.Complete();
                        return(RedirectToAction("Index"));
                    }
                }
            }
            catch (Exception ex)
            {
                ViewBag.MsgErro = ex.Message;
            }

            return(View(pagamento));
        }
示例#19
0
        public async Task ConfirmarNotificacao(Notificacao notificacao)
        {
            try
            {
                var response = await client.PostAsJsonAsync(
                    "/transaction/notification", notificacao);

                if (response.IsSuccessStatusCode)
                {
                    var retorno = await response.Content.ReadAsAsync <RetornoNotificacao>();

                    int id = Convert.ToInt32(retorno.status_request.items[0].item_id);
                    var pb = db.PagamentoBarragem.Where(p => p.Id == id).SingleOrDefault();
                    if (retorno.status_request.result == "success")
                    {
                        if (retorno.status_request.status == "paid" || retorno.status_request.status == "reserved" || retorno.status_request.status == "completed")
                        {
                            pb.status = "Pago";
                            var barragem = db.Barragens.Find(pb.barragemId);
                            if (barragem.isAtiva == false)
                            {
                                barragem.isAtiva         = true;
                                db.Entry(barragem).State = EntityState.Modified;
                                db.SaveChanges();
                            }
                        }
                        else if (retorno.status_request.status == "canceled")
                        {
                            if (pb.status != "Pago")
                            {
                                pb.status = retorno.status_request.status;
                                var barragem = db.Barragens.Find(pb.barragemId);
                                barragem.isAtiva         = false;
                                db.Entry(barragem).State = EntityState.Modified;
                                db.SaveChanges();
                            }
                        }
                        else if (retorno.status_request.status == "pending")
                        {
                            // não faz nada
                        }
                        else
                        {
                            pb.status = retorno.status_request.status;
                        }
                        db.Entry(pb).State = EntityState.Modified;
                        db.SaveChanges();
                        if (retorno.status_request.status == "paid" || retorno.status_request.status == "reserved" || retorno.status_request.status == "completed")
                        {
                            Pagamento pagamento = db.Pagamento.Find(pb.pagamentoId);
                            pagamento.arrecadado = db.PagamentoBarragem.Where(pg => pg.pagamentoId == pagamento.Id && pg.status == "Pago").Sum(pg => pg.valor);
                            if (pagamento.arrecadado == pagamento.areceber)
                            {
                                pagamento.status = "Finalizado";
                            }
                            else
                            {
                                pagamento.status = "Em aberto";
                            }
                            db.Entry(pagamento).State = EntityState.Modified;
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        pb.status          = retorno.status_request.response_message;
                        db.Entry(pb).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                }
            }
            catch (Exception e)
            {
                var log2 = new Log();
                log2.descricao = "PagHiper: Exception:" + DateTime.Now + e.Message + ": transactionId:" + notificacao.transaction_id + ":" + notificacao.notification_id;
                db.Log.Add(log2);
                db.SaveChanges();
            }
        }
示例#20
0
        public void GerarSnapshotDaLiga(Jogo jogo)
        {
            //verifica se todas as finais foram lançadas
            List <Jogo> finaisDoTorneio = db.Jogo.Where(j => j.torneioId == jogo.torneioId && j.faseTorneio == 1).ToList();

            foreach (Jogo finalDeClasse in finaisDoTorneio)
            {
                if (!(finalDeClasse.situacao_Id == 4 || finalDeClasse.situacao_Id == 5 || finalDeClasse.situacao_Id == 6))
                {
                    //não gera novo ranking enquanto nao finalizar todas as classes do torneio
                    return;
                }
            }
            List <TorneioLiga> ligasDoTorneio = db.TorneioLiga.Include(tl => tl.Liga).Where(tl => tl.TorneioId == jogo.torneioId).ToList();

            foreach (TorneioLiga tl in ligasDoTorneio)
            {
                Snapshot ultimoSnap;
                try
                {
                    ultimoSnap = db.Snapshot.Where(s => s.LigaId == tl.LigaId).OrderByDescending(s => s.Id).ToList().First();
                }
                catch (Exception e)
                {
                    ultimoSnap = null;
                }
                //para cada liga, gerar um snapshot
                Liga     liga     = tl.Liga;
                Snapshot novoSnap = new Snapshot {
                    Data = DateTime.Now, LigaId = liga.Id
                };
                db.Snapshot.Add(novoSnap);
                db.SaveChanges();
                //para cada categoria da liga, gerar um ranking
                List <ClasseLiga> classesDaLiga = db.ClasseLiga.Include(cl => cl.Categoria).Where(cl => cl.LigaId == liga.Id).ToList();
                foreach (ClasseLiga cl in classesDaLiga)
                {
                    Categoria categoriaDaLiga = cl.Categoria;
                    //copia os resultados que ja existem para o novo ranking
                    List <SnapshotRanking> ultimoRankingDaCategoriaNaLiga = new List <SnapshotRanking>();
                    if (ultimoSnap != null)
                    {
                        ultimoRankingDaCategoriaNaLiga = db.SnapshotRanking
                                                         .Where(sr => sr.CategoriaId == categoriaDaLiga.Id &&
                                                                sr.LigaId == liga.Id && sr.SnapshotId == ultimoSnap.Id).ToList();
                    }
                    foreach (SnapshotRanking ultimoResultado in ultimoRankingDaCategoriaNaLiga)
                    {
                        SnapshotRanking novoResultado = new SnapshotRanking();
                        novoResultado.SnapshotId  = novoSnap.Id;
                        novoResultado.LigaId      = ultimoResultado.LigaId;
                        novoResultado.CategoriaId = ultimoResultado.CategoriaId;
                        novoResultado.UserId      = ultimoResultado.UserId;
                        novoResultado.Pontuacao   = ultimoResultado.Pontuacao;
                        db.SnapshotRanking.Add(novoResultado);
                        db.SaveChanges();
                    }
                    //atualiza o ranking com os resultados do torneio
                    ClasseTorneio classeTorneio = db.ClasseTorneio
                                                  .Where(ct => ct.torneioId == jogo.torneioId && ct.categoriaId == categoriaDaLiga.Id)
                                                  .ToList().First();
                    List <InscricaoTorneio> resultadosDoTorneio = db.InscricaoTorneio
                                                                  .Where(it => it.torneioId == jogo.torneioId && it.classe == classeTorneio.Id).ToList();
                    foreach (InscricaoTorneio resultado in resultadosDoTorneio)
                    {
                        try
                        {
                            SnapshotRanking ultimoRankingDoJogador = db.SnapshotRanking.Where(sr => sr.LigaId == liga.Id &&
                                                                                              sr.CategoriaId == categoriaDaLiga.Id &&
                                                                                              sr.UserId == resultado.userId &&
                                                                                              sr.SnapshotId == novoSnap.Id).Single();
                            int pontuacaoAtualizada = ultimoRankingDoJogador.Pontuacao + resultado.Pontuacao ?? 0;
                            ultimoRankingDoJogador.Pontuacao = pontuacaoAtualizada;
                            db.SaveChanges();
                        }
                        catch (Exception e)
                        {
                            SnapshotRanking novoRanking = new SnapshotRanking();
                            novoRanking.SnapshotId  = novoSnap.Id;
                            novoRanking.LigaId      = liga.Id;
                            novoRanking.CategoriaId = categoriaDaLiga.Id;
                            novoRanking.UserId      = resultado.userId;
                            novoRanking.Pontuacao   = resultado.Pontuacao ?? 0;
                            db.SnapshotRanking.Add(novoRanking);
                            db.SaveChanges();
                        }
                    }
                    //coloca as posicoes do ranking
                    List <SnapshotRanking> rankingAtual = db.SnapshotRanking.Where(sr => sr.LigaId == liga.Id &&
                                                                                   sr.CategoriaId == categoriaDaLiga.Id &&
                                                                                   sr.SnapshotId == novoSnap.Id).OrderByDescending(sr => sr.Pontuacao).ToList();
                    int i = 1;
                    foreach (SnapshotRanking ranking in rankingAtual)
                    {
                        ranking.Posicao = i;
                        db.SaveChanges();
                        i++;
                    }
                }
            }
        }
示例#21
0
        public void Receber(string notificationCode, string notificationType, int ranking = 0)
        {
            var log = new Log();

            log.descricao = "Chegou:" + DateTime.Now + ":" + notificationCode;
            db.Log.Add(log);
            db.SaveChanges();

            var barragem = db.BarragemView.Find(ranking);
            AccountCredentials credentials = new AccountCredentials(barragem.emailPagSeguro, barragem.tokenPagSeguro);

            if (notificationType == "transaction")
            {
                // obtendo o objeto transaction a partir do código de notificação
                Transaction transaction = NotificationService.CheckTransaction(credentials, notificationCode);
                // Data da criação
                DateTime date = transaction.Date;
                // Data da última atualização
                DateTime lastEventDate = transaction.LastEventDate;
                // Código da transação
                string code = transaction.Code;
                // Refência
                string reference = transaction.Reference;
                // Valor bruto
                decimal grossAmount = transaction.GrossAmount;
                // Tipo
                int type = transaction.TransactionType;
                // Status

                /* Código	Significado
                 * 1	Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento.
                 * 2	Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação.
                 * 3	Paga: a transação foi paga pelo comprador e o PagSeguro já recebeu uma confirmação da instituição financeira responsável pelo processamento.
                 * 4	Disponível: a transação foi paga e chegou ao final de seu prazo de liberação sem ter sido retornada e sem que haja nenhuma disputa aberta.
                 * 5	Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa.
                 * 6	Devolvida: o valor da transação foi devolvido para o comprador.
                 * 7	Cancelada: a transação foi cancelada sem ter sido finalizada.
                 * 8	Debitado: o valor da transação foi devolvido para o comprador.
                 * 9	Retenção temporária: o comprador contestou o pagamento junto à operadora do cartão de crédito ou abriu uma demanda judicial ou administrativa (Procon).
                 */
                int status = transaction.TransactionStatus;
                // Valor líquido
                decimal netAmount = transaction.NetAmount;
                // Valor das taxas cobradas
                decimal feeAmount = transaction.FeeAmount;
                // Valor extra ou desconto
                decimal extraAmount = transaction.ExtraAmount;
                // Tipo de meio de pagamento
                PaymentMethod paymentMethod = transaction.PaymentMethod;

                string[] refs = reference.Split('-');
                if (refs[0].Equals("T"))
                { // se for torneio
                    int idInscricao = Convert.ToInt32(refs[1]);
                    var inscricao   = db.InscricaoTorneio.Find(idInscricao);
                    if (status == 3)
                    {
                        inscricao.isAtivo = true;
                    }
                    inscricao.statusPagamento = status + "";
                    inscricao.formaPagamento  = paymentMethod.PaymentMethodType + "";
                    inscricao.valor           = (float)transaction.GrossAmount;
                    db.Entry(inscricao).State = EntityState.Modified;
                    db.SaveChanges();
                    var log2 = new Log();
                    log2.descricao = ranking + " movimentacao ok " + status + ":" + DateTime.Now + ":" + notificationCode;
                    db.Log.Add(log2);
                    db.SaveChanges();

                    // ativar segunda inscrição caso exista
                    var listInscricao = db.InscricaoTorneio.Where(t => t.torneioId == inscricao.torneioId && t.userId == inscricao.userId && t.Id != inscricao.Id).ToList();
                    if (listInscricao.Count() > 0)
                    {
                        var inscricao2 = listInscricao[0];
                        if (status == 3)
                        {
                            inscricao2.isAtivo = true;
                        }
                        inscricao2.statusPagamento = status + "";
                        inscricao2.formaPagamento  = paymentMethod.PaymentMethodType + "";
                        inscricao2.valor           = (float)transaction.GrossAmount;
                        db.Entry(inscricao2).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                }
            }
        }
示例#22
0
 public void gravarPontuacaoNaRodada(int idRodada, UserProfile jogador, double pontosConquistados, bool isReprocessamento = false)
 {
     try
     {
         if (jogador.situacao.Equals("curinga") || jogador.situacao.Equals("pendente"))
         {
             return;
         }
         Rancking ran            = null;
         double   pontuacaoTotal = 0;
         try
         {
             int    quantidadeDeRodadasParaPontuacao = 9;
             Rodada rodadaAtual = db.Rodada.Where(r => r.Id == idRodada).Single();
             if (rodadaAtual.temporada.iniciarZerada)
             {
                 int quantidadeDeRodadasRealizadas = db.Rodada.Where(r => r.temporadaId == rodadaAtual.temporadaId && r.Id != idRodada).Count();
                 if (quantidadeDeRodadasRealizadas < quantidadeDeRodadasParaPontuacao)
                 {
                     quantidadeDeRodadasParaPontuacao = quantidadeDeRodadasRealizadas;
                 }
             }
             if (quantidadeDeRodadasParaPontuacao > 0)
             {
                 pontuacaoTotal = db.Rancking.Where(r => r.rodada.isAberta == false && r.userProfile_id == jogador.UserId && r.rodada_id < idRodada).
                                  OrderByDescending(r => r.rodada_id).Take(quantidadeDeRodadasParaPontuacao).Sum(r => r.pontuacao);
             }
         }
         catch (Exception e)
         {
             return;
         }
         if (isReprocessamento)
         {
             ran           = db.Rancking.Where(r => r.rodada_id == idRodada && r.userProfile_id == jogador.UserId).Single();
             ran.pontuacao = Math.Round(pontosConquistados, 2);
             //ran.totalAcumulado = Math.Round(pontuacaoTotal + pontosConquistados, 2);
             db.SaveChanges();
         }
         else
         {
             var naoExisteRanking = db.Rancking.Where(r => r.rodada_id == idRodada && r.userProfile_id == jogador.UserId).Count();
             if (naoExisteRanking == 0)
             {
                 ran                = new Rancking();
                 ran.rodada_id      = idRodada;
                 ran.pontuacao      = Math.Round(pontosConquistados, 2);
                 ran.totalAcumulado = Math.Round(pontuacaoTotal + pontosConquistados, 2);
                 ran.posicao        = 0;
                 ran.userProfile_id = jogador.UserId;
                 ran.classeId       = jogador.classeId;
                 db.Rancking.Add(ran);
                 db.SaveChanges();
             }
         }
     }
     catch (Exception e)
     {
         System.ArgumentException argEx = new System.ArgumentException("Jogador:" + jogador.UserId, "Jogador:" + jogador.UserId, e);
         throw argEx;
     }
 }