Logical Doubt Generation of Laravel Rounds

Asked

Viewed 120 times

2

I have a championship management system in Laravel. The system works perfectly, but I’m having problems generating rounds, I need that regardless of the number of groups enrolled, the system can generate the rounds of the championship, I’m doing as follows, but according to the console returns the following error on line 184:

Errorexception (E_NOTICE) HELP Undefined variable: rounds

as I do not have much experience in Laravel, I am not able to write the code correctly, nor define some variables, it does not work at all, I am already in despair, if any good soul can help me, I will do everything possible to reciprocate, I thank you from now on!

Rodadaadmincontroller.php

<?php

class RodadaAdminController extends BaseController {

    public function listarGeracaoRodadas($id) {

        $equipe = Equipe::find(Auth::id());

        $totalJogadores = Jogador::join('transferencias', 'transferencias.id_jogador', '=', 'jogadores.id_jogador')
                                            ->where('transferencias.id_equipe_atual', '=', $equipe->id_equipe)
                                            ->where('flg_aprovado', '=', 1)
                                            ->groupBy('transferencias.id_jogador')
                                            ->orderBy('id_transferencia', 'DESC')
                                            ->count();

       $totalCampeonatosEmAberto = Campeonato::where('dt_inicio_inscricoes', '<=', date('Y-m-d'))
                           ->where('dt_fim_inscricoes', '>=', date('Y-m-d'))
                           ->where('flg_ativo', '=', 1)
                           ->count();


      $campeonato = Campeonato::find($id);

      if($campeonato->flg_tp_campeonato == 1) {
        return self::geraJogosMunicipal($campeonato->id_campeonato);
      }

        return View::make('admin/campeonatos/geracao/gerar-rodadas')->with(
                            array(
                    'equipe' => $equipe,
                    'totalJogadores' => $totalJogadores,
                    'totalCampeonatosEmAberto' => $totalCampeonatosEmAberto,
                                'totalInscricoes' => InscricaoController::getTotalnscricao(),
                    'campeonato' => $campeonato,
                            )
                        );
    }


  public function gerarRodadas() {

    // Gerando as Rodadas do Campeonato
    foreach(Input::get('rodada') as $idJogo => $rodada) {
        $jogo = Jogo::find($idJogo);
        $jogo->nr_rodada = $rodada[0];
        $jogo->save();
    }

    $campeonato = Campeonato::find($jogo->id_campeonato);
    $campeonato->flg_andamento = 3; // Jogos criados com rodadas
    $campeonato->save();

    return Redirect::to(URL::route('admin-selecao-campeonato-jogos'))->with(array('sucesso' => 'Rodadas Criadas com Sucesso!'));

  }

