Laravel 9 Web App
Proposta da Aplicação
Nosso cliente José Gustavo, apaixonado por futebol e tecnologia, deseja ter uma aplicação que simule os campeonatos de futebol do seu bairro, chamada Meu Campeonato.
Para isso, considere um sistema eliminatório que inicia-se nas quartas de final:
- oito times participam do campeonato;
- o perdedor de cada jogo é eliminado do campeonato;
- na primeira fase (quartas de final) quatro jogos são sorteados, sendo que cada time joga apenas uma vez;
- na segunda fase (semifinais) dois jogos são sorteados, sendo que cada time joga apenas uma vez;
- os perdedores das semifinais disputam o 3º lugar;
- a final é disputada pelos vencedores das semifinais, definindo o 1º e 2º lugar do campeonato;
- em caso de empate, considere como vencedor o time com a maior pontuação (acumulada desde o início do campeonato):
- para cada gol marcado, o time recebe 1 ponto;
- para cada gol sofrido, o time perde 1 ponto;
- em caso de novo empate, considere como vencedor o time que foi inscrito primeiro no campeonato;
- o placar de cada jogo pode ser gerado randomicamente pelo back-end ou por uma rotina em Python, como detalhado no tópico a seguir.
Placar do jogo
O placar de cada jogo pode ser gerado por uma rotina em Python, com o código apresentado abaixo.
import random
print(random.randrange(0, 8, 1))
print(random.randrange(0, 8, 1))
# Exemplo de output:
# 0
# 2
O back-end deve executar o script acima, capturar seu output e utilizá-lo como resultado de cada uma das partidas.
Setup Inicial
-
Criar banco MysQl: db_meucampeonato
-
Criando Aplicação em Laravel 9
# Para criar a nossa aplicação de nome Meu-campeonato, com composer instalado em sua máquina, execute:
$ composer create-project laravel/laravel Meu-campeonato
Iniciando a Aplicação
# Para iniciar a aplicação em localhost, execute:
php artisan serve
Criando Controllers
# Para criar os controllers de estatísticas, classificação e partidas execute:
$ php artisan make:controller StandingsController
$ php artisan make:controller ClassificationsController
$ php artisan make:controller GamesController
# Controller já com pré-definições de 'CRUD' do laravel
$ php artisan make:controller ChampionshipsController --resource
Criando Migrations
# Para criar a migration referente aos times execute:
$ php artisan make:migration create_teams_table
# Após montar as migrations, para executar a criação no banco, execute:
$ php artisan migrate
Para criar os models de partida e partida, execute: Criando Models
$ php artisan make:model Team
$ php artisan make:model Game
Criando Table Seeder
# Para criar o table seeder, execute:
$ php artisan make:seeder TeamsTableSeeder
Como Rodar o Projeto
# Criando as tabelas no banco MySql:
$ php artisan migrate
# Caso queira criar times na tabela do banco MySql, sem precisar inserir manualmente no formulário, execute:
$ php artisan db:seed
# Iniciando o Projeto
$ php artisan serve