Administrateur de bases de données (CDI)
+Julien Martin - 15 Janvier 2022
+Nous recherchons un administrateur en base de données pour contribuer au développement de nos infrastructures
+ +Clermont-Ferrand (63)
+diff --git a/.DS_Store b/.DS_Store index 62a2dc5..756ad0b 100755 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/php/.DS_Store b/php/.DS_Store index e15ad86..a06d127 100755 Binary files a/php/.DS_Store and b/php/.DS_Store differ diff --git a/php/public/assets/location.png b/php/public/assets/location.png new file mode 100644 index 0000000..f5018a6 Binary files /dev/null and b/php/public/assets/location.png differ diff --git a/php/public/assets/logo.png b/php/public/assets/logo.png new file mode 100644 index 0000000..d272825 Binary files /dev/null and b/php/public/assets/logo.png differ diff --git a/php/public/assets/michelin.png b/php/public/assets/michelin.png new file mode 100644 index 0000000..1bbe06b Binary files /dev/null and b/php/public/assets/michelin.png differ diff --git a/php/public/css/menu.css b/php/public/css/menu.css new file mode 100644 index 0000000..6ab9e3d --- /dev/null +++ b/php/public/css/menu.css @@ -0,0 +1,145 @@ +a { + text-decoration: none; +} + +.navbar-container { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 2rem; + width: 100%; + height: 70px; + background: #fff; + color: #212121; + position: sticky; + top: 0; + left: 0; + z-index: 100; +} + +.navbar-container .logo-container a { + font-size: 1.5rem; + font-weight: 500; + font-family: 'Kanit', sans-serif; + text-transform: uppercase; + cursor: pointer; + color: #212121; + max-height: 70px; +} + +.navbar-container .nav-items { + display: flex; + align-items: center; + gap: 3rem; + list-style: none; +} + +.navbar-container .nav-items .nav-link a { + color: #212121; + padding: 10px; + text-transform: uppercase; + transition: 0.2s; +} + +.navbar-container .nav-items .nav-link:after { + content: ''; + display: block; + border-top: 3px solid #00DBFF; + transform: scaleX(0); + transition: transform 250ms ease-in-out; +} + +.navbar-container .nav-items .nav-link:hover:after { + transform: scaleX(0.8); +} + +.navbar-container .nav-items .login-register { + display: flex; + flex-direction: row; + gap: 1rem; +} + +.navbar-container .nav-items .login-register .button { + color: #00DBFF; + padding: 5px 20px; + text-transform: uppercase; + border-radius: 15px; + border: #fff 2px solid; +} + +.navbar-container .nav-items .login-register .button2{ + background: #00DBFF; + color: #fff; + border-radius: 15px; +} + +.navbar-container .nav-items .login-register .button:hover { + border: #00DBFF 2px solid; +} + +.navbar-container .nav-items .login-register .button2:hover { + border: #00A4FF 2px solid; +} + +@media(max-width: 1030px) { + .navbar-container { + padding: 0 1rem; + } + + .navbar-container .nav-items { + gap: 0.1rem; + } + + .navbar-container .nav-items .nav-link a, + .navbar-container .nav-items .login-register .button { + font-size: 0.9rem; + } +} + +@media(max-width: 915px) { + .navbar-container .nav-items { + flex-direction: column; + position: fixed; + top: 70px; + right: -100%; + width: 100vw; + height: 100vh; + padding: 1rem 0; + z-index: 99; + background: #fff; + transition: 0.2s ease-in; + } + + .bars { + width: 22px; + height: auto; + cursor: pointer; + } + + .bars .bar { + width: 100%; + height: 2px; + background: #212121; + margin: 5px; + } + + .navbar-container .nav-items { + gap: 3rem; + } + + .navbar-container .nav-items .login-register { + width: 50%; + text-align: center; + flex-direction: column; + gap: 2rem; + } + + .navbar-container .nav-items .login-register .button { + padding: 1rem 0; + } + +} + +.navbar-container .nav-items.active { + right: 0; +} \ No newline at end of file diff --git a/php/scripts/creerOffre.js b/php/scripts/creerOffre.js new file mode 100644 index 0000000..c0c169e --- /dev/null +++ b/php/scripts/creerOffre.js @@ -0,0 +1,32 @@ +// change la possibilité d'entrer une ville pour l'offre +// cas où l'offre est à pourvoir en full remote +document.getElementById("fullRemote").addEventListener("change", function () { + var villeInput = document.getElementById("ville"); + villeInput.disabled = this.checked; + //var ville = document.getElementById('') +}); + +document.addEventListener("DOMContentLoaded", function() { + const form = document.querySelector("form"); + const submitButton = document.querySelector('input[type="submit"]'); + + // Fonction pour vérifier si tous les champs du formulaire sont remplis + function checkFormFields() { + const inputs = form.querySelectorAll('input, textarea, select'); + let allFieldsFilled = true; + + inputs.forEach(function(input) { + if (!input.value) { + allFieldsFilled = false; + } + }); + + submitButton.disabled = !allFieldsFilled; + } + + // Écoute les événements de saisie dans les champs du formulaire + form.addEventListener("input", checkFormFields); + + // Appelle la fonction initiale pour la première vérification + checkFormFields(); +}); diff --git a/php/src/controleur/FrontControleur.php b/php/src/controleur/FrontControleur.php index 0fe94ad..ff7de9f 100755 --- a/php/src/controleur/FrontControleur.php +++ b/php/src/controleur/FrontControleur.php @@ -19,7 +19,7 @@ class FrontControleur "deconnexion","proposerOffre","consulterProfil","modifierProfil","signaler" ], "Utilisateur" => [ - "connection", "inscription", "accueil","consulterProfilLimite" + "connection", "inscription", "accueil","consulterProfilLimite","publierOffre" ] ); diff --git a/php/src/controleur/UtilisateurControleur.php b/php/src/controleur/UtilisateurControleur.php index 6f13247..1e4ee39 100755 --- a/php/src/controleur/UtilisateurControleur.php +++ b/php/src/controleur/UtilisateurControleur.php @@ -4,7 +4,11 @@ namespace App\controleur; use App\gateway\Connection; use App\gateway\ImageGateway; -use App\modele\Image; +use App\gateway\OffreGateway; +use App\metier\Image; +use App\modele\NiveauEtudes; +use App\modele\Offre; +use App\modele\TypeContrat; class UtilisateurControleur { @@ -13,7 +17,7 @@ class UtilisateurControleur global $twig; if (!isset($_REQUEST["action"])) { //$action = NULL; - $action = "CreerOffre"; + $action = "consulterOffres"; } else { $action = \App\config\Validation::nettoyerString($_REQUEST["action"]); } @@ -30,16 +34,22 @@ class UtilisateurControleur case "inscription": $this->inscription(); break; + case "consulterOffres": + $this->consulterOffres(); + break; case "consulterProfilLimite": $this->consulterProfilLimite(); break; - case "CreerOffre": + case "creerOffre": //echo "test"; $this->creerOffre(); break; case "publierOffre": $this->publierOffre(); break; + case "testAction": + $this->testAction(); + break; default: $dVueErreur[] ="Action inconnue ou non autorisée"; echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]); @@ -72,7 +82,7 @@ class UtilisateurControleur // Si l'inscription a réussi, redirigez l'utilisateur vers une page de confirmation // Vous pouvez également gérer les erreurs ici en cas d'échec de l'inscription - if ($nouvelUtilisateur instanceof \App\modele\Alumni) { + if ($nouvelUtilisateur instanceof \App\metier\Alumni) { // L'inscription a réussi, redirigez l'utilisateur vers une page de confirmation // par exemple : header('Location: index.php?action=inscription_success'); @@ -98,14 +108,18 @@ class UtilisateurControleur //TODO } + protected function consulterOffres() + { + global $twig; + echo $twig->render('offres.html', []); + } protected function creerOffre() { - /* + global $twig; - echo $twig->render('testImage.html', []); - /* - * */ - $con = new Connection("mysql:host=localhost;dbname=dbAlica",'test','test'); + echo $twig->render('CreerOffre.html', []); + + /* $con = new Connection("mysql:host=localhost;dbname=dbAlica",'test','test'); $imgGw = new ImageGateway($con); @@ -114,32 +128,92 @@ class UtilisateurControleur //echo $imglist[0]->getBlob(); // echo $imglist[0]->toString(); - echo ''; + echo '';*/ } protected function publierOffre() { + global $twig; + try{ + if(isset($_POST["submit"])) + { + // echo "numero : ",$_POST["num"]; + $con = new Connection("mysql:host=localhost;dbname=dbAlica",'test','test'); + $imgGw = new ImageGateway($con); + + $img = new Image($imgGw->getNewId(),$_FILES["image"]["name"], + $_FILES["image"]["size"],$_FILES["image"]["type"],file_get_contents($_FILES["image"]["tmp_name"])); + + $imgid = $imgGw->findByNom($img->getName())->getId(); + + $desc = $_POST["description"]; + $descposte = $_POST["descriptPoste"]; + $nom = $_POST["name"]; + $ville = $_POST["ville"]; + $entreprise = $_POST["entreprise"]; + $profilRecherche = $_POST["profilRecherche"]; + $mail = $_POST["mail"]; + $num = $_POST["num"]; + $site = $_POST["site"]; + + $type = match ($_POST["type"]) { + "Stage" => TypeContrat::Stage, + "CDI" => TypeContrat::CDI, + "CDD" => TypeContrat::CDD, + "Alternance" => TypeContrat::Alternance, + default => TypeContrat::CDD, + }; + + $niveauEtudes = match ($_POST["education"]) { + "Bac+2" => NiveauEtudes::Bac2, + "Bac+3" => NiveauEtudes::Bac3, + "Bac+5" => NiveauEtudes::Bac5, + default => NiveauEtudes::Indifferent, + }; + + $offre = new Offre(NULL,$nom,$desc,$imgid,$type,$ville,$entreprise,$profilRecherche,$mail,$num,$site,$type,$niveauEtudes); + } + } + catch(\Exception ) + { + $twig->render("erreur.html",['dVueErreur' => "erreur "]); + } - if(isset($_POST["submit"])) + + + if(isset($_POST["submit"])) $img = new Image($_FILES["image"]["name"], $_FILES["image"]["size"],$_FILES["image"]["type"],file_get_contents($_FILES["image"]["tmp_name"])); else { - echo "
Julien Martin - 15 Janvier 2022
+Nous recherchons un administrateur en base de données pour contribuer au développement de nos infrastructures
+ +Clermont-Ferrand (63)
+Julien Martin - 15 Janvier 2022
+Nous recherchons un administrateur en base de données pour contribuer au développement de nos infrastructures
+ +Clermont-Ferrand (63)
+Julien Martin - 15 Janvier 2022
+Nous recherchons un administrateur en base de données pour contribuer au développement de nos infrastructures
+ +Clermont-Ferrand (63)
+