  static public function geraJogosMunicipal($id) {

    $campeonato = Campeonato::find($id);

    foreach($campeonato->getGrupos as $grupo) {
        $equipes = $grupo->getEquipes()->select('id_equipe')->get();

        $qtdEquipes = count($equipes);

        if($qtdEquipes == 8){
            // Gerando a Primeira Rodada
            $rodadas[$grupo->id_grupo][1] = array(
                            array($equipes[0]->id_equipe, $equipes[1]->id_equipe),
                            array($equipes[2]->id_equipe, $equipes[3]->id_equipe),
                            array($equipes[4]->id_equipe, $equipes[5]->id_equipe),
                            array($equipes[6]->id_equipe, $equipes[7]->id_equipe),
                          );

            // Gerando a Segunda Rodada
            $rodadas[$grupo->id_grupo][2] = array(
                            array($equipes[7]->id_equipe, $equipes[4]->id_equipe),
                            array($equipes[5]->id_equipe, $equipes[6]->id_equipe),
                            array($equipes[3]->id_equipe, $equipes[0]->id_equipe),
                            array($equipes[1]->id_equipe, $equipes[2]->id_equipe),
                          );

            // Gerando a Terceira Rodada
            $rodadas[$grupo->id_grupo][3] = array(
                            array($equipes[6]->id_equipe, $equipes[3]->id_equipe),
                            array($equipes[2]->id_equipe, $equipes[5]->id_equipe),
                            array($equipes[4]->id_equipe, $equipes[1]->id_equipe),
                            array($equipes[0]->id_equipe, $equipes[7]->id_equipe),
                          );

            // Gerando a Quarta Rodada
            $rodadas[$grupo->id_grupo][4] = array(
                            array($equipes[1]->id_equipe, $equipes[6]->id_equipe),
                            array($equipes[3]->id_equipe, $equipes[4]->id_equipe),
                            array($equipes[7]->id_equipe, $equipes[2]->id_equipe),
                            array($equipes[5]->id_equipe, $equipes[0]->id_equipe),
                          );

            // Gerando a Quinta Rodada
            $rodadas[$grupo->id_grupo][5] = array(
                            array($equipes[0]->id_equipe, $equipes[2]->id_equipe),
                            array($equipes[1]->id_equipe, $equipes[3]->id_equipe),
                            array($equipes[4]->id_equipe, $equipes[6]->id_equipe),
                            array($equipes[7]->id_equipe, $equipes[5]->id_equipe),
                          );

            // Gerando a Sexta Rodada
            $rodadas[$grupo->id_grupo][6] = array(
                            array($equipes[6]->id_equipe, $equipes[0]->id_equipe),
                            array($equipes[5]->id_equipe, $equipes[1]->id_equipe),
                            array($equipes[3]->id_equipe, $equipes[7]->id_equipe),
                            array($equipes[2]->id_equipe, $equipes[4]->id_equipe),
                          );

            // Gerando a Sétima Rodada
            $rodadas[$grupo->id_grupo][7] = array(
                            array($equipes[7]->id_equipe, $equipes[1]->id_equipe),
                            array($equipes[5]->id_equipe, $equipes[3]->id_equipe),
                            array($equipes[6]->id_equipe, $equipes[2]->id_equipe),
                            array($equipes[4]->id_equipe, $equipes[0]->id_equipe),
                          );

          }else if($qtdEquipes == 7){

                // Gerando a Primeira Rodada
                $rodadas[$grupo->id_grupo][1] = array(
                                array($equipes[1]->id_equipe, $equipes[2]->id_equipe),
                                array($equipes[3]->id_equipe, $equipes[4]->id_equipe),
                                array($equipes[5]->id_equipe, $equipes[6]->id_equipe),
                                //array($equipes[6]->id_equipe (Folga 0)
                              );

                // Gerando a Segunda Rodada
                $rodadas[$grupo->id_grupo][2] = array(
                                array($equipes[2]->id_equipe, $equipes[3]->id_equipe),
                                array($equipes[4]->id_equipe, $equipes[5]->id_equipe),
                                array($equipes[0]->id_equipe, $equipes[6]->id_equipe),
                                //array($equipes[5]->id_equipe (Folga 1)
                              );

                // Gerando a Terceira Rodada
                $rodadas[$grupo->id_grupo][3] = array(
                                array($equipes[3]->id_equipe, $equipes[6]->id_equipe),
                                array($equipes[1]->id_equipe, $equipes[5]->id_equipe),
                                array($equipes[0]->id_equipe, $equipes[4]->id_equipe),
                                //array($equipes[4]->id_equipe (Folga 2)
                              );

                // Gerando a Quarta Rodada
                $rodadas[$grupo->id_grupo][4] = array(
                                array($equipes[1]->id_equipe, $equipes[4]->id_equipe),
                                array($equipes[0]->id_equipe, $equipes[5]->id_equipe),
                                array($equipes[2]->id_equipe, $equipes[6]->id_equipe),
                                //array($equipes[3]->id_equipe (Folga 3)
                              );

                // Gerando a Quinta Rodada
                $rodadas[$grupo->id_grupo][5] = array(
                                array($equipes[2]->id_equipe, $equipes[5]->id_equipe),
                                array($equipes[0]->id_equipe, $equipes[3]->id_equipe),
                                array($equipes[1]->id_equipe, $equipes[6]->id_equipe),
                                //array($equipes[2]->id_equipe (Folga 4)
                              );

                // Gerando a Sexta Rodada
                $rodadas[$grupo->id_grupo][6] = array(
                                array($equipes[4]->id_equipe, $equipes[6]->id_equipe),
                                array($equipes[1]->id_equipe, $equipes[3]->id_equipe),
                                array($equipes[0]->id_equipe, $equipes[2]->id_equipe),
                                //array($equipes[1]->id_equipe (Folga 5)
                              );

                // Gerando a Sétima Rodada
                $rodadas[$grupo->id_grupo][7] = array(
                                array($equipes[0]->id_equipe, $equipes[1]->id_equipe),
                                array($equipes[2]->id_equipe, $equipes[4]->id_equipe),
                                array($equipes[3]->id_equipe, $equipes[5]->id_equipe),
                                //array($equipes[0]->id_equipe (Folga 6)
                              );
        }
    }   

    foreach($rodadas as $idGrupo => $jogos) {
      foreach($jogos as $nrRodada => $jg) {
        foreach($jg as $eqs) {
          reset($eqs);
          $eq1 = $eqs[key($eqs)];

          end($eqs);
          $eq2 = $eqs[key($eqs)];
          $jogo = new Jogo;
          $jogo->id_campeonato = $campeonato->id_campeonato;
          $jogo->id_equipe1 = $eq1;
          $jogo->id_equipe2 = $eq2;
          $jogo->id_grupo = $idGrupo;
          $jogo->flg_tp_jogo = 1;
          $jogo->nr_rodada = $nrRodada;
          $jogo->flg_ativo = 1;
          $jogo->save();
          echo $eq1.' x '.$eq2.'<br>';
        }
      }
    }

    $campeonato = Campeonato::find($jogo->id_campeonato);
    $campeonato->flg_andamento = 3; // Jogos criados com rodadas teste
    $campeonato->save();


    return Redirect::to(URL::route('admin-selecao-campeonato-jogos'))->with(array('sucesso' => 'Rodadas Criadas com Sucesso!'));

  }
}

