diff --git a/server_files/classes/Team.php b/server_files/classes/Team.php
index 27d1f0e..3b16bc5 100644
--- a/server_files/classes/Team.php
+++ b/server_files/classes/Team.php
@@ -67,7 +67,7 @@ class Team
$this->name = $data["name"];
$this->trigram = $data["trigram"];
$this->tournament = $data["tournament"];
- $this->encadrants = [$data["encadrant_1"], $data["encadrant_2"]];
+ $this->encadrants = [$data["encadrant_1"], $data["encadrant_2"], $data["encadrant_3"]];
$this->participants = [$data["participant_1"], $data["participant_2"], $data["participant_3"], $data["participant_4"], $data["participant_5"], $data["participant_6"]];
$this->inscription_date = $data["inscription_date"];
$this->validation_status = ValidationStatus::fromName($data["validation_status"]);
diff --git a/server_files/controllers/informations.php b/server_files/controllers/informations.php
index 6923d19..e50ed98 100644
--- a/server_files/controllers/informations.php
+++ b/server_files/controllers/informations.php
@@ -103,7 +103,7 @@ class AttributeTeam
ensure($this->team->getValidationStatus() == ValidationStatus::NOT_READY, "Cette équipe est déjà validée ou en cours de validation.");
$role = $user->getRole();
- for ($i = 1; $i <= $role == Role::ENCADRANT ? 2 : 6; ++$i) {
+ for ($i = 1; $i <= $role == Role::ENCADRANT ? 3 : 6; ++$i) {
if (($role == Role::PARTICIPANT ? $this->team->getParticipants()[$i - 1] : $this->team->getEncadrants()[$i]) == NULL)
break;
}
diff --git a/server_files/controllers/rejoindre_equipe.php b/server_files/controllers/rejoindre_equipe.php
index 4379118..c7db182 100644
--- a/server_files/controllers/rejoindre_equipe.php
+++ b/server_files/controllers/rejoindre_equipe.php
@@ -35,14 +35,14 @@ class JoinTeam
ensure($this->team != null, "Ce code d'accès est invalide.");
ensure($this->team->getValidationStatus() == ValidationStatus::NOT_READY, "Cette équipe est déjà validée ou en cours de validation, vous ne pouvez pas la rejoindre.");
- for ($i = 1; $i <= $_SESSION["role"] == Role::PARTICIPANT ? 6 : 2; ++$i) {
+ for ($i = 1; $i <= $_SESSION["role"] == Role::PARTICIPANT ? 6 : 3; ++$i) {
if (($_SESSION["role"] == Role::PARTICIPANT ? $this->team->getParticipants()[$i - 1] : $this->team->getEncadrants()[$i - 1]) == NULL)
break;
}
$this->min_null_index = $i;
- ensure($_SESSION["role"] == Role::PARTICIPANT && $this->min_null_index <= 6 || $_SESSION["role"] == Role::ENCADRANT && $this->min_null_index <= 2, "Il n'y a plus de place pour vous dans l'équipe.");
+ ensure($_SESSION["role"] == Role::PARTICIPANT && $this->min_null_index <= 6 || $_SESSION["role"] == Role::ENCADRANT && $this->min_null_index <= 3, "Il n'y a plus de place pour vous dans l'équipe.");
}
public function joinTeam()
diff --git a/server_files/model.php b/server_files/model.php
index 760b806..6db9f62 100644
--- a/server_files/model.php
+++ b/server_files/model.php
@@ -47,11 +47,12 @@ function quitTeam($user_id = -1)
if ($role == Role::ADMIN || $role == Role::ORGANIZER)
return;
- for ($i = 1; $i <= ($role == Role::ENCADRANT ? 2 : 6); ++$i)
+ for ($i = 1; $i <= ($role == Role::ENCADRANT ? 3 : 6); ++$i)
/** @noinspection SqlResolve */
$DB->exec("UPDATE `teams` SET `" . strtolower(Role::getName($role)) . "_$i` = NULL WHERE `" . strtolower(Role::getName($role)) . "_$i` = $user_id;");
$user->setTeamId(null);
$DB->exec("UPDATE `teams` SET `encadrant_1` = `encadrant_2`, `encadrant_2` = NULL WHERE `encadrant_1` IS NULL;");
+ $DB->exec("UPDATE `teams` SET `encadrant_2` = `encadrant_3`, `encadrant_3` = NULL WHERE `encadrant_2` IS NULL;");
for ($i = 1; $i <= 5; ++$i) {
/** @noinspection SqlResolve */
$DB->exec("UPDATE `teams` SET `participant_$i` = `participant_" . strval($i + 1) . "`, `participant_" . strval($i + 1) . "` = NULL WHERE `participant_$i` IS NULL;");
diff --git a/server_files/views/equipe.php b/server_files/views/equipe.php
index 62fa1bf..d555230 100644
--- a/server_files/views/equipe.php
+++ b/server_files/views/equipe.php
@@ -38,7 +38,7 @@
getEncadrants()[$i - 1] == NULL)
continue;
$encadrant = User::fromId($team->getEncadrants()[$i - 1]);
diff --git a/setup/create_database.sql b/setup/create_database.sql
index d885d4f..bc1eb1f 100644
--- a/setup/create_database.sql
+++ b/setup/create_database.sql
@@ -1,184 +1,275 @@
-- phpMyAdmin SQL Dump
--- version 4.6.6deb4
+-- version 4.7.5
-- https://www.phpmyadmin.net/
--
--- Client : localhost:3306
--- Généré le : Dim 08 Septembre 2019 à 19:00
--- Version du serveur : 10.3.15-MariaDB-1
--- Version de PHP : 7.3.4-2
+-- Host: db
+-- Erstellungszeit: 18. Feb 2020 um 14:32
+-- Server-Version: 5.7.20
+-- PHP-Version: 7.1.9
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+SET AUTOCOMMIT = 0;
+START TRANSACTION;
SET time_zone = "+02:00";
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT = @@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS = @@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION = @@COLLATION_CONNECTION */;
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
--- Base de données : `tfjm`
+-- Datenbank: `inscription_tfjm`
--
-CREATE DATABASE IF NOT EXISTS `inscription-tfjm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-USE `inscription-tfjm`;
+CREATE DATABASE IF NOT EXISTS `inscription_tfjm` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
+USE `inscription_tfjm`;
-- --------------------------------------------------------
--
--- Structure de la table `documents`
+-- Tabellenstruktur für Tabelle `documents`
--
-CREATE TABLE IF NOT EXISTS `documents`
-(
- `file_id` varchar(64) NOT NULL,
- `user` int(11) NOT NULL,
- `team` int(11) NOT NULL,
- `tournament` int(11) NOT NULL,
- `type` varchar(64) NOT NULL,
- `uploaded_at` datetime NOT NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`file_id`)
-) ENGINE = InnoDB
- DEFAULT CHARSET = utf8;
+CREATE TABLE `documents` (
+ `file_id` varchar(64) NOT NULL,
+ `user` int(11) NOT NULL,
+ `team` int(11) NOT NULL,
+ `tournament` int(11) NOT NULL,
+ `type` varchar(64) NOT NULL,
+ `uploaded_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
--- Structure de la table `organizers`
+-- Tabellenstruktur für Tabelle `organizers`
--
-CREATE TABLE IF NOT EXISTS `organizers`
-(
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `organizer` int(11) NOT NULL,
- `tournament` int(11) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE = InnoDB
- DEFAULT CHARSET = utf8;
+CREATE TABLE `organizers` (
+ `id` int(11) NOT NULL,
+ `organizer` int(11) NOT NULL,
+ `tournament` int(11) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
--- Structure de la table `solutions`
+-- Tabellenstruktur für Tabelle `payments`
--
-CREATE TABLE IF NOT EXISTS `solutions`
-(
- `file_id` varchar(64) NOT NULL,
- `team` int(11) NOT NULL,
- `tournament` int(11) NOT NULL,
- `problem` int(11) NOT NULL,
- `uploaded_at` datetime NOT NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`file_id`)
-) ENGINE = InnoDB
- DEFAULT CHARSET = utf8;
+CREATE TABLE `payments` (
+ `id` int(11) NOT NULL,
+ `user` int(11) NOT NULL,
+ `tournament` int(11) NOT NULL,
+ `amount` tinyint(4) NOT NULL,
+ `method` enum('CREDIT_CARD','BANK_CHECK','BANK_TRANSFER','CASH','SCHOLARSHIP','NOT_PAID') COLLATE utf8_unicode_ci NOT NULL,
+ `transaction_infos` text COLLATE utf8_unicode_ci NOT NULL,
+ `validation_status` enum('NOT_READY','WAITING','VALIDATED','') COLLATE utf8_unicode_ci NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- --------------------------------------------------------
--
--- Structure de la table `syntheses`
+-- Tabellenstruktur für Tabelle `solutions`
--
-CREATE TABLE IF NOT EXISTS `syntheses`
-(
- `file_id` varchar(64) NOT NULL,
- `team` int(11) NOT NULL,
- `tournament` int(11) NOT NULL,
- `dest` varchar(64) NOT NULL,
- `uploaded_at` datetime NOT NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`file_id`)
-) ENGINE = InnoDB
- DEFAULT CHARSET = utf8;
+CREATE TABLE `solutions` (
+ `file_id` varchar(64) NOT NULL,
+ `team` int(11) NOT NULL,
+ `tournament` int(11) NOT NULL,
+ `problem` int(11) NOT NULL,
+ `uploaded_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
--- Structure de la table `teams`
+-- Tabellenstruktur für Tabelle `syntheses`
--
-CREATE TABLE IF NOT EXISTS `teams`
-(
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(64) NOT NULL,
- `trigram` varchar(3) NOT NULL,
- `tournament` int(8) NOT NULL,
- `encadrant_1` int(8) DEFAULT NULL,
- `encadrant_2` int(8) DEFAULT NULL,
- `participant_1` int(8) DEFAULT NULL,
- `participant_2` int(8) DEFAULT NULL,
- `participant_3` int(8) DEFAULT NULL,
- `participant_4` int(8) DEFAULT NULL,
- `participant_5` int(8) DEFAULT NULL,
- `participant_6` int(8) DEFAULT NULL,
- `inscription_date` timestamp NOT NULL DEFAULT current_timestamp(),
- `validation_status` varchar(64) NOT NULL,
- `final_selection` tinyint(1) NOT NULL DEFAULT 0,
- `access_code` varchar(6) NOT NULL,
- `year` int(4) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE = InnoDB
- DEFAULT CHARSET = utf8;
+CREATE TABLE `syntheses` (
+ `file_id` varchar(64) NOT NULL,
+ `team` int(11) NOT NULL,
+ `tournament` int(11) NOT NULL,
+ `dest` varchar(64) NOT NULL,
+ `uploaded_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
--- Structure de la table `tournaments`
+-- Tabellenstruktur für Tabelle `teams`
--
-CREATE TABLE IF NOT EXISTS `tournaments`
-(
- `id` int(8) NOT NULL AUTO_INCREMENT,
- `name` varchar(64) NOT NULL,
- `size` int(1) NOT NULL,
- `place` varchar(255) NOT NULL,
- `price` int(4) NOT NULL,
- `description` varchar(255) NOT NULL,
- `date_start` date NOT NULL,
- `date_end` date NOT NULL,
- `date_inscription` datetime NOT NULL,
- `date_solutions` datetime NOT NULL,
- `date_syntheses` datetime NOT NULL,
- `final` tinyint(1) NOT NULL DEFAULT 0,
- `year` int(4) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE = InnoDB
- DEFAULT CHARSET = utf8;
+CREATE TABLE `teams` (
+ `id` int(11) NOT NULL,
+ `name` varchar(64) NOT NULL,
+ `trigram` varchar(3) NOT NULL,
+ `tournament` int(8) NOT NULL,
+ `encadrant_1` int(8) DEFAULT NULL,
+ `encadrant_2` int(8) DEFAULT NULL,
+ `encadrant_3` int(11) DEFAULT NULL,
+ `participant_1` int(8) DEFAULT NULL,
+ `participant_2` int(8) DEFAULT NULL,
+ `participant_3` int(8) DEFAULT NULL,
+ `participant_4` int(8) DEFAULT NULL,
+ `participant_5` int(8) DEFAULT NULL,
+ `participant_6` int(8) DEFAULT NULL,
+ `inscription_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `validation_status` enum('NOT_READY','WAITING','VALIDATED','') NOT NULL,
+ `final_selection` tinyint(1) NOT NULL DEFAULT '0',
+ `access_code` varchar(6) NOT NULL,
+ `year` int(4) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
--- Structure de la table `users`
+-- Tabellenstruktur für Tabelle `tournaments`
--
-CREATE TABLE IF NOT EXISTS `users`
-(
- `id` int(8) NOT NULL AUTO_INCREMENT,
- `email` varchar(255) NOT NULL,
- `pwd_hash` varchar(64) NOT NULL,
- `surname` varchar(255) NOT NULL,
- `first_name` varchar(255) NOT NULL,
- `birth_date` date DEFAULT NULL,
- `gender` char(1) DEFAULT NULL,
- `address` varchar(255) DEFAULT NULL,
- `postal_code` int(5) DEFAULT NULL,
- `city` varchar(255) DEFAULT NULL,
- `country` varchar(255) DEFAULT 'France',
- `phone_number` varchar(20) DEFAULT NULL,
- `school` varchar(255) DEFAULT NULL,
- `class` varchar(255) DEFAULT NULL,
- `responsible_name` varchar(255) DEFAULT NULL,
- `responsible_phone` varchar(20) DEFAULT NULL,
- `responsible_email` varchar(255) DEFAULT NULL,
- `description` varchar(255) DEFAULT NULL,
- `role` varchar(64) NOT NULL,
- `team_id` int(8) DEFAULT NULL,
- `year` int(4) NOT NULL DEFAULT 2020,
- `confirm_email` varchar(64) DEFAULT NULL COMMENT 'Jeton de confirmation d''e-mail',
- `forgotten_password` varchar(64) DEFAULT NULL COMMENT 'Jeton de récupération de mot de passe',
- `inscription_date` datetime NOT NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`id`)
-) ENGINE = InnoDB
- DEFAULT CHARSET = utf8;
+CREATE TABLE `tournaments` (
+ `id` int(8) NOT NULL,
+ `name` varchar(64) NOT NULL,
+ `size` int(1) NOT NULL,
+ `place` varchar(255) NOT NULL,
+ `price` int(4) NOT NULL,
+ `description` varchar(255) NOT NULL,
+ `date_start` date NOT NULL,
+ `date_end` date NOT NULL,
+ `date_inscription` datetime NOT NULL,
+ `date_solutions` datetime NOT NULL,
+ `date_syntheses` datetime NOT NULL,
+ `final` tinyint(1) NOT NULL DEFAULT '0',
+ `year` int(4) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET CHARACTER_SET_CLIENT = @OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS = @OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION = @OLD_COLLATION_CONNECTION */;
+-- --------------------------------------------------------
+
+--
+-- Tabellenstruktur für Tabelle `users`
+--
+
+CREATE TABLE `users` (
+ `id` int(8) NOT NULL,
+ `email` varchar(255) NOT NULL,
+ `pwd_hash` varchar(64) NOT NULL,
+ `surname` varchar(255) NOT NULL,
+ `first_name` varchar(255) NOT NULL,
+ `birth_date` date DEFAULT NULL,
+ `gender` char(1) DEFAULT NULL,
+ `address` varchar(255) DEFAULT NULL,
+ `postal_code` int(5) DEFAULT NULL,
+ `city` varchar(255) DEFAULT NULL,
+ `country` varchar(255) DEFAULT 'France',
+ `phone_number` varchar(20) DEFAULT NULL,
+ `school` varchar(255) DEFAULT NULL,
+ `class` enum('SECONDE','PREMIERE','TERMINALE','ADULT') DEFAULT NULL,
+ `responsible_name` varchar(255) DEFAULT NULL,
+ `responsible_phone` varchar(20) DEFAULT NULL,
+ `responsible_email` varchar(255) DEFAULT NULL,
+ `description` varchar(255) DEFAULT NULL,
+ `role` enum('PARTICIPANT','ENCADRANT','ORGANIZER','ADMIN') NOT NULL,
+ `team_id` int(8) DEFAULT NULL,
+ `year` int(4) NOT NULL DEFAULT '2020',
+ `confirm_email` varchar(64) DEFAULT NULL COMMENT 'Jeton de confirmation d''e-mail',
+ `forgotten_password` varchar(64) DEFAULT NULL COMMENT 'Jeton de récupération de mot de passe',
+ `inscription_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Indizes der exportierten Tabellen
+--
+
+--
+-- Indizes für die Tabelle `documents`
+--
+ALTER TABLE `documents`
+ ADD PRIMARY KEY (`file_id`);
+
+--
+-- Indizes für die Tabelle `organizers`
+--
+ALTER TABLE `organizers`
+ ADD PRIMARY KEY (`id`),
+ ADD UNIQUE KEY `organizer` (`organizer`,`tournament`);
+
+--
+-- Indizes für die Tabelle `payments`
+--
+ALTER TABLE `payments`
+ ADD PRIMARY KEY (`id`),
+ ADD UNIQUE KEY `user` (`user`);
+
+--
+-- Indizes für die Tabelle `solutions`
+--
+ALTER TABLE `solutions`
+ ADD PRIMARY KEY (`file_id`);
+
+--
+-- Indizes für die Tabelle `syntheses`
+--
+ALTER TABLE `syntheses`
+ ADD PRIMARY KEY (`file_id`);
+
+--
+-- Indizes für die Tabelle `teams`
+--
+ALTER TABLE `teams`
+ ADD PRIMARY KEY (`id`),
+ ADD UNIQUE KEY `name/year` (`name`,`year`),
+ ADD UNIQUE KEY `trigram/year` (`trigram`,`year`);
+
+--
+-- Indizes für die Tabelle `tournaments`
+--
+ALTER TABLE `tournaments`
+ ADD PRIMARY KEY (`id`),
+ ADD UNIQUE KEY `Name/year` (`name`,`year`) USING BTREE;
+
+--
+-- Indizes für die Tabelle `users`
+--
+ALTER TABLE `users`
+ ADD PRIMARY KEY (`id`),
+ ADD UNIQUE KEY `email/year` (`email`,`year`) USING BTREE;
+
+--
+-- AUTO_INCREMENT für exportierte Tabellen
+--
+
+--
+-- AUTO_INCREMENT für Tabelle `organizers`
+--
+ALTER TABLE `organizers`
+ MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=40;
+
+--
+-- AUTO_INCREMENT für Tabelle `payments`
+--
+ALTER TABLE `payments`
+ MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=111;
+
+--
+-- AUTO_INCREMENT für Tabelle `teams`
+--
+ALTER TABLE `teams`
+ MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=61;
+
+--
+-- AUTO_INCREMENT für Tabelle `tournaments`
+--
+ALTER TABLE `tournaments`
+ MODIFY `id` int(8) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;
+
+--
+-- AUTO_INCREMENT für Tabelle `users`
+--
+ALTER TABLE `users`
+ MODIFY `id` int(8) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=370;
+COMMIT;
+
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;