private void dgvRodadas_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.RowIndex > -1) { int numRodada; numRodada = Convert.ToInt32(((DataGridView)sender).Tag); List <Competicao_Partida> partidas = competicao.partidas.FindAll(partidasAEncontrar => partidasAEncontrar.rodada == numRodada); Competicao_Partida partida = partidas[e.RowIndex]; if (partida.data is null) { MessageBox.Show("Por favor verifique" + Environment.NewLine + Environment.NewLine + String.Format("Não foi possível realizar a partida entre {0} e {1} pois não foi definida uma data para a realização da partida", partida.equipe1.nome, partida.equipe2.nome), String.Format("{0} - {1} x {2}", competicao.nome, partida.equipe1.nome, partida.equipe2.nome), MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (partida.arbitro is null) { MessageBox.Show("Por favor verifique" + Environment.NewLine + Environment.NewLine + String.Format("Não foi possível realizar a partida entre {0} e {1} pois não foi definido o árbitro da partida", partida.equipe1.nome, partida.equipe2.nome), String.Format("{0} - {1} x {2}", competicao.nome, partida.equipe1.nome, partida.equipe2.nome), MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { abrePartida(partida, (DataGridView)sender, partidas, false); } } }
private void exportarPlanilha(object sender, EventArgs e) { Competicao competicao = (Competicao)(((List <Object>)((ToolStripMenuItem)sender).Tag)[0]); Competicao_Partida partida = (Competicao_Partida)(((List <Object>)((ToolStripMenuItem)sender).Tag)[1]); if (partida.data is null) { MessageBox.Show("Por favor verifique" + Environment.NewLine + Environment.NewLine + String.Format("Não foi possível exportar a planilha da partida entre {0} e {1} pois não foi definida uma data para a realização da partida", partida.equipe1.nome, partida.equipe2.nome), String.Format("{0} - {1} x {2}", competicao.nome, partida.equipe1.nome, partida.equipe2.nome), MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (partida.arbitro is null) { MessageBox.Show("Por favor verifique" + Environment.NewLine + Environment.NewLine + String.Format("Não foi possível realizar a partida entre {0} e {1} pois não foi definido o árbitro da partida", partida.equipe1.nome, partida.equipe2.nome), String.Format("{0} - {1} x {2}", competicao.nome, partida.equipe1.nome, partida.equipe2.nome), MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { if (partida.equipe1.atletas is null) { partida.equipe1.atletas = PessoaRepositorio.Instance.getAtletasByEquipeCompeticao(competicao.id, partida.equipe1.id); } if (partida.equipe2.atletas is null) { partida.equipe2.atletas = PessoaRepositorio.Instance.getAtletasByEquipeCompeticao(competicao.id, partida.equipe2.id); } GerenciadorCSV.exportarPlanilha(competicao, partida); } }
private void dgvRodada_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1) { DataGridView dataGridView = (DataGridView)sender; Competicao_Partida partida = partidasPorRodada_view[tcPartidas.SelectedIndex][e.RowIndex]; if (partida.encerrada) { dataGridView.Rows[e.RowIndex].Cells["Data_view"].Value = ((DateTime)partida.data).ToString("dd/MM/yyyy"); } else { string strData = dataGridView.Rows[e.RowIndex].Cells["Data_view"].Value.ToString(); DateTime dataPartida = new DateTime(); if (DateTime.TryParseExact(strData, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.NoCurrentDateDefault, out dataPartida)) { if (dataPartida.Date >= DateTime.Now.Date) { partida.data = dataPartida; partidasPorRodada_view[tcPartidas.SelectedIndex][e.RowIndex].data = dataPartida; partidasPorRodada[tcPartidas.SelectedIndex].Find(find => find.id == partida.id).data = dataPartida; CompeticaoRepositorio.Instance.updatePartida(ref competicao, partida); return; } } dataGridView.Rows[e.RowIndex].Cells["Data_view"].Value = ""; } } }
private void btnEncerrarPartida_Click(object sender, EventArgs e) { int golsEquipe1 = 0, golsEquipe2 = 0; //Verifica se terá que ter desempate if (partida.rodada < 0) { if (penalidades) { int golsPenaltiEquipe1, golsPenaltiEquipe2; golsPenaltiEquipe1 = partida.eventos.FindAll(eventos => eventos.tpEvento.Equals(tpEventoEnum.Gol_Penalti) && eventos.equipe.id == partida.equipe1.id).Count; golsPenaltiEquipe2 = partida.eventos.FindAll(eventos => eventos.tpEvento.Equals(tpEventoEnum.Gol_Penalti) && eventos.equipe.id == partida.equipe2.id).Count; if (golsPenaltiEquipe1 == golsPenaltiEquipe2) { return; } } else { golsEquipe1 = partida.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol) && eventosAEncontrar.equipe.id.Equals(partida.equipe1.id)).Count; golsEquipe2 = partida.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol) && eventosAEncontrar.equipe.id.Equals(partida.equipe2.id)).Count; // Se for mata-mata só vai para os penaltis no segundo jogo if (competicao.jogosIdaEVolta_FaseFinal) { // Verifica se é o jogo de volta Competicao_Partida partidaIda = competicao.partidas.Find(x => x.encerrada && x.rodada == partida.rodada && x.numGrupo == partida.numGrupo && x.equipe1.id == partida.equipe2.id && x.equipe2.id == partida.equipe1.id && x.id != partida.id); if (!(partidaIda is null)) { golsEquipe1 += partidaIda.eventos.FindAll(eventos => eventos.tpEvento.Equals(tpEventoEnum.Gol) && eventos.equipe.id == partida.equipe1.id).Count; golsEquipe2 += partidaIda.eventos.FindAll(eventos => eventos.tpEvento.Equals(tpEventoEnum.Gol) && eventos.equipe.id == partida.equipe2.id).Count; if (golsEquipe1 == golsEquipe2) { btnDisputaPenaltis.Enabled = true; btnDisputaPenaltis_Click(null, null); return; } } } else { if (golsEquipe1 == golsEquipe2) { btnDisputaPenaltis.Enabled = true; btnDisputaPenaltis_Click(null, null); return; } } } } partidaIniciada = false; partida.encerrada = true; CompeticaoRepositorio.Instance.updatePartida(ref competicao, partida); fillFields(); }
private void abrePartida(Competicao_Partida partida, DataGridView sender, List <Competicao_Partida> partidas, bool partidaIniciada) { ViewPartida viewPartida = new ViewPartida(usuarioLogado, competicao, partida, partidaIniciada); viewPartida.Tag = new List <Object>() { sender, partidas }; viewPartida.FormClosing += viewPartida_FormClosing; viewPartida.ShowDialog(); }
public ViewPartida(Usuario usuarioLogado, Competicao competicao, Competicao_Partida partida, bool partidaIniciada = false) { InitializeComponent(); // Centraliza o form na tela CenterToScreen(); this.usuarioLogado = usuarioLogado; this.competicao = competicao; this.partida = partida; this.partidaIniciada = partidaIniciada; }
public SetArbitro(Usuario usuarioLogado, Competicao competicao, Competicao_Partida partida) { InitializeComponent(); CenterToScreen(); this.usuarioLogado = usuarioLogado; this.competicao = competicao; this.partida = partida; arbitros = CompeticaoRepositorio.Instance.getArbitroPorCompeticao(competicao.id); if (arbitros is null) { MessageBox.Show("Houve um erro ao tentar listar os registros." + Environment.NewLine + Environment.NewLine + errorMessage, "Contate o Suporte técnico", MessageBoxButtons.OK, MessageBoxIcon.Error); } arbitros_view = new List <Cargo>(arbitros); Text += String.Format(" - {0} - {1} | {2} ", partida.equipe1.nome, partida.equipe2.nome, (partida.data is null? "" : ((DateTime)partida.data).ToString("dd/MM/yyyy"))); windowMode = Utilidades.WindowMode.ModoNormal; windowModeChanged(); }
public static void relatorioPartidas(Competicao competicao, List <Competicao_Partida> partidas, int rodada, string nomeRodada, bool fotoAtleta) { //Cabeçalho HTML StringBuilder cabecalhoHTML = new StringBuilder(); cabecalhoHTML.AppendLine("<html>"); cabecalhoHTML.AppendLine(" <head>"); cabecalhoHTML.AppendLine(" <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css\" integrity=\"sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB\" crossorigin=\"anonymous\">"); cabecalhoHTML.AppendLine(" <script src=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js\" integrity=\"sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T\" crossorigin=\"anonymous\"></script>"); cabecalhoHTML.AppendLine(" <meta charset=\"UTF-8\">"); cabecalhoHTML.AppendFormat(" <title>{0} - Artilheiros</title>", competicao.nome).AppendLine(); cabecalhoHTML.AppendLine(" </head>"); cabecalhoHTML.AppendLine(" <style>"); cabecalhoHTML.AppendLine(" th { font-size: 18px; }"); cabecalhoHTML.AppendLine(" td { font-size: 16px; }"); cabecalhoHTML.AppendLine(" div { font-size: 18px; }"); cabecalhoHTML.AppendLine(" </style>"); cabecalhoHTML.AppendLine(" <body>"); //Cabeçalho Relatório StringBuilder cabecalhoRelatorio = new StringBuilder(); cabecalhoRelatorio.AppendLine(" <div class=\"card\">"); cabecalhoRelatorio.AppendFormat(" <div class=\"card-header bg-primary mb-3\"><strong>{0}</strong></div>", nomeRodada).AppendLine(); cabecalhoRelatorio.AppendLine(" <div class=\"card-body\">"); cabecalhoRelatorio.AppendLine(" <table class=\"table table-striped\">"); cabecalhoRelatorio.AppendLine(" <thead>"); cabecalhoRelatorio.AppendLine(" <tr>"); string nomeGrupoJogo; if (rodada < 0) { nomeGrupoJogo = "Jogo"; } else { nomeGrupoJogo = "Grupo"; } cabecalhoRelatorio.AppendFormat(" <th style=\"width: 10%\">{0}</th>", nomeGrupoJogo).AppendLine(); cabecalhoRelatorio.AppendLine(" <th style=\"width: 10%\">Data</th>"); if (fotoAtleta) { cabecalhoRelatorio.AppendLine(" <th style=\"width: 4.41%\"> </th>"); } cabecalhoRelatorio.AppendLine(" <th style=\"width: 17.85%\">Casa</th>"); cabecalhoRelatorio.AppendLine(" <th style=\"width: 6%\"> </th>"); cabecalhoRelatorio.AppendLine(" <th style=\"width: 2%\">X</th>"); cabecalhoRelatorio.AppendLine(" <th style=\"width: 6%\"> </th>"); cabecalhoRelatorio.AppendLine(" <th style=\"width: 17.85%\">Visitante</th>"); if (fotoAtleta) { cabecalhoRelatorio.AppendLine(" <th style=\"width: 4.41%\"> </th>"); } cabecalhoRelatorio.AppendLine(" <th style=\"width: 15.66%\">Árbitro</th>"); cabecalhoRelatorio.AppendLine(" </tr>"); cabecalhoRelatorio.AppendLine(" </thead>"); cabecalhoRelatorio.AppendLine(" <tbody>"); //Partidas StringBuilder partidasRelatorio = new StringBuilder(); for (int numPartida = 0; numPartida < partidas.Count; numPartida++) { Competicao_Partida partida = partidas[numPartida]; int numGolsEquipe1, numGolsEquipe2; numGolsEquipe1 = partida.eventos.FindAll(find => find.tpEvento == tpEventoEnum.Gol && find.id_Equipe == partida.equipe1.id).Count; numGolsEquipe2 = partida.eventos.FindAll(find => find.tpEvento == tpEventoEnum.Gol && find.id_Equipe == partida.equipe2.id).Count; int numGolsPenaltiEquipe1, numGolsPenaltiEquipe2; numGolsPenaltiEquipe1 = partida.eventos.FindAll(find => find.tpEvento == tpEventoEnum.Gol_Penalti && find.id_Equipe == partida.equipe1.id).Count; numGolsPenaltiEquipe2 = partida.eventos.FindAll(find => find.tpEvento == tpEventoEnum.Gol_Penalti && find.id_Equipe == partida.equipe2.id).Count; bool vitoriaEquipe1, vitoriaEquipe2; if (numGolsPenaltiEquipe1 > 0 || numGolsPenaltiEquipe2 > 0) { vitoriaEquipe1 = numGolsPenaltiEquipe1 > numGolsPenaltiEquipe2; vitoriaEquipe2 = numGolsPenaltiEquipe2 > numGolsPenaltiEquipe1; } else { vitoriaEquipe1 = numGolsEquipe1 > numGolsEquipe2; vitoriaEquipe2 = numGolsEquipe2 > numGolsEquipe1; } partidasRelatorio.AppendLine(" <tr>"); if (rodada < 0) { nomeGrupoJogo = "Jogo " + partida.numGrupo.ToString(); } else { nomeGrupoJogo = CompeticaoViewUtilidades.getNomeGrupo(competicao.nomesGrupos, partida.numGrupo + 1); } partidasRelatorio.AppendFormat(" <td>{0}</td>", nomeGrupoJogo).AppendLine(); string dataJogo; if (partida.data is null) { dataJogo = ""; } else { dataJogo = ((DateTime)partida.data).ToString("dd/MM/yyyy"); } partidasRelatorio.AppendFormat(" <td>{0}</td>", dataJogo).AppendLine(); if (fotoAtleta) { partidasRelatorio.AppendFormat(" <td><div class=\"text-center\"> <img height=\"25\" src=\"file:///{0}\" class=\"rounded\"></div></td> ", (partida.equipe1.urlLogo is null ? "" : partida.equipe1.urlLogo)).AppendLine(); } string golsEquipe1 = numGolsEquipe1.ToString(); if (numGolsPenaltiEquipe1 > 0 || numGolsPenaltiEquipe2 > 0) { golsEquipe1 += " (" + numGolsPenaltiEquipe1.ToString() + ")"; } partidasRelatorio.AppendFormat(" <td {0}>{1}</td>", (vitoriaEquipe1 ? "style=\"font-weight:bold\"" : ""), partida.equipe1.nome).AppendLine(); partidasRelatorio.AppendFormat(" <td align=\"right\" {0}>{1}</td>", (vitoriaEquipe1 ? "style=\"font-weight:bold\"" : ""), (partida.encerrada ? golsEquipe1 : "")).AppendLine(); partidasRelatorio.AppendLine(" <td style=\"font-weight:bold\">X</td>"); string golsEquipe2 = ""; if (numGolsPenaltiEquipe1 > 0 || numGolsPenaltiEquipe2 > 0) { golsEquipe2 = "(" + numGolsPenaltiEquipe2.ToString() + ") "; } golsEquipe2 += numGolsEquipe2.ToString(); partidasRelatorio.AppendFormat(" <td align=\"left\" {0}>{1}</td>", (vitoriaEquipe2 ? "style=\"font-weight:bold\"" : ""), (partida.encerrada ? golsEquipe2 : "")).AppendLine(); partidasRelatorio.AppendFormat(" <td {0}>{1}</td>", (vitoriaEquipe2 ? "style=\"font-weight:bold\"" : ""), partida.equipe2.nome).AppendLine(); if (fotoAtleta) { partidasRelatorio.AppendFormat(" <td><div class=\"text-center\"> <img height=\"25\" src=\"file:///{0}\" class=\"rounded\"></div></td> ", (partida.equipe2.urlLogo is null ? "" : partida.equipe2.urlLogo)).AppendLine(); } partidasRelatorio.AppendFormat(" <td>{0}</td>", (partida.arbitro is null? "" : partida.arbitro.pessoa.nome)).AppendLine(); partidasRelatorio.AppendLine(" </tr> "); } //Parte final relatório StringBuilder finalRelatorio = new StringBuilder(); finalRelatorio.AppendLine(" </tbody>"); finalRelatorio.AppendLine(" </table>"); finalRelatorio.AppendLine(" </div>"); finalRelatorio.AppendLine(" </div>"); //Final HTML StringBuilder finalHTML = new StringBuilder(); finalHTML.AppendLine(" </body>"); finalHTML.AppendLine("</html>"); //HTML Inteiro StringBuilder fullHTML = new StringBuilder(); fullHTML.Append(cabecalhoHTML.ToString()); fullHTML.Append(cabecalhoRelatorio.ToString()); fullHTML.Append(partidasRelatorio.ToString()); fullHTML.Append(finalRelatorio.ToString()); fullHTML.Append(finalHTML.ToString()); // Escolhe onde vai salvar o arquivo SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "HTML Files|*.html"; saveFileDialog.Title = "Escolha um diretório para salvar o relatório de partidas"; saveFileDialog.FileName = String.Format("{0} - {1} - Relatório de partidas", competicao.nome, nomeRodada); if (saveFileDialog.ShowDialog() == DialogResult.OK) { // Salva o arquivo StreamWriter salvar = new StreamWriter(saveFileDialog.FileName); salvar.WriteLine(fullHTML.ToString()); salvar.Close(); if (MessageBox.Show("Gostaria de abrir o relatório?", "Relatório de partidas", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { System.Diagnostics.Process.Start(saveFileDialog.FileName); } } }
private void btnProximaFase_Click(object sender, EventArgs e) { int numPartidasRestantes; if (competicao.fase_Atual == 0) { numPartidasRestantes = competicao.partidas.FindAll(partidas => partidas.encerrada == false && partidas.rodada > competicao.fase_Atual).Count; } else { numPartidasRestantes = competicao.partidas.FindAll(partidas => partidas.encerrada == false && partidas.rodada == competicao.fase_Atual).Count; } if (numPartidasRestantes > 0) { MessageBox.Show("Por favor verifique" + Environment.NewLine + Environment.NewLine + "Existem ainda " + numPartidasRestantes + " partidas que não foram encerradas nesta fase.", "Não foi possível avançar", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { int numProximaFase = 0; int numPartidasASeremGeradas = 0; // Caso a fase atual seja a fase classificatória if (competicao.fase_Atual >= 0) { switch (competicao.faseFinal) { case FaseFinalEnum._5_OitavasFinal: numProximaFase = -4; numPartidasASeremGeradas = 8; break; case FaseFinalEnum._4_QuartasFinal: numProximaFase = -3; numPartidasASeremGeradas = 4; break; case FaseFinalEnum._3_SemiFinal: numProximaFase = -2; numPartidasASeremGeradas = 2; break; case FaseFinalEnum._2_Final: numProximaFase = -1; numPartidasASeremGeradas = 1; break; } // Zera os cartões da competição if (competicao.zerarCartoesFaseFinal) { CompeticaoRepositorio.Instance.zeraSuspensao(competicao); } // O campeonato é só por pontos corridos if ((competicao.faseFinal == FaseFinalEnum._1_Nao) && (competicao.grupos.Count == 1)) { competicao.status = StatusEnum._0_Encerrada; EquipeCompeticao campeao = (from proximaFase in competicao.grupos[0] orderby proximaFase.pontos descending, proximaFase.vitorias descending, proximaFase.golsPro - proximaFase.golsContra descending select proximaFase).ToList <EquipeCompeticao>().First(); competicao.campeao = campeao; competicao.id_Campeao = campeao.id; CompeticaoRepositorio.Instance.update(competicao); } else { int numTimesPorGrupo = 0, numTimesRestantes = 0; List <List <EquipeCompeticao> > timesProximaFase = Utilidades.listaEquipesClassificadas(competicao, numPartidasASeremGeradas, numProximaFase, ref numTimesRestantes, ref numTimesPorGrupo); Utilidades.criaPartidasProximaFase(ref competicao, timesProximaFase, numPartidasASeremGeradas, numTimesRestantes, numTimesPorGrupo, numProximaFase); // Cria as partidas de volta da fase final if (competicao.jogosIdaEVolta_FaseFinal) { List <Competicao_Partida> partidasIda = competicao.partidas.FindAll(partidasIdaAEncontrar => partidasIdaAEncontrar.rodada == numProximaFase); for (int numPartidaVolta = 0; numPartidaVolta < partidasIda.Count; numPartidaVolta++) { Competicao_Partida partidaDeVolta = new Competicao_Partida(partidasIda[numPartidaVolta].equipe2, partidasIda[numPartidaVolta].equipe1, numProximaFase, partidasIda[numPartidaVolta].numGrupo); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partidaDeVolta); } } } } else { // Neste caso, a fase atual já é uma das fases finais numProximaFase = competicao.fase_Atual + 1; // Define os times que vão para a próxima fase List <List <EquipeCompeticao> > timesProximaFase = new List <List <EquipeCompeticao> >(); List <EquipeCompeticao> timesClassificadosFaseAnterior = new List <EquipeCompeticao>(); List <Competicao_Partida> partidasFaseAnterior = new List <Competicao_Partida>(); partidasFaseAnterior = competicao.partidas.FindAll(partidasFinalizadas => partidasFinalizadas.encerrada == true && partidasFinalizadas.rodada == competicao.fase_Atual); // Define os classificados for (int iCount = 0; iCount < partidasFaseAnterior.Count; iCount++) { Competicao_Partida partidaFaseAnterior = partidasFaseAnterior[iCount]; EquipeCompeticao equipeVencedora = null; int golsEquipe1, golsEquipe2; if (competicao.jogosIdaEVolta_FaseFinal) { if (iCount < partidasFaseAnterior.Count / 2) { Competicao_Partida partidaDeVoltaFaseAnterior = partidasFaseAnterior.FindAll(x => x.numGrupo == partidaFaseAnterior.numGrupo && x.rodada == partidaFaseAnterior.rodada).Last(); golsEquipe1 = partidaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol) && eventosAEncontrar.equipe.id == partidaFaseAnterior.equipe1.id).Count; golsEquipe2 = partidaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol) && eventosAEncontrar.equipe.id == partidaFaseAnterior.equipe2.id).Count; golsEquipe1 += partidaDeVoltaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol) && eventosAEncontrar.equipe.id == partidaFaseAnterior.equipe1.id).Count; golsEquipe2 += partidaDeVoltaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol) && eventosAEncontrar.equipe.id == partidaFaseAnterior.equipe2.id).Count; // Verifica se a partida empatou e foi para os penaltis if (golsEquipe1 == golsEquipe2) { int golsPenaltiEquipe1, golsPenaltiEquipe2; golsPenaltiEquipe1 = partidaDeVoltaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol_Penalti) && eventosAEncontrar.equipe.id == partidasFaseAnterior[iCount].equipe1.id).Count; golsPenaltiEquipe2 = partidaDeVoltaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol_Penalti) && eventosAEncontrar.equipe.id == partidasFaseAnterior[iCount].equipe2.id).Count; if (golsPenaltiEquipe1 > golsPenaltiEquipe2) { equipeVencedora = partidaFaseAnterior.equipe1; } else { if (golsPenaltiEquipe2 > golsPenaltiEquipe1) { equipeVencedora = partidaFaseAnterior.equipe2; } } } else { // Não empatou if (golsEquipe1 > golsEquipe2) { equipeVencedora = partidaFaseAnterior.equipe1; } else { if (golsEquipe2 > golsEquipe1) { equipeVencedora = partidaFaseAnterior.equipe2; } } } timesClassificadosFaseAnterior.Add(equipeVencedora); } } else { // Verifica o vencedor golsEquipe1 = partidaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol) && eventosAEncontrar.equipe.id == partidasFaseAnterior[iCount].equipe1.id).Count; golsEquipe2 = partidaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol) && eventosAEncontrar.equipe.id == partidasFaseAnterior[iCount].equipe2.id).Count; // Verifica se a partida empatou e foi para os penaltis if (golsEquipe1 == golsEquipe2) { int golsPenaltiEquipe1, golsPenaltiEquipe2; golsPenaltiEquipe1 = partidaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol_Penalti) && eventosAEncontrar.equipe.id == partidasFaseAnterior[iCount].equipe1.id).Count; golsPenaltiEquipe2 = partidaFaseAnterior.eventos.FindAll(eventosAEncontrar => eventosAEncontrar.tpEvento.Equals(tpEventoEnum.Gol_Penalti) && eventosAEncontrar.equipe.id == partidasFaseAnterior[iCount].equipe2.id).Count; if (golsPenaltiEquipe1 > golsPenaltiEquipe2) { equipeVencedora = partidaFaseAnterior.equipe1; } else { if (golsPenaltiEquipe2 > golsPenaltiEquipe1) { equipeVencedora = partidaFaseAnterior.equipe2; } } } else { // Não empatou if (golsEquipe1 > golsEquipe2) { equipeVencedora = partidaFaseAnterior.equipe1; } else { if (golsEquipe2 > golsEquipe1) { equipeVencedora = partidaFaseAnterior.equipe2; } } } timesClassificadosFaseAnterior.Add(equipeVencedora); } } int numPartidasASeremGeradasProximaFase = 0; // Faz a criação das partidas Competicao_Partida partida; EquipeCompeticao equipe1, equipe2; switch (numProximaFase) { case -1: // Final numPartidasASeremGeradasProximaFase = 1; equipe1 = timesClassificadosFaseAnterior[0]; equipe2 = timesClassificadosFaseAnterior[1]; partida = new Competicao_Partida(equipe1, equipe2, numProximaFase, 1); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partida); break; case -2: // Semi-Final equipe1 = timesClassificadosFaseAnterior[0]; equipe2 = timesClassificadosFaseAnterior[1]; partida = new Competicao_Partida(equipe1, equipe2, numProximaFase, 1); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partida); equipe1 = timesClassificadosFaseAnterior[2]; equipe2 = timesClassificadosFaseAnterior[3]; partida = new Competicao_Partida(equipe1, equipe2, numProximaFase, 2); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partida); numPartidasASeremGeradasProximaFase = 2; break; case -3: // Quartas de Final equipe1 = timesClassificadosFaseAnterior[0]; equipe2 = timesClassificadosFaseAnterior[1]; partida = new Competicao_Partida(equipe1, equipe2, numProximaFase, 1); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partida); equipe1 = timesClassificadosFaseAnterior[2]; equipe2 = timesClassificadosFaseAnterior[3]; partida = new Competicao_Partida(equipe1, equipe2, numProximaFase, 2); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partida); equipe1 = timesClassificadosFaseAnterior[4]; equipe2 = timesClassificadosFaseAnterior[5]; partida = new Competicao_Partida(equipe1, equipe2, numProximaFase, 3); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partida); equipe1 = timesClassificadosFaseAnterior[6]; equipe2 = timesClassificadosFaseAnterior[7]; partida = new Competicao_Partida(equipe1, equipe2, numProximaFase, 4); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partida); numPartidasASeremGeradasProximaFase = 4; break; } // Cria as partidas de volta da fase final if (competicao.jogosIdaEVolta_FaseFinal) { List <Competicao_Partida> partidasIda = competicao.partidas.FindAll(partidasIdaAEncontrar => partidasIdaAEncontrar.rodada == numProximaFase); for (int numPartidaVolta = 0; numPartidaVolta < partidasIda.Count; numPartidaVolta++) { Competicao_Partida partidaDeVolta = new Competicao_Partida(partidasIda[numPartidaVolta].equipe2, partidasIda[numPartidaVolta].equipe1, numProximaFase, partidasIda[numPartidaVolta].numGrupo); CompeticaoRepositorio.Instance.insertPartida(ref competicao, partidaDeVolta); } } } competicao.fase_Atual = numProximaFase; CompeticaoRepositorio.Instance.update(competicao); load(null, null); } }
private void dgvPartidas_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.RowIndex > -1 && e.ColumnIndex > -1) { if (e.Button == MouseButtons.Right) { DataGridView dataGridView = (DataGridView)sender; // Recupera a partida que foi selecionada List <Competicao_Partida> partidas = competicao.partidas.FindAll(find => find.rodada == Convert.ToInt32(dataGridView.Tag)); Competicao_Partida partida = partidas[e.RowIndex]; // Cria o menu de contexto e suas respectivas configurações para cada equipe do grupo ContextMenuStrip contextMenuStrip = new ContextMenuStrip(); ToolStripMenuItem toolStripMenuItem; toolStripMenuItem = new ToolStripMenuItem("Importar planilha da partida"); toolStripMenuItem.Click += importarPlanilha; toolStripMenuItem.Tag = new List <Object>() { competicao, partida, dataGridView, partidas }; toolStripMenuItem.Image = Properties.Resources.import; toolStripMenuItem.Enabled = !partida.encerrada; contextMenuStrip.Items.Add(toolStripMenuItem); toolStripMenuItem = new ToolStripMenuItem("Exportar layout da planilha para a partida"); toolStripMenuItem.Click += exportarPlanilha; toolStripMenuItem.Tag = new List <Object>() { competicao, partida, dataGridView, partidas }; toolStripMenuItem.Image = Properties.Resources.export; toolStripMenuItem.Enabled = !partida.encerrada; contextMenuStrip.Items.Add(toolStripMenuItem); toolStripMenuItem = new ToolStripMenuItem("Definir árbitro da partida"); toolStripMenuItem.Image = Properties.Resources.arbitro; toolStripMenuItem.Click += (_sender, _e) => { setArbitroForm = new SetArbitro(usuarioLogado, competicao, partida); setArbitroForm.FormClosing += (__sender, __e) => { if (!(setArbitroForm.arbitroSelecionado is null)) { partida.arbitro = setArbitroForm.arbitroSelecionado; partida.id_Arbitro = setArbitroForm.arbitroSelecionado.pessoa.id; CompeticaoRepositorio.Instance.updatePartida(ref competicao, partida); int numRodada = Convert.ToInt32(Convert.ToInt32(dataGridView.Tag)); if (numRodada >= 0) { numRodada--; } CompeticaoViewUtilidades.refreshDataGridViewRodadas(dataGridView, partidas, competicao, numRodada); } }; setArbitroForm.ShowDialog(); }; toolStripMenuItem.Tag = new List <Object>() { competicao, partida, dataGridView, partidas }; toolStripMenuItem.Enabled = !partida.encerrada; contextMenuStrip.Items.Add(toolStripMenuItem); toolStripMenuItem = new ToolStripMenuItem("Exportar jogos da rodada para HTML"); toolStripMenuItem.Click += (_sender, _e) => { RelatorioHTML.relatorioPartidas(competicao, partidas, Convert.ToInt32(dataGridView.Tag), tcPartidas.SelectedTab.Text, MessageBox.Show("Gostaria de exibir o logo das equipes no relatório de partidas?", String.Format("{0} - Relatório de partidas", competicao.nome), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes); }; toolStripMenuItem.Tag = new List <Object>() { partidas }; toolStripMenuItem.Image = Properties.Resources.export_report; contextMenuStrip.Items.Add(toolStripMenuItem); // Define onde será aberto o menu de contexto contextMenuStrip.Show(this, this.PointToClient(MousePosition)); } } }
public static Competicao_Partida importarPlanilha(Competicao competicao, Competicao_Partida partida) { string stringLine; StreamReader file = null; try { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "CSV|*.csv"; openFileDialog.Title = String.Format("{0} - {1} x {2} - Importe a planilha para a partida", competicao.nome, partida.equipe1.nome, partida.equipe2.nome); openFileDialog.FileName = String.Format("{0} - {1} x {2}", competicao.nome, partida.equipe1.nome, partida.equipe2.nome); if (openFileDialog.ShowDialog() == DialogResult.OK) { // Lê o arquivo file = new StreamReader(openFileDialog.FileName); int numLinha = 0; // Atletas suspensos List <Competicao_Suspensao> atletas_Suspensos_Equipe1 = CompeticaoRepositorio.Instance.getSuspensoesPorEquipe(competicao.id, partida.equipe1.id); List <Competicao_Suspensao> atletas_Suspensos_Equipe2 = CompeticaoRepositorio.Instance.getSuspensoesPorEquipe(competicao.id, partida.equipe2.id); // Lê linha por linha while ((stringLine = file.ReadLine()) != null) { // Separa a linha toda num array List <string> line = stringLine.Split(';').ToList(); switch (numLinha) { case 1: // Linha do id da competição if (Convert.ToInt32(line[0]) != competicao.id) { throw new Exception(String.Format("{0} x {1} - Não foi possível importar a planilha da partida" + Environment.NewLine + Environment.NewLine + "O id da Competição na planilha ({2}) está diferente do id da competição({3}).", partida.equipe1.nome, partida.equipe2.nome, line[0], competicao.id)); } break; case 4: // Linha do id da partida if (Convert.ToInt32(line[0]) != partida.id) { throw new Exception(String.Format("{0} x {1} - Não foi possível importar a planilha da partida" + Environment.NewLine + Environment.NewLine + "O id da partida na planilha ({2}) está diferente do id da partida ({3}).", partida.equipe1.nome, partida.equipe2.nome, line[0], partida.id)); } break; case 13: // Linha do id das equipes if (Convert.ToInt32(line[0]) != partida.equipe1.id) { throw new Exception(String.Format("{0} x {1} - Não foi possível importar a planilha da partida" + Environment.NewLine + Environment.NewLine + "O id da equipe 1 na planilha ({2}) está diferente do id da equipe 1 ({3}).", partida.equipe1.nome, partida.equipe2.nome, line[0], partida.equipe1.id)); } if (Convert.ToInt32(line[3]) != partida.equipe2.id) { throw new Exception(String.Format("{0} x {1} - Não foi possível importar a planilha da partida" + Environment.NewLine + Environment.NewLine + "O id da equipe 2 na planilha ({2}) está diferente do id da equipe 2 ({3}).", partida.equipe1.nome, partida.equipe2.nome, line[3], partida.equipe2.id)); } break; default: if (numLinha >= 16 && line.Count == 17) { List <string> infoEquipe1 = line.GetRange(0, 7); List <string> infoEquipe2 = line.GetRange(9, 7); Atleta atletaEquipe1, atletaEquipe2; if (infoEquipe1[0].Length == 0 && infoEquipe2[0].Length == 0) { throw new Exception(String.Format("Não foi identificado o id dos jogadores na linha {0} da planilha.", numLinha + 1)); } if (infoEquipe1[0].Length > 0) { atletaEquipe1 = PessoaRepositorio.Instance.getAtletaByCompeticao(Convert.ToInt32(infoEquipe1[0]), competicao.id); if (partida.equipe1.atletas.Find(find => find.pessoa.id == atletaEquipe1.pessoa.id) is null) { // Inconsistencia throw new Exception(); } // Verifica se o atleta não está suspenso if (atletas_Suspensos_Equipe1.Find(find => find.atleta.pessoa.id == atletaEquipe1.pessoa.id) is null) { // Cria os eventos da Equipe 1 int numGols1, numGolsPenalti1, numCA1, numCV1; numGols1 = Convert.ToInt32(infoEquipe1[3]); numGolsPenalti1 = Convert.ToInt32(infoEquipe1[4]); numCA1 = Convert.ToInt32(infoEquipe1[5]); numCV1 = Convert.ToInt32(infoEquipe1[6]); for (int iCount = 0; iCount < numGols1; iCount++) { partida.eventos.Add(new Competicao_Partida_Evento(partida.equipe1, atletaEquipe1, tpEventoEnum.Gol)); } for (int iCount = 0; iCount < numGolsPenalti1; iCount++) { partida.eventos.Add(new Competicao_Partida_Evento(partida.equipe1, atletaEquipe1, tpEventoEnum.Gol_Penalti)); } for (int iCount = 0; iCount < numCA1; iCount++) { partida.eventos.Add(new Competicao_Partida_Evento(partida.equipe1, atletaEquipe1, tpEventoEnum.CartaoAmarelo)); } for (int iCount = 0; iCount < numCV1; iCount++) { partida.eventos.Add(new Competicao_Partida_Evento(partida.equipe1, atletaEquipe1, tpEventoEnum.CartaoVermelho)); } } } if (infoEquipe2[0].Length > 0) { atletaEquipe2 = PessoaRepositorio.Instance.getAtletaByCompeticao(Convert.ToInt32(infoEquipe2[0]), competicao.id); if (partida.equipe2.atletas.Find(find => find.pessoa.id == atletaEquipe2.pessoa.id) is null) { // Inconsitencia throw new Exception(); } // Verifica se o atleta não está suspenso if (atletas_Suspensos_Equipe2.Find(find => find.atleta.pessoa.id == atletaEquipe2.pessoa.id) is null) { // Cria os eventos da Equipe 2 int numGols2, numGolsPenalti2, numCA2, numCV2; numGols2 = Convert.ToInt32(infoEquipe2[3]); numGolsPenalti2 = Convert.ToInt32(infoEquipe2[4]); numCA2 = Convert.ToInt32(infoEquipe2[5]); numCV2 = Convert.ToInt32(infoEquipe2[6]); for (int iCount = 0; iCount < numGols2; iCount++) { partida.eventos.Add(new Competicao_Partida_Evento(partida.equipe2, atletaEquipe2, tpEventoEnum.Gol)); } for (int iCount = 0; iCount < numGolsPenalti2; iCount++) { partida.eventos.Add(new Competicao_Partida_Evento(partida.equipe2, atletaEquipe2, tpEventoEnum.Gol_Penalti)); } for (int iCount = 0; iCount < numCA2; iCount++) { partida.eventos.Add(new Competicao_Partida_Evento(partida.equipe2, atletaEquipe2, tpEventoEnum.CartaoAmarelo)); } for (int iCount = 0; iCount < numCV2; iCount++) { partida.eventos.Add(new Competicao_Partida_Evento(partida.equipe2, atletaEquipe2, tpEventoEnum.CartaoVermelho)); } } } } break; } numLinha++; } file.Close(); } // Insere efetivamente os eventos no banco de dados for (int iCount = 0; iCount < partida.eventos.Count; iCount++) { CompeticaoRepositorio.Instance.insertEvento(ref partida, partida.eventos[iCount]); } return(partida); } catch (Exception ex) { partida.eventos = new List <Competicao_Partida_Evento>(); if (!(file is null)) { file.Close(); } MessageBox.Show(ex.Message, String.Format("Não foi possível importar a planilha da partida entre {0} e {1}", partida.equipe1.nome, partida.equipe2.nome), MessageBoxButtons.OK, MessageBoxIcon.Warning); return(null); } }
public static void exportarPlanilha(Competicao competicao, Competicao_Partida partida) { StringBuilder conteudoCSV = new StringBuilder(); // Cabeçalho conteudoCSV.AppendLine("idCompeticao;Competicao"); // Linha 1 conteudoCSV.AppendFormat("{0};{1}", competicao.id, competicao.nome).AppendLine().AppendLine(); // Linha 2 /* idCompeticao = A2 - [1, 0] */ // Partida conteudoCSV.AppendLine("idPartida"); // Linha 4 conteudoCSV.AppendFormat("{0}", partida.id).AppendLine().AppendLine(); // Linha 5 /* idPartida = A5 - [4, 0] */ // Data da partida conteudoCSV.AppendLine("dataPartida"); // Linha 7 if (partida.data is null) { conteudoCSV.AppendFormat("{0}", "").AppendLine().AppendLine(); // Linha 8 } else { conteudoCSV.AppendFormat("{0}", ((DateTime)partida.data).ToString("dd/MM/yyyy")).AppendLine().AppendLine(); // Linha 8 } /* dataPartida = A8 - [7, 0] */ // Árbitro conteudoCSV.AppendLine("idArbito;Arbitro"); // Linha 10 conteudoCSV.AppendFormat("{0};{1}", (partida.arbitro is null ? 0 : partida.arbitro.pessoa.id), (partida.arbitro is null ? "" : partida.arbitro.pessoa.nome)).AppendLine().AppendLine(); // Linha 11 /* idCompeticao = A11 - [10, 0] */ // Equipes conteudoCSV.AppendLine("idEquipe1;Equipe 1; ;idEquipe2;Equipe 2"); // Linha 13 conteudoCSV.AppendFormat("{0};{1};;{2};{3}", partida.equipe1.id, partida.equipe1.nome, partida.equipe2.id, partida.equipe2.nome).AppendLine().AppendLine(); // Linha 14 /* idEquipe1 = A14 - [13, 0] * idEquipe2 = D14 - [13, 3] */ // Atletas suspensos List <Competicao_Suspensao> atletas_Suspensos_Equipe1 = CompeticaoRepositorio.Instance.getSuspensoesPorEquipe(competicao.id, partida.equipe1.id); List <Competicao_Suspensao> atletas_Suspensos_Equipe2 = CompeticaoRepositorio.Instance.getSuspensoesPorEquipe(competicao.id, partida.equipe2.id); // Atletas conteudoCSV.AppendLine("idAtleta;numAtleta;Atleta;Gol;Gol Penalti;Cartao Amarelo;Cartao Vermelho;;;idAtleta;numAtleta;Atleta;Gol;Gol Penalti;Cartao Amarelo;Cartao Vermelho;"); // Linha 16 int numLinhas = (partida.equipe1.atletas.Count > partida.equipe2.atletas.Count ? partida.equipe1.atletas.Count : partida.equipe2.atletas.Count); for (int iCount = 0; iCount < numLinhas; iCount++) { Atleta atletaEquipe1, atletaEquipe2; string atletaSuspenso_Equipe1 = "", atletaSuspenso_Equipe2 = ""; if (iCount < partida.equipe1.atletas.Count) { atletaEquipe1 = partida.equipe1.atletas[iCount]; if (!(atletas_Suspensos_Equipe1.Find(find => find.atleta.pessoa.id == atletaEquipe1.pessoa.id) is null)) { atletaSuspenso_Equipe1 = "Suspenso"; } conteudoCSV.AppendFormat("{0};{1};{2};0;0;0;0;{3};", atletaEquipe1.pessoa.id, atletaEquipe1.numero, atletaEquipe1.pessoa.nome, atletaSuspenso_Equipe1); } else { conteudoCSV.Append(";;;;;;;;"); } /* idAtleta = A? - [?, 0] * numeroAtleta = B? - [?, 1] * Gol = D? - [?, 3] * Gol Penalti = E? - [?, 4] * CA = F? - [?, 5] * CV = G? - [?, 6] */ conteudoCSV.Append(";"); if (iCount < partida.equipe2.atletas.Count) { atletaEquipe2 = partida.equipe2.atletas[iCount]; if (!(atletas_Suspensos_Equipe2.Find(find => find.atleta.pessoa.id == atletaEquipe2.pessoa.id) is null)) { atletaSuspenso_Equipe2 = "Suspenso"; } conteudoCSV.AppendFormat("{0};{1};{2};0;0;0;0;{3};", atletaEquipe2.pessoa.id, atletaEquipe2.numero, atletaEquipe2.pessoa.nome, atletaSuspenso_Equipe2); } else { conteudoCSV.Append(";;;;;;;;"); } /* idAtleta = I? - [?, 8] * numeroAtleta = J? - [?, 9] * Gol = L? - [?, 11] * Gol Penalti = M? - [?, 12] * CA = N? - [?, 13] * CV = O? - [?, 14] */ conteudoCSV.AppendLine(); } // Escolhe onde vai salvar o arquivo SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "CSV|*.csv"; saveFileDialog.FileName = String.Format("{0} - {1} x {2}", competicao.nome, partida.equipe1.nome, partida.equipe2.nome); saveFileDialog.Title = String.Format("Escolha um diretório para salvar templade da partida entre {0} e {1}", partida.equipe1.nome, partida.equipe2.nome); if (saveFileDialog.ShowDialog() == DialogResult.OK) { // Salva o arquivo StreamWriter salvar = new StreamWriter(saveFileDialog.FileName); salvar.WriteLine(conteudoCSV.ToString()); salvar.Close(); if (MessageBox.Show(String.Format("Gostaria de abrir a planilha {0} ?", saveFileDialog.FileName), String.Format("{0} x {1}", partida.equipe1.nome, partida.equipe2.nome), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { System.Diagnostics.Process.Start(saveFileDialog.FileName); } } }