123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 |
- <?php
-
- require_once 'config.php';
- require_once 'dbh.inc.php';
- require_once 'checkLogin.php';
-
- include_once '../../funciones.php';
- console_log($_POST);
-
-
-
-
-
-
-
-
-
- if(isset($_POST['createQuestionnaire'])) {
-
-
-
-
- $experienceID = mysqli_real_escape_string($connection, trim($_POST['id_experience']));
- $questionnaireTitle = mysqli_real_escape_string($connection, trim($_POST['q_title']));
- $questionnaireDescription = mysqli_real_escape_string($connection, trim($_POST['description']));
- $questionnaireReference = mysqli_real_escape_string($connection, trim($_POST['referencia']));
- $questionnaireCategories = explode(',', mysqli_real_escape_string($connection, trim($_POST['q_categories'])));
- $questionnaireSubcategories = explode(',', mysqli_real_escape_string($connection, trim($_POST['q_subcategories'])));
-
-
-
-
-
-
-
- if($experienceID === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify experience ID."));
- exit();
- } else if(mysqli_query($connection, "SELECT * FROM experience WHERE id = '$experienceID';")->num_rows !== 1) {
- http_response_code(400);
- echo json_encode(array("error" => "Given experience ID ($experienceID) not in database."));
- exit();
- }
-
-
-
-
- if($questionnaireTitle === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify questionnaire title."));
- exit();
- } else if(mb_strlen($questionnaireTitle) > 100) {
- http_response_code(400);
- echo json_encode(array("error" => "Questionnaire title too long (max. is 100 characters)."));
- exit();
- }
-
-
-
- if($questionnaireDescription === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify questionnaire description."));
- exit();
- } else if(mb_strlen($questionnaireDescription) > 200) {
- http_response_code(400);
- echo json_encode(array("error" => "Questionnaire description too long (max. is 200 characters)."));
- exit();
- }
-
-
-
- if($questionnaireReference === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify questionnaire reference."));
- exit();
- } else if(mb_strlen($questionnaireReference) > 60) {
- http_response_code(400);
- echo json_encode(array("error" => "Questionnaire reference too long (max. is 60 characters)."));
- exit();
- }
-
-
-
-
-
- if($questionnaireCategories === FALSE || count($questionnaireCategories) === 0) {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify questionnaire categories (go back with 'Previous' button)."));
- exit();
- }
-
-
-
-
-
- if($questionnaireSubcategories === FALSE || count($questionnaireSubcategories) === 0) {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify questionnaire subcategories (go back with 'Previous' button)."));
- exit();
- }
-
-
-
-
-
-
-
-
-
-
- for($i = 0; $i < count($questionnaireCategories); $i++) {
-
- $questionnaireCategories[$i] = trim($questionnaireCategories[$i]);
-
-
- if($questionnaireCategories[$i] === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a valid category (category #".($i+1).")."));
- exit();
- } else if(mb_strlen($questionnaireCategories[$i]) > 60) {
- http_response_code(400);
- echo json_encode(array("error" => "Category '".$questionnaireCategories[$i]."' too long (max. is 60 characters)."));
- exit();
- }
-
- }
-
-
-
-
-
-
- for($i = 0; $i < count($questionnaireSubcategories); $i++) {
-
- $questionnaireSubcategories[$i] = trim($questionnaireSubcategories[$i]);
-
-
- if($questionnaireSubcategories[$i] === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a valid subcategory (subcategory #".($i+1).")."));
- exit();
- } else if(mb_strlen($questionnaireSubcategories[$i]) > 60) {
- http_response_code(400);
- echo json_encode(array("error" => "Subcategory '".$questionnaireSubcategories[$i]."' too long (max. is 60 characters)."));
- exit();
- }
-
- }
-
-
-
-
- if(count($questionnaireSubcategories) < count($questionnaireCategories)) {
- http_response_code(400);
- echo json_encode(array("error" => "The number of subcategories must be greater or equal than the number of categories (go back with 'Previous' button)."));
- exit();
- }
-
-
-
-
-
- $questionPremises = array();
- $questionTypes = array();
- $questionMinVal = array();
- $questionMinText = array();
- $questionMaxVal = array();
- $questionMaxText = array();
- $questionCategories = array();
- $questionSubcategories = array();
- $numberOfQuestions = 0;
-
-
-
-
-
-
-
- $start = 6;
- for($i = $start; $i < count($_POST) - 1 - $start; $i += 8) {
-
- $questionPremises[] = mysqli_real_escape_string($connection, trim(array_values($_POST)[$i]));
- $questionTypes[] = mysqli_real_escape_string($connection, trim(array_values($_POST)[$i+1]));
- $questionMinVal[] = mysqli_real_escape_string($connection, trim(array_values($_POST)[$i+2]));
- $questionMinText[] = mysqli_real_escape_string($connection, trim(array_values($_POST)[$i+3]));
- $questionMaxVal[] = mysqli_real_escape_string($connection, trim(array_values($_POST)[$i+4]));
- $questionMaxText[] = mysqli_real_escape_string($connection, trim(array_values($_POST)[$i+5]));
- $questionCategories[] = mysqli_real_escape_string($connection, trim(array_values($_POST)[$i+6]));
- $questionSubcategories[] = mysqli_real_escape_string($connection, trim(array_values($_POST)[$i+7]));
- $numberOfQuestions++;
-
-
-
- if($questionPremises[$numberOfQuestions - 1] === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a valid premise (in Question #$numberOfQuestions)."));
- exit();
- } else if(mb_strlen($questionPremises[$numberOfQuestions - 1]) > 600) {
- http_response_code(400);
- echo json_encode(array("error" => "Premise too long (max. is 600 characters) (in Question #$numberOfQuestions)."));
- exit();
- }
-
-
-
- if($questionCategories[$numberOfQuestions - 1] === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a valid category (in Question #$numberOfQuestions)."));
- exit();
- } else if(mb_strlen($questionCategories[$numberOfQuestions - 1]) > 60) {
- http_response_code(400);
- echo json_encode(array("error" => "Category '".$questionCategories[$numberOfQuestions - 1]."' too long (max. is 60 characters) (in Question #$numberOfQuestions)."));
- exit();
- }
-
-
-
- if($questionSubcategories[$numberOfQuestions - 1] === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a valid subcategory (in Question #$numberOfQuestions)."));
- exit();
- } else if(mb_strlen($questionSubcategories[$numberOfQuestions - 1]) > 60) {
- http_response_code(400);
- echo json_encode(array("error" => "Subcategory '".$questionSubcategories[$numberOfQuestions - 1]."' too long (max. is 60 characters) (in Question #$numberOfQuestions)."));
- exit();
- }
-
-
-
-
-
-
- if($questionTypes[$numberOfQuestions - 1] === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a type (1 for scaled, 2 for open) (in Question #$numberOfQuestions)."));
- exit();
- } else if($questionTypes[$numberOfQuestions - 1] === "1") {
-
-
-
- if($questionMinVal[$numberOfQuestions - 1] !== "1") {
- http_response_code(400);
- echo json_encode(array("error" => "Minimum value has to be 1 (in Question #$numberOfQuestions)."));
- exit();
- }
-
-
-
- if($questionMinText[$numberOfQuestions - 1] === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a valid minimum text (in Question #$numberOfQuestions)."));
- exit();
- } else if(mb_strlen($questionMinText[$numberOfQuestions - 1]) > 40) {
- http_response_code(400);
- echo json_encode(array("error" => "Minimum text '".$questionMinText[$numberOfQuestions - 1]."' too long (max. is 40 characters) (in Question #$numberOfQuestions)."));
- exit();
- }
-
-
-
-
-
-
-
- if(!is_numeric($questionMaxVal[$numberOfQuestions - 1])) {
- http_response_code(400);
- echo json_encode(array("error" => "Maximum value has to be numeric (in Question #$numberOfQuestions)."));
- exit();
- } else if(intval($questionMaxVal[$numberOfQuestions - 1]) < 2) {
- http_response_code(400);
- echo json_encode(array("error" => "Maximum value has to be greater or equal to 2 (in Question #$numberOfQuestions)."));
- exit();
- }
-
-
-
- if($questionMaxText[$numberOfQuestions - 1] === "") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a valid maximum text (in Question #$numberOfQuestions)."));
- exit();
- } else if(mb_strlen($questionMaxText[$numberOfQuestions - 1]) > 40) {
- http_response_code(400);
- echo json_encode(array("error" => "Maximum text '".$questionMaxText[$numberOfQuestions - 1]."' too long (max. is 40 characters) (in Question #$numberOfQuestions)."));
- exit();
- }
-
-
-
- if(mb_strtolower($questionMaxText[$numberOfQuestions - 1]) === mb_strtolower($questionMinText[$numberOfQuestions - 1])) {
- http_response_code(400);
- echo json_encode(array("error" => "Labels must be different (in Question #$numberOfQuestions)."));
- exit();
- }
-
-
- } else if($questionTypes[$numberOfQuestions - 1] !== "2") {
- http_response_code(400);
- echo json_encode(array("error" => "Please specify a valid type (1 for scaled, 2 for open) (in Question #$numberOfQuestions)."));
- exit();
- }
-
- }
-
-
-
-
-
- for($i = 0; $i < count($questionnaireCategories); $i++) {
-
- if(!in_array($questionnaireCategories[$i], $questionCategories)) {
- http_response_code(400);
- echo json_encode(array("error" => "Category '" . $questionnaireCategories[$i] . "' is unused."));
- exit();
- }
-
- }
-
-
-
-
- for($i = 0; $i < count($questionnaireSubcategories); $i++) {
-
- if(!in_array($questionnaireSubcategories[$i], $questionSubcategories)) {
- http_response_code(400);
- echo json_encode(array("error" => "Subcategory '" . $questionnaireSubcategories[$i] . "' is unused."));
- exit();
- }
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $queryQuestionnaire = "INSERT INTO questionnair (`q_title`, `description`) VALUES ('$questionnaireTitle', '$questionnaireDescription');";
- if(!mysqli_query($connection, $queryQuestionnaire)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't create questionnaire<br>".mysqli_error($connection)."<br>Query: $queryQuestionnaire")));
- }
-
- $questionnaireID = mysqli_insert_id($connection) or die(json_encode(array("error" => "Error: Couldn't fetch questionnaire id after creating it<br>".mysqli_error($connection))));
-
- $queryHookQuestionnaireToExperience = "INSERT INTO experience_questionnair (`id_experience`, `id_questionnair`) VALUES ('$experienceID', '$questionnaireID');";
- if(!mysqli_query($connection, $queryHookQuestionnaireToExperience)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't hook questionnaire to experience<br>".mysqli_error($connection)."<br>Query: $queryHookQuestionnaireToExperience")));
- }
-
-
-
-
- $queryReference = "INSERT INTO reference (`referencia`) VALUES ('$questionnaireReference');";
- if(!mysqli_query($connection, $queryReference)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't create questionnaire reference<br>".mysqli_error($connection)."<br>Query: $queryReference")));
- }
-
- $referenceID = mysqli_insert_id($connection) or die(json_encode(array("error" => "Error: Couldn't fetch reference id after creating it<br>".mysqli_error($connection))));
-
-
-
-
- for($i = 0; $i < count($questionnaireCategories); $i++) {
- $queryCategory = "INSERT INTO category (`categoria`) VALUES ('".$questionnaireCategories[$i]."');";
- if(!mysqli_query($connection, $queryCategory)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't create category '".$questionnaireCategories[$i]."'<br>".mysqli_error($connection)."<br>Query: $queryCategory")));
- }
-
- $categoryIDs[$questionnaireCategories[$i]] = mysqli_insert_id($connection) or die(json_encode(array("error" => "Error: Couldn't fetch category id ('".$questionnaireCategories[$i]."') after creating it<br>".mysqli_error($connection))));
- }
-
- console_log($categoryIDs);
-
-
-
- for($i = 0; $i < count($questionnaireCategories); $i++) {
- for($j = 0; $j < count($questionnaireSubcategories); $j++) {
- for($k = 0; $k < $numberOfQuestions; $k++) {
- if($questionSubcategories[$k] == $questionnaireSubcategories[$j] && $questionCategories[$k] == $questionnaireCategories[$i]) {
- $linkSubcategoryToCategoryID[$questionnaireSubcategories[$j]] = $categoryIDs[$questionnaireCategories[$i]];
- }
- }
- }
- }
-
- console_log($linkSubcategoryToCategoryID);
-
-
-
- for($i = 0; $i < count($questionnaireSubcategories); $i++) {
- $querySubcategory = "INSERT INTO subcategory (`subcategoria`, `id_categoria`) VALUES ('".$questionnaireSubcategories[$i]."', '".$linkSubcategoryToCategoryID[$questionnaireSubcategories[$i]]."');";
- if(!mysqli_query($connection, $querySubcategory)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't create subcategory '".$questionnaireSubcategories[$i]."', which is linked to category ID ".$linkSubcategoryToCategoryID[$questionnaireSubcategories[$i]]."<br>".mysqli_error($connection)."<br>Query: $querySubcategory<br>Dump: \n".var_export($linkSubcategoryToCategoryID, true))));
- }
-
- $subcategoryIDs[$questionnaireSubcategories[$i]] = mysqli_insert_id($connection) or die(json_encode(array("error" => "Error: Couldn't fetch subcategory id after creating it ('".$questionnaireSubcategories[$i]."', which is linked to category ID ".$linkSubcategoryToCategoryID[$questionnaireSubcategories[$i]].")<br>".mysqli_error($connection))));
- }
-
-
-
-
-
- for($i = 0; $i < $numberOfQuestions; $i++) {
-
- $queryQuestion = "INSERT INTO question (`premise`, `id_category`, `id_subcategory`, `id_type`, `id_referencia`) VALUES ('".$questionPremises[$i]."', '".$categoryIDs[$questionCategories[$i]]."', '".$subcategoryIDs[$questionSubcategories[$i]]."', '".$questionTypes[$i]."', '$referenceID');";
- if(!mysqli_query($connection, $queryQuestion)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't insert question '".$questionPremises[$i]."'<br>".mysqli_error($connection)."<br>Query: $queryQuestion")));
- }
-
- $questionID = mysqli_insert_id($connection) or die(json_encode(array("error" => "Error: Couldn't fetch question ID (from '".$questionPremises[$i]."')<br>".mysqli_error($connection))));
-
-
- if($questionTypes[$i] == '1') {
-
- $queryMinVal = "INSERT INTO question_type (`id_type`, `id_question`, `label`, `value`) VALUES ('".$questionTypes[$i]."', '$questionID', 'min_val', '".$questionMinVal[$i]."');";
- if(!mysqli_query($connection, $queryMinVal)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't insert question minimum value (from '".$questionPremises[$i]."')<br>".mysqli_error($connection)."<br>Query: $queryMinVal")));
- }
-
- $queryMinText = "INSERT INTO question_type (`id_type`, `id_question`, `label`, `value`) VALUES ('".$questionTypes[$i]."', '$questionID', 'min_texto', '".$questionMinText[$i]."');";
- if(!mysqli_query($connection, $queryMinText)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't insert question minimum text (from '".$questionPremises[$i]."')<br>".mysqli_error($connection)."<br>Query: $queryMinText")));
- }
-
- $queryMaxVal = "INSERT INTO question_type (`id_type`, `id_question`, `label`, `value`) VALUES ('".$questionTypes[$i]."', '$questionID', 'max_val', '".$questionMaxVal[$i]."');";
- if(!mysqli_query($connection, $queryMaxVal)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't insert question maximum value (from '".$questionPremises[$i]."')<br>".mysqli_error($connection)."<br>Query: $queryMaxVal")));
- }
-
- $queryMaxText = "INSERT INTO question_type (`id_type`, `id_question`, `label`, `value`) VALUES ('".$questionTypes[$i]."', '$questionID', 'max_texto', '".$questionMaxText[$i]."');";
- if(!mysqli_query($connection, $queryMaxText)) {
- http_response_code(400);
- die(json_encode(array("error" => "Error: Couldn't insert question maximum text (from '".$questionPremises[$i]."')<br>".mysqli_error($connection)."<br>Query: $queryMaxText")));
- }
-
- }
-
- $queryHookQuestionToQuestionnaire = "INSERT INTO questionnair_question (`id_questionnair`, `id_question`) VALUES ('$questionnaireID', '$questionID');";
- if(!mysqli_query($connection, $queryHookQuestionToQuestionnaire)) {
- http_response_code(400);
- die("Error: Couldn't hook question to questionnaire (Question: '".$questionPremises[$i]."')<br>".mysqli_error($connection)."<br>Query: $queryHookQuestionToQuestionnaire");
- }
-
- }
-
-
-
-
-
-
- }
-
-
-
- ?>
|