From 4f4c2c9becd3d25678114e5569dd7a9979e00a77 Mon Sep 17 00:00:00 2001 From: Axok Date: Fri, 1 Apr 2022 09:27:02 +0200 Subject: [PATCH] =?UTF-8?q?d=C3=A9but=20stage=20gestion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/css/gestion_entreprises.css | 3 +- server_static/assets/css/gestion_stages.css | 187 +++++++++++++++++- server_static/assets/js/gestion_stages.js | 69 +++++++ server_static/index.php | 49 ----- website/.htaccess | 8 + website/controller/Manage_internships.php | 63 ++++++ website/gestion_entreprises.php | 51 ++++- website/gestion_stages.php | 147 +++++++++++++- 8 files changed, 506 insertions(+), 71 deletions(-) delete mode 100644 server_static/index.php create mode 100644 website/.htaccess create mode 100644 website/controller/Manage_internships.php diff --git a/server_static/assets/css/gestion_entreprises.css b/server_static/assets/css/gestion_entreprises.css index 1d3c71c..a639088 100644 --- a/server_static/assets/css/gestion_entreprises.css +++ b/server_static/assets/css/gestion_entreprises.css @@ -77,7 +77,8 @@ table td { background-color: rgba(0,0,0,0.7); } -.title_modal +.title_modal, +.title_modal2 { border-radius: 10px 10px 0 0; padding: 10px; diff --git a/server_static/assets/css/gestion_stages.css b/server_static/assets/css/gestion_stages.css index e529418..7e816dd 100644 --- a/server_static/assets/css/gestion_stages.css +++ b/server_static/assets/css/gestion_stages.css @@ -3,8 +3,187 @@ .content_title { - text-align: center; - margin: 10px; - font-size:calc(30px + 1vw); - font-weight: bold; + text-align: center; + margin: 10px; + font-size:calc(30px + 1vw); + font-weight: bold; +} + +.info_message +{ + display: none; + width: 80%; + margin: 10px auto 20px auto; + padding: 10px; + border-radius: 10px; + text-align: center; +} + +.logo_plus i, +.actions i +{ + margin: 0 10px; + cursor: pointer; + color: black; +} + +.logo_plus +{ + text-align: center; + font-size: 2em; +} + +.table { + margin: 0 auto 0 auto; + padding: 10px; + text-align: center; + overflow: auto; + border-collapse: collapse; +} + +.table tr:first-child td { + background-color: #a79c9c; + } + + +table td { + min-width: 100px; + width: calc(100% / 8); + padding: 5px; + border: solid 1px black; +} + +/*////////////////////////////////////////////////////////////////// +[ Modal ] */ + +.modal +{ + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgb(0,0,0); + background-color: rgba(0,0,0,0.7); +} + +.title_modal +{ + border-radius: 10px 10px 0 0; + padding: 10px; + font-weight: bold; + font-size: 2em; + text-align: center; +} + +.modal-content +{ + background-color: #ffffff; + margin: 15% auto; + width: 80%; + border-radius: 10px; + text-align: center; + margin-left: auto; + margin-right: auto; +} + +.info_message +{ + display: none; + width: 80%; + margin: 10px auto 20px auto; + padding: 10px; + border-radius: 10px; +} + +.form_add_edit .input +{ + width: 80%; + height: 25px; + margin-left: 10px; + font-size: 20px; +} + +.form_add_edit button, .form_add_edit input[type="button"] +{ + margin: 10px; + width: 120px; + height: 40px; + font-size: 20px; +} + +.close +{ + color: #aaa; + float: right; + font-size: 40px; + font-weight: bold; + right: -20px; + margin-right: 20px; +} + +.close:hover, .close:focus +{ + color: black; + text-decoration: none; + cursor: pointer; +} + +.table-container { + display: block; + width: 90%; + max-width: 900px; + margin-left: auto; + margin-right: auto; + } + + .flex-table { + display: flex; + flex-flow: row wrap; + } + + .flex-row { + width: calc(100% / 2); + text-align: center; + padding: 0.2em 0.2em; + } + + .flex-table .name + { + text-align: left; + } + + .flex-table .value + { + text-align: right; + } + + +/*////////////////////////////////////////////////////////////////// +[ Responsive ]*/ + +@media screen and (max-width: 900px) +{ + .modal-content + { + width: 90%; + } +} + +@media screen and (max-width: 500px) { + .flex-row { + width: 100%; + } + .flex-table .name + { + text-align: left; + font-weight: bold ; + } + .flex-table .value + { + text-align: center; + } } \ No newline at end of file diff --git a/server_static/assets/js/gestion_stages.js b/server_static/assets/js/gestion_stages.js index d866c56..fcc3e59 100644 --- a/server_static/assets/js/gestion_stages.js +++ b/server_static/assets/js/gestion_stages.js @@ -1,3 +1,72 @@ $(document).ready(function(){ $("#li_gestion_stages").delay(2000).addClass("hover"); + + $(".logo_add").click(function() { + $(".modal").show(); + $(".title_modal").html("Ajout d'un stage"); + $("input[type='hidden']").attr("value","edit"); + $("input[name='name_internship']").attr("value",$(this).attr("name_internship")); + $("input[name='description_internship']").attr("value",$(this).attr("description_internship")); + $("input[name='duration_internship']").attr("value",$(this).attr("duration_internship")); + $("input[name='remuneration_internship']").attr("value",$(this).attr("remuneration_internship")); + $("input[name='offer_date_internship']").attr("value",$(this).attr("offer_date_internship")); + $("input[name='place_number_internship']").attr("value",$(this).attr("place_number_internship")); + $("input[name='competences_internship']").attr("value",$(this).attr("competences_internship")); + $("select[name='name_promotion'] option[value="+$(this).attr("name_promotion")+"]").prop('selected', true); + $("select[name='localisation'] option[value="+$(this).attr("localisation")+"]").prop('selected', true); + $("select[name='company'] option[value="+$(this).attr("company")+"]").prop('selected', true); + $(".info_message").css("display", "none"); + }); + + $(".close:eq(0)").click(function() { + $(".modal").hide(); + }); + + window.onclick = function(event) { + if (event.target == document.getElementById("modal_add_edit")) { + $(".modal").hide(); + } + } + + $('.form_add_edit').on('submit',(function(){ + $(".form_add_edit").append(''); + return true; + })); + + + $(".logo_edit").click(function() { + $("#modal_add_edit").show(); + window.ID_internship = $(this).attr("ID_internship"); + $(".title_modal").html("Modification d'un stage"); + $("input[type='hidden']").attr("value","edit"); + $("input[name='name_internship']").attr("value",$(this).attr("name_internship")); + $("input[name='description_internship']").attr("value",$(this).attr("description_internship")); + $("input[name='duration_internship']").attr("value",$(this).attr("duration_internship")); + $("input[name='remuneration_internship']").attr("value",$(this).attr("remuneration_internship")); + $("input[name='offer_date_internship']").attr("value",$(this).attr("offer_date_internship")); + $("input[name='place_number_internship']").attr("value",$(this).attr("place_number_internship")); + $("input[name='competences_internship']").attr("value",$(this).attr("competences_internship")); + $("select[name='name_promotion'] option[value="+$(this).attr("name_promotion")+"]").prop('selected', true); + $("select[name='localisation'] option[value="+$(this).attr("localisation")+"]").prop('selected', true); + $("select[name='company'] option[value="+$(this).attr("company")+"]").prop('selected', true); + $(".info_message").css("display", "none"); + }); + + $(".logo_delete").click(function() { + console.log($(this).attr("ID_internship")); + $.post( + 'controller/Manage_internships.php', + { + ID_internship: $(this).attr("ID_internship"), + action: "delete"}, + function(data, status, jqXHR) { + if (data.trim() == "false"){ + $(".info_message").html("Ce stage ne peut pas être supprimé car il existe des candidatures en lien avec lui."); + $(".info_message").css("background-color", "#df8787"); + $(".info_message").css("display", "block"); + } else if (data.trim() == "true") + location.reload(); + } + ); + }); }); \ No newline at end of file diff --git a/server_static/index.php b/server_static/index.php deleted file mode 100644 index 83a977a..0000000 --- a/server_static/index.php +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Static - CTS - - - - - - - - - - -
- -
- - - - \ No newline at end of file diff --git a/website/.htaccess b/website/.htaccess new file mode 100644 index 0000000..0167c04 --- /dev/null +++ b/website/.htaccess @@ -0,0 +1,8 @@ +Options +Indexes +AuthType Basic +AuthName "Page protégée" + +AuthBasicProvider file +AuthUserFile "D:\OneDrive\OneDrive - Association Cesi Viacesi mail\01 Pro\Semestre 1\Projet_4 - Développement Web\Livrable 3\a2_projet_web\website\.users_auth + +Require valid-user diff --git a/website/controller/Manage_internships.php b/website/controller/Manage_internships.php new file mode 100644 index 0000000..55af19d --- /dev/null +++ b/website/controller/Manage_internships.php @@ -0,0 +1,63 @@ +prepare('SELECT * FROM users NATURAL JOIN roles NATURAL JOIN roles_has_permissions NATURAL JOIN permissions WHERE code_permission="SFx1" AND username=:user AND password_user=:password_user;'); + $query_check_cookie->execute(['user' => $_COOKIE['username'], 'password_user' => $_COOKIE['pass']]); + if ($query_check_cookie->rowCount() == 1){ + if (isset($_POST["ID_internship"]) && isset($_POST["action"])){ + $ID_internship = $_POST["ID_internship"]; + + if ($_POST["action"] == "delete"){ + try { + $query_delete_internship = $bdd->prepare('SET @ID_internship=:ID_internship; + DELETE FROM internship_for_promo WHERE ID_internship=@ID_internship AND 0=(SELECT EXISTS (SELECT * FROM candidatures WHERE ID_internship=@ID_internship)); + DELETE FROM wishlist WHERE ID_internship=@ID_internship AND 0=(SELECT EXISTS (SELECT * FROM candidatures WHERE ID_internship=@ID_internship)); + DELETE FROM internships WHERE ID_internship=@ID_internship AND 0=(SELECT EXISTS (SELECT * FROM candidatures WHERE ID_internship=@ID_internship));'); + $query_delete_internship->execute(['ID_internship' => $ID_internship]); + echo "true"; + } catch (Exception $e) { + echo "false"; + } + } + } + if (isset($_POST["action"]) && isset($_POST["name_internship"]) && isset($_POST["description_internship"]) && isset($_POST["duration_internship"]) && isset($_POST["remuneration_internship"]) && isset($_POST["offer_date_internship"]) && isset($_POST["place_number_internship"]) && isset($_POST["competences_internship"]) && isset($_POST["name_promotion"]) && isset($_POST["localisation"]) && isset($_POST["company"])) { + if ($_POST["action"] == "add"){ + echo "bonjour"; + try { + $query_add_internship = $bdd->prepare('INSERT INTO internships VALUES (NULL, :name_internship, :description_internship, :duration_internship, :remuneration_internship, :offer_date_internship, :place_number_internship, :competences_internship, :ID_company, :ID_localisation);'); + $query_add_internship->execute(['name_internship' => $_POST["name_internship"], 'description_internship' => $_POST["description_internship"], 'duration_internship' => $_POST["duration_internship"], 'remuneration_internship' => $_POST["remuneration_internship"], 'offer_date_internship' => $_POST["offer_date_internship"], 'place_number_internship' => $_POST["place_number_internship"], 'competences_internship' => $_POST["competences_internship"], 'localisation' => $_POST["localisation"], 'company' => $_POST["company"]]); + $query_add_internship = $bdd->prepare('SELECT LAST_INSERT_ID() as "ID_internship";'); + $query_add_internship->execute(); + $ID_add_internship = $query_add_internship->fetchALL(PDO::FETCH_OBJ)[0]->ID_internship; + $query_add_internship = $bdd->prepare('INSERT INTO internship_for_promo VALUES (:ID_internship, (SELECT ID_promotion FROM promotions WHERE name_promotion = :name_promotion);'); + $query_add_internship->execute(['ID_internship' => $ID_add_internship, 'name_promotion' => $_POST['name_promotion']]); + + echo ""; + } catch (Exception $e) { + echo "false"; + } + } + } + if (isset($_POST["action"]) && isset($_POST["name_internship"]) && isset($_POST["description_internship"]) && isset($_POST["duration_internship"]) && isset($_POST["remuneration_internship"]) && isset($_POST["offer_date_internship"]) && isset($_POST["place_number_internship"]) && isset($_POST["competences_internship"]) && isset($_POST["name_promotion"]) && isset($_POST["localisation"]) && isset($_POST["company"])) { + if ($_POST["action"] == "edit"){ + try { + $ID_internship = $_POST["ID_internship"]; + $query_edit_internship = $bdd->prepare('UPDATE internship_for_promo SET ID_internship = :ID_internship WHERE ID_promotion = :name_promotion;'); + $query_edit_internship->execute(['name_promotion' => $_POST['name_promotion'], 'ID_internship' => $ID_internship]); + + $query_edit_internship = $bdd->prepare('UPDATE internships SET name_internship = :name_internship, description_internship = :description_internship, duration_internship = :duration_internship, remuneration_internship = :remuneration_internship, offer_date_internship = :offer_date_internship, place_number_internship = :place_number_internship, competences_internship = :competences_internship, name_promotion = :name_promotion, localisation = :localisation, company = :company WHERE ID_internship=:ID_internship;'); + $query_edit_internship->execute(['name_internship' => $_POST["name_internship"], 'description_internship' => $_POST["description_internship"], 'duration_internship' => $_POST["duration_internship"], 'remuneration_internship' => $_POST["remuneration_internship"], 'offer_date_internship' => $_POST["offer_date_internship"], 'place_number_internship' => $_POST["place_number_internship"], 'competences_internship' => $_POST["competences_internship"], 'name_promotion' => $_POST["name_promotion"], 'localisation' => $_POST["localisation"], 'company' => $_POST["company"]]); + + echo ""; + } catch (Exception $e) { + echo $e; + } + } else { + echo "error"; + } + } + } + } +} \ No newline at end of file diff --git a/website/gestion_entreprises.php b/website/gestion_entreprises.php index 0557e8f..bbbf983 100644 --- a/website/gestion_entreprises.php +++ b/website/gestion_entreprises.php @@ -9,9 +9,31 @@ if (isset($_COOKIE['username']) && isset($_COOKIE['pass'])) { if ($query_check_cookie->rowCount() == 1){ $sql = 'SELECT companies.ID_company, name_company, activity_sector_company, nb_intern_cesi_company, email_company, visibility_company, companies_located.ID_localisation, note FROM companies LEFT JOIN companies_located ON companies.ID_company=companies_located.ID_company LEFT JOIN localisations ON companies_located.ID_localisation=localisations.ID_localisation INNER JOIN evaluate ON companies.ID_company = evaluate.ID_company;'; - $query_perm = $bdd->prepare('SELECT username, code_permission FROM users NATURAL JOIN roles NATURAL JOIN roles_has_permissions NATURAL JOIN permissions WHERE code_permission=:perm AND username=:user;'); - $query_perm->execute(['user' => $_COOKIE["username"], 'perm' => "SFx2"]); - if ($query_perm->rowCount() == 1) { + $query_perm_nav = $bdd->prepare('SELECT username, code_permission FROM users NATURAL JOIN roles NATURAL JOIN roles_has_permissions NATURAL JOIN permissions WHERE username = :user;'); + $query_perm_nav->execute(['user' => $_COOKIE["username"]]); + $results_nav = $query_perm_nav->fetchALL(PDO::FETCH_OBJ); + if ($query_perm_nav->rowCount() >= 1) { + $gestion_Enterprises_create = false; + $gestion_Enterprises_edit = false; + $gestion_Enterprises_delete = false; + $gestion_Enterprises_stat = false; + + foreach($results_nav as $result){ + if ($result->code_permission == "SFx3"){ + $gestion_Enterprises_create = true; + } + if ($result->code_permission == "SFx4"){ + $gestion_Enterprises_edit = true; + } + if ($result->code_permission == "SFx6"){ + $gestion_Enterprises_delete = true; + } + if ($result->code_permission == "SFx7"){ + $gestion_Enterprises_stat = true; + } + } + } + if ($gestion_Enterprises_create || $gestion_Enterprises_edit || $gestion_Enterprises_delete || $gestion_Enterprises_stat) { $query_companies = $bdd->prepare($sql); $query_companies->execute(); $results_companies = $query_companies->fetchALL(PDO::FETCH_OBJ); @@ -105,7 +127,7 @@ if (isset($_COOKIE['username']) && isset($_COOKIE['pass'])) {