generate-runs.blade.php

@extends('admin/template')
@section('content')
  <ol class="breadcrumb">
    <li><a href="{{ URL::route('dashboard') }}">Home</a></li>
    <li><a href="#">Campeonatos</a></li>
    <li class="active">Geração de Rodadas</li>
  </ol>
  <h1>Geração de Rodadas</h1>
  @if( Session::has('sucesso') )
    <div class="alert alert-success">
        {{{ Session::get('sucesso') }}}
    </div>
  @endif
  @if( Session::has('warning') )
      <div class="alert alert-warning">
          {{ Session::get('warning') }}
      </div>
  @endif
  @if ( count($errors) > 0)
      <div class="alert alert-danger">
          <strong>Erro: </strong>
          @foreach ($errors->all() as $e)
             {{ $e }}
          @endforeach
      </div>
  @endif
  {{ Form::open(array('url' => URL::route('post-gerar-rodadas', $campeonato->id_campeonato), 'class' => 'form-horizontal')) }}
    <ul class="nav nav-tabs">
      @foreach($campeonato->getGrupos as $grupo)
      @if(!isset($nr_divisao) || $grupo->nr_divisao != $nr_divisao)     
      <?php $grupos[] = $grupo->nr_divisao ?>
      <li><a href="#div{{ $grupo->nr_divisao }}" data-toggle="tab">{{ GrupoAdminController::getDivisao($grupo->nr_divisao, $grupo->id_campeonato) }}</a></li>
      @endif
      <?php $nr_divisao = $grupo->nr_divisao; ?>
      @endforeach
    </ul>
    <div class="tab-content">
      @foreach($campeonato->getGrupos as $divisao)
        <div id="div{{$divisao}}" class="tab-pane">
          <div class="col-md-12">
            <label>Buscar Jogo</label>
            <div class="input-group">
              <span class="input-group-addon"><i class="fa fa-search"></i></span>
              <input type="text" class="form-control" name="buscarTabela">
            </div>
          </div>
          <div class="clearfix"></div>
          <hr>
            @foreach($campeonato->getGrupos()->where('nr_divisao', '=', $divisao)->get() as $grupo)
              <div class="panel panel-default">
                <div class="panel-heading">
                  <h3 class="panel-title">Grupo {{ $grupo->nm_grupo }}</h3>
                </div>
                <div class="panel-body">
                  <?php $x = 1; ?>
                  @foreach($grupo->getJogos as $jogo)
                    <div class="col-md-6">
                      <div class="panel panel-default">
                        <div class="panel-heading">
                          <h3 class="panel-title">{{{ str_limit($jogo->getJogadorHome()->first()->nm_equipe, 20) }}} x {{{ str_limit($jogo->getJogadorAway()->first()->nm_equipe, 20) }}}</h3>
                        </div>
                        <div class="panel-body">
                          <?php
                            $totJogos = count($grupo->getJogos);
                            $totEquipes = floor($grupo->getEquipes()->count() / 2);
                          ?>
                          Selecione uma rodada
                          <select name="rodada[{{ $jogo->id_jogo }}][]  " class="form-control">
                            @for($i = 1; $i <= floor($totJogos / $totEquipes); ++$i)
                            <option {{ ($i == $x) ? 'selected="selected"' : '' }} value="{{ $i }}">{{ $i }} Rodada</option>
                            @endfor
                          </select>
                        </div>
                      </div>
                    </div>
                    <?php 
                      if($x == floor($totJogos / $totEquipes)) {
                        $x = 0;
                      }
                      $x++;
                    ?>
                  @endforeach
                </div>
              </div>
            @endforeach
        </div>
      @endforeach
    </div>
    <div class="clearfix"></div>
    <hr>
    <button class="btn btn-block btn-success">Gerenciar Rodadas</button>
    <div class="clearfix"></div>
    <hr>
  {{ Form::close() }}
@stop

@section('scripts')
$('input[name="buscarTabela"]').on('keyup', function() {
    var vlrBusca = this;
    $.each($(this).parents('.tab-pane').find('.panel'), function() {
        $(this).show();
        if($(this).text().toLowerCase().indexOf($(vlrBusca).val().toLowerCase()) == -1) {
            $(this).hide();
        }
    });
});
@stop

  • Put the bug please

  • sorry, I had forgotten! I added to the question.

  • You’re probably testing with $qtdEquipes different from 7 and 8, not entering the conditions that define the variable $rodadas. And if the number of teams is 3, what should be $rodadas?

  • 1

    understood, as it is a futsal championship we would have to add a minimum amount of teams so that the script can generate the rounds of games, right?

  • This is already requirement of the project and should be discussed with the responsible team. I just pointed out where is the logic error that should be solved.

  • 1

    I understand, the project is private, so I’m looking for help, I appreciate the tip!

  • this error happens in the controller or view?

  • I was able to correct the error, but I couldn’t do the function the way I needed to :(

Show 3 more comments
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.