· 8 years ago · May 03, 2018, 07:26 AM
1<?php
2 session_start();
3 // Required files
4 require_once '../php/logOut.php';
5 require_once '../php/redirections.php';
6 require_once '../php/passwordGenerator.php';
7 require_once '../php/printDataProcess.php';
8 // Checking the session
9 if(!isset($_SESSION['userSession'])){
10 header("Location: ../index.php");
11 }
12 // Checking the session
13 if (!isset($_SESSION['created'])) {
14 $_SESSION['created'] = time();
15 } else if (time() - $_SESSION['created'] > 3600) {
16 // session started more than 1 hour ago
17 session_regenerate_id(true); // change session ID for the current session and invalidate old session ID
18 $_SESSION['created'] = time(); // update creation time
19 logOut();
20 }
21
22 if (isset($_GET['logOut'])) {
23 logOut();
24 }
25?>
26<!DOCTYPE html>
27<html lang="en">
28<html lang="en">
29 <head>
30 <meta charset="UTF-8">
31 <meta name="viewport" content="width=device-width, initial-scale=1.0">
32 <meta http-equiv="X-UA-Compatible" content="ie=edge">
33 <meta charset="utf-8">
34 <!-- CSS imports -->
35 <link rel="stylesheet" href="../css/main.css" />
36 <!-- JQuery include -->
37 <script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script>
38 <script type="text/javascript" src="../js/obtainFormData.js"></script>
39 <script type="text/javascript" src="../js/aditionalCVFormData.js"></script>
40 <script type="text/javascript" src="../js/addCVLanguages.js"></script>
41 <script type="text/javascript" src="../js/addStudies.js"></script>
42 <script type="text/javascript" src="../js/addExperience.js"></script>
43 <script type="text/javascript" src="../js/addInterview.js"></script>
44 <script type="text/javascript" src="../js/addRecomendationLetter.js"></script>
45 <script type="text/javascript" src="../js/addAditionalFiles.js"></script>
46 <!-- <script type="text/javascript" src="../js/checkMail.js"></script> -->
47 <title>Modify Resume</title>
48 </head>
49 <body>
50 <!-- Navigation Bar content -->
51 <?php
52 $userListHandler = PrintDataHandler::getInstance();
53 $userListHandler->printNavBar($_SESSION["userSession"]["level"]);
54 if(isset($_SESSION["addingResume"]["resumeId"])){
55 // If we got a resume id, we will call the data
56 echo "<script type='text/javascript'>obtainFormData(".$_SESSION["addingResume"]["resumeId"].")</script>";
57 }
58 ?>
59 <!-- Body content -->
60 <div class="bodyContainer">
61 <div class="formContainer cvModifyDataForm">
62 <p class="formTitle">Modify resume</p>
63 <form id="cvModifyDataForm" method="post" enctype='multipart/form-data'>
64 <div class="formDataContainer">
65 <div class="personalDataCategory"><h2 class="categoryTitle">Initial data</h4>
66 <div id="initialFormError"><!-- Error will be shown here ! --></div>
67 <!-- INITIAL DATA -->
68 <fieldset>
69 <label for="cvName" class="leftLabelText"><span class="labelText">Name</span></label>
70 <label for="surname1" class="centerLabelText"><span class="labelText">Surname 1</span></label>
71 <label for="surname2" class="rightLabelText"><span class="labelText">Surname 2</span></label>
72
73 <input type="text" class="leftInput" id="cvName" placeholder="Name" name="cvName" minlength="2" maxlength="100" value=''>
74 <input type="text" class='formInputLeft centerInput' id="surname1" placeholder="Surname 1" name="surname1" minlength="2" maxlength="100" value=''>
75 <input type="text" class="rightInput" id="surname2" placeholder="Surname 2" name="surname2" minlength="2" maxlength="100" value=''>
76
77 <label for="phone1" class="leftLabelText"><span class="labelText">Phone number</span></label>
78 <label for="phone2" class="centerLabelText"><span class="labelText">Phone number 2</span></label>
79 <label for="birthdate" class="rightLabelText"><span class="labelText">Birthdate</span></label>
80
81 <input type="number" class="leftInput" placeholder="phone" id="phone1" name="phone1" minlength="2" value=''>
82 <input type="number" class="centerInput" placeholder="phone" id="phone2" name="phone2" minlength="2" autocapitalize="off" value=''>
83 <input type="date" class="rightInput" id="birthdate" id="birthDate" name="birthdate" value=''>
84
85 <label for="address" class="leftLabelText halfWidth"><span class="labelText">Address</span></label>
86 <label for="cvMail" class="rightLabelText halfWidth"><span class="labelText">Email</span></label>
87
88 <input type="text" class="leftInput halfWidth" placeholder="address" id="address" name="address" minlength="10" maxlength="300" autocapitalize="off" value=''>
89 <input type="email" class="rightInput halfWidth"placeholder="Enter email" id="cvMail" name="cvMail" autocapitalize="off" value=''>
90 </fieldset>
91 </div>
92 <!-- ADITIONAL DATA -->
93 <div class="aditionalCVCategory" id="aditionalCVDataForm"><h2 class="categoryTitle">Aditional data</h4>
94 <fieldset>
95 <label for="maritalStatus" class='labelText leftLabelText'>Marital status<br></label>
96 <label class='labelText centerLabelText'>Driving license<br></label>
97 <label class='labelText rightLabelText'>Skills<br></label>
98 <div class="inputGroupLeft">
99 <label class=""><input type="radio" class="formRadioInputs" name="maritalStatus" value='Single'>Single<br></label>
100 <label class=""><input type="radio" class="formRadioInputs" name="maritalStatus" value='Married'>Married<br></label>
101 <label class=""><input type="radio" class="formRadioInputs" name="maritalStatus" value='Divorced'>Divorced<br></label>
102 <label class=""><input type="radio" class="formRadioInputs" name="maritalStatus" value='Widowed'>Widowed<br></label>
103 </div>
104 <div class="inputGroupMiddle">
105 <label><input type="checkbox" class="formCheckInputs" style="margin-left:0 !important" name="drivingLicenseA" value="1">A</label>
106 <label><input type="checkbox" class="formCheckInputs" name="drivingLicenseB" value="1">B</label>
107 <label><input type="checkbox" class="formCheckInputs" name="drivingLicenseC" value="1">C</label>
108 <label><input type="checkbox" class="formCheckInputs" name="drivingLicenseD" value="1">D<br></label>
109 </div>
110 <div class="inputGroupRight">
111 <label><input type="checkbox" class="formCheckInputs" name="skNav" value="1">NAV</label>
112 <label><input type="checkbox" class="formCheckInputs" name="skSap" value="1">SAP</label>
113 <label><input type="checkbox" class="formCheckInputs" name="skA3" value="1">A3</label>
114 <label><input type="checkbox" class="formCheckInputs" name="skOffice" value="1">Office<br></label>
115 </div>
116
117 <div class="lastInputs">
118 <label for="salarialExpectatives" class="leftLabelText"><span class="labelText">Salarial Expectatives</span></label>
119 <label for="childrenNumber" class="centerLabelText"><span class="labelText">Children number</span></label>
120 <label for="role" class='labelText rightLabelText'>Department that will apply to</label>
121
122 <input type="number" class="leftInput" id="salarialExpectatives" min="0" step="any" name="salarialExpectatives">
123 <input type="number" class="centerInput" id="childrenNumber" min="0" name="childrenNumber" autocomplete="off">
124 <?php
125 $userListHandler = PrintDataHandler::getInstance();
126 $userListHandler->printDepartmentSelect();
127 ?>
128 </div>
129 </fieldset>
130 </div>
131 <!-- LANGUAGES -->
132 <div class="languagesCategory" id="cvLanguagesForm"><h2 class="categoryTitle">Languages</h4>
133 <fieldset>
134 <div class="leftDataContent">
135 <?php
136 $userListHandler = PrintDataHandler::getInstance();
137 $userListHandler->printLanguageSelect();
138 ?>
139 <div class="inputGroupHalfRight">
140 <label for="languageLevel" class='labelText'>Level<br></label>
141 <label><input type="radio" class="formRadioInputs" name="languageLevel" value="1" >Basic</label>
142 <label><input type="radio" class="formRadioInputs" style="margin-left:10px" name="languageLevel" value="2" >Intermedian</label>
143 <label><input type="radio" class="formRadioInputs" style="margin-left:10px" name="languageLevel" value="3" >Expert</label>
144 <label><input type="radio" class="formRadioInputs" style="margin-left:10px" name="languageLevel" value="4" >Bilingual</label>
145 </div>
146 </div>
147 <div class="rightAddButtonContainer">
148 <button class="addButton" id="btnAddLanguage" style="margin-top:0" name="btnAddLanguage"><img class="imgAddButton" src="../resources/icons/add.png" alt="add image"></button>
149 </div>
150 </fieldset>
151 <div class="languagesContainer">
152 <h3 class='currentLanguagesTitle'> Current Languages </h3>
153 <div id="languageDataContainer"></div>
154 </div>
155 </div>
156 <!-- STUDIES -->
157 <div class="studiesCategory" id="cvStudiesForm"><h2 class="categoryTitle">Studies</h4>
158 <fieldset>
159 <div class="leftDataContent">
160 <label for="cvDegree" class="leftLabelText halfWidth"><span class="labelText">Degree</span></label>
161 <label for="cvAcademy" class="rightLabelText halfWidth"><span class="labelText">Academy</span></label>
162
163 <input class="leftInput halfWidth" type="text" placeholder="degree" name="cvDegree" minlength="2" maxlength="100">
164 <input class="rightInput halfWidth" type="text" placeholder="Academy" name="cvAcademy" minlength="2" maxlength="200">
165
166 <label class="leftLabelText smallSizeLabel" for="cvStartingYear"><span class="labelText">Starting year</span></label>
167 <label class="centerLabelText smallSizeLabel" for="cvEndingYear"><span class="labelText">End year</span></label>
168 <label class="rightLabelText largeLabel" for="cvStudiesFile"><span class="labelText">Studies files</span></label>
169
170 <select name="cvStartingYear" class="leftInput smallSizeInput" id="cvStartingYear">
171 <?php for ($year=1900; $year <= 2018; $year++): ?>
172 <option value="<?php echo $year;?>"><?php echo $year;?></option>
173 <?php endfor; ?>
174 </select>
175 <select name="cvEndingYear" class="centerInput smallSizeInput" id="cvStartingYear">
176 <?php for ($year=1900; $year <= 2018; $year++): ?>
177 <option value="<?php echo $year;?>"><?php echo $year;?></option>
178 <?php endfor; ?>
179 </select>
180 <input type="file" id="cvStudiesFile" class="rightInput largeInput" name='cvStudiesFile' />
181
182 </div>
183 <div class="rightAddButtonContainer">
184 <button class="addButton" id="btnAddStudy" name="btnAddStudy"><img class="imgAddButton" src="../resources/icons/add.png" alt="add image"></button>
185 </div>
186 </fieldset>
187 <div class="studiesContainer">
188 <h3 class='studiesContainerTitle'> Current Studies </h3>
189 <div id="studiesDataContainer"></div>
190 </div>
191 </div>
192 <!-- Experience -->
193 <div class="experienceCategory"><h2 class="categoryTitle">Experience</h4>
194 <fieldset>
195 <div class="leftDataContent">
196 <label for="cvCompany" class="leftLabelText"><span class="labelText">Company</span></label>
197 <label for="cvWorkTitle" class="centerLabelText"><span class="labelText">Work title</span></label>
198 <label for="cvMainTask" class="rightLabelText"><span class="labelText">Main task</span></label>
199
200 <input type="text" class="leftInput" placeholder="Company" name="cvCompany" minlength="2" maxlength="100" value="">
201 <input type="text" class="centerInput" placeholder="Academy" name="cvWorkTitle" minlength="2" maxlength="200" value="">
202 <input type="text" class="rightInput" placeholder="Main task" name="cvMainTask" minlength="2" maxlength="200" value="">
203
204 <label class="leftLabelText halfWidth" for="cvExperienceStartingYear"><span class="labelText">Starting year</span></label>
205 <label class="centerLabelText halfWidth" for="cvExperienceEndingYear"><span class="labelText">End year</span></label>
206
207 <select name="cvExperienceStartingYear" class="leftInput halfWidth" id="cvExperienceStartingYear" value="">
208 <?php for ($year=1900; $year <= 2018; $year++): ?>
209 <option value="<?php echo $year;?>"><?php echo $year;?></option>
210 <?php endfor; ?>
211 </select>
212 <select name="cvExperienceEndingYear" class="centerInput halfWidth" id="cvExperienceEndingYear" value="">
213 <?php for ($year=1900; $year <= 2018; $year++): ?>
214 <option value="<?php echo $year;?>"><?php echo $year;?></option>
215 <?php endfor; ?>
216 </select>
217 </div>
218 <div class="rightAddButtonContainer">
219 <button class="addButton" id="btnAddExperience" name="btnAddExperience"><img class="imgAddButton" src="../resources/icons/add.png" alt="add image"></button>
220 </div>
221 </fieldset>
222 <div class="experienceContainer">
223 <h3 class='experienceContainerTitle'> Current experience </h3>
224 <div id="experienceDataContainer"></div>
225 </div>
226 </div>
227 <!-- Interviews -->
228 <div class="interviewsCategory"><h2 class="categoryTitle">Interviews</h4>
229 <fieldset>
230 <div class="leftDataContent">
231 <label for="cvInterviewDate" class="leftLabelText halfWidth"><span class="labelText">Date</span></label>
232 <label for="cvInterviewComments" class="rightLabelText halfWidth"><span class="labelText">Comments</span></label>
233
234 <input type="date" class="leftInput halfWidth" placeholder="Company" name="cvInterviewDate" id='cvInterviewDate' value=''>
235 <textarea class="cvFormTextArea rightInput halfWidth" name="cvInterviewComments" id='cvInterviewComments' value=''>Enter the comments here... </textarea>
236 </div>
237 <div class="rightAddButtonContainer">
238 <button class="addButton" id="btnAddInterview" name="btnAddInterview"><img class="imgAddButton" src="../resources/icons/add.png" alt="add image"></button>
239 </div>
240 </fieldset>
241 <div class="interviewsContainer">
242 <h3 class='interviewsContainerTitle'> Current interviews </h3>
243 <div id="interviewDataContainer"></div>
244 </div>
245 </div>
246 <!-- Recomendation letter -->
247 <div class="recomendationLetterCategory"><h2 class="categoryTitle">Recomendation letter</h4>
248 <fieldset>
249 <div class="leftDataContent">
250 <label for="cvRecomendationCompany" class="leftLabelText halfWidth"><span class="labelText">Company</span></label>
251 <label for="cvRecomendationJobTitle" class="rightLabelText halfWidth"><span class="labelText">Job title</span></label>
252
253 <input type="text" class="leftInput halfWidth" placeholder="Company" id='cvRecomendationCompany' value="" name="cvRecomendationCompany" minlength="2" maxlength="100">
254 <input type="text" class="rightInput halfWidth" placeholder="Job Title" id="cvRecomendationJobTitle" value="" name="cvRecomendationJobTitle" minlength="2" maxlength="100">
255
256 <label for="cvRecomendationMainTask" class="leftLabelText halfWidth"><span class="labelText">Main task</span></label>
257 <label for="cvRecomendationFilePath" class="rightLabelText halfWidth"><span class="labelText">File path</span></label>
258
259 <input type="text" class="leftInput halfWidth" placeholder="Main Task" id="cvRecomendationMainTask" value="" name="cvRecomendationMainTask" minlength="2" maxlength="100">
260 <input type="file" class="rightInput halfWidth" name="cvRecomendationFilePath" id="cvRecomendationFilePath">
261
262 </div>
263 <div class="rightAddButtonContainer">
264 <button class="addButton" id="btnAddRecomendationLetter" name="btnAddRecomendationLetter"><img class="imgAddButton" src="../resources/icons/add.png" alt="add image"></button>
265 </div>
266 </fieldset>
267 <div class="recomendationLettersContainer">
268 <h3 class='recomendationLettersContainerTitle'> Current recomendation letters </h3>
269 <div id="recomendationLetterDataContainer"></div>
270 </div>
271 </div>
272 <!-- Aditional files -->
273 <div class="cvFileCategory"><h2 class="categoryTitle">Aditional files</h4>
274 <fieldset>
275 <div class="leftDataContent">
276 <label for="fileType" class="leftLabelText halfWidth"><span class="labelText">File Type</span></label>
277 <label for="aditionalFile" class="rightLabelText halfWidth"><span class="labelText">Select the file</span></label>
278 <div class="inputGroupLeft halfWidth">
279 <label class=""><input type="radio" class="formRadioInputs" name="fileType" value='CV'>CV<br></label>
280 <label class=""><input type="radio" class="formRadioInputs" name="fileType" value='Introducing letter'>Introducing letter<br></label>
281 </div>
282 <input type="file" class="rightInput halfWidth" id="aditionalFile" name="aditionalFile">
283 </div>
284 <div class="rightAddButtonContainer">
285 <button class="addButton" id="btnAdditionalFile" name="btnAdditionalFile"><img class="imgAddButton" src="../resources/icons/add.png" alt="add image"></button>
286 </div>
287 </fieldset>
288 <div class="aditionalFilesContainer">
289 <h3 class='aditionalFilesContainerTitle'> Current aditional files </h3>
290 <div id="aditionalFilesDataContainer"></div>
291 </div>
292 </div>
293 </div>
294 <!-- Final submit -->
295 <button type="Submit" class="modifyCvButton" name="modifyCvButton">Modify Cv</button>
296 </form>
297 </div>
298 </div>
299
300 </div>
301 <?php
302 //$userListHandler->printFooter();
303 ?>
304 </body>
305</html>
306
307$(document).ready(function() {
308 $('#btnAddLanguage').click(function(e) {
309 e.preventDefault();
310 var data = $(this).closest('fieldset').serialize();
311 $.ajax({
312 type: 'POST',
313 url: '../php/addCVLanguagesProcess.php',
314 data: data,
315 dataType: 'json',
316 success: function(response) {
317 if (response.status === 'ok') {
318 var level = "";
319 if(response.body.level === '1'){
320 level = "Basic";
321 }else if (response.body.level === '2') {
322 level = "Intermedian";
323 }else if(response.body.level === '3'){
324 level = "Expert";
325 }else if(response.body.level === '4'){
326 level = "Bilingual";
327 }else{
328 level = "Basic";
329 }
330 var buttons = $("<a class='btnDeleteLanguage' href='modifyResume.php&action=deleteLanguage&languageId="
331 + response.body.idInserted +
332 "'><img class='formsActionIcons' src='../resources/icons/delete.png'></a>");
333
334 var name = $("<p class='languageTitle'>"
335 + response.body.name + " - " + level +"</p>");
336 var languageContainer = $("<div class='data'></div>");
337 languageContainer.append(name, buttons);
338 $('#languageDataContainer').append(languageContainer);
339 $('#cvStudiesForm').show();
340 }
341 },
342 });
343 return false;
344 });
345});
346
347<?php
348 // First of all, we must check if the session exists
349 session_start();
350 $response = array();
351 if(isset($_SESSION["addingResume"]["resumeId"])){
352 addCVLanguage($_SESSION["addingResume"]["resumeId"]);
353 }
354
355 function addCVLanguage($resumeId){
356 //
357 // // In this case, we will update the CV table
358 include('cvDataHandler.php');
359 // Check if we have extra data using Null coalescing operator
360 // If is set and not null, we will assing the data to the var else, we will place a default value
361 $idLanguage = $_POST['cvLanguageSelect'] ?? 27;
362 $level = $_POST['languageLevel'] ?? 1;
363 $language = getLanguage($idLanguage, $level);
364 $language["level"] = $level;
365 $language["resumeId"] = $resumeId;
366 $dataHandler = CvDataHandler::getInstance();
367 $dataHandler->addLanguage($language);
368 }
369
370 function getLanguage($idLanguage, $level){
371 // Obtain the last inserted languaged
372 include('dbConfig.php');
373 $sql = "SELECT id, name, `iso_639-1` FROM languages WHERE id = $idLanguage";
374 if ($result = $mysqli->query($sql)) {
375 if($row = $result->fetch_assoc()){
376 return $row;
377 }
378 }
379 $mysqli->close();
380 }
381 ?>
382
383// Function that will handle Languages
384 public function addLanguage($language){
385 include("dbConfig.php");
386 $sql = $mysqli->prepare("INSERT INTO `cv_languages` (`id`, `idLanguage`, `idCv`, `level`)
387 VALUES(NULL,?,?,?);");
388
389 $result = $sql->bind_param("iii", $language["id"], $language["resumeId"], $language["level"]);
390 if ($result == false) {
391 $this->printResponse("Error while trying to create the SQL", $language);
392 }else{
393 $result = $sql->execute();
394 if ($result == false) {
395 $this->printResponse("Error while trying to execute the SQL", $language);
396 }else{
397 // All worked fine
398 $language["idInserted"] = $mysqli->insert_id;
399 $this->printResponse("ok", $language);
400 }
401 }
402 $mysqli->close();
403 }
404
405// Function that will print a Response
406public function printResponse($message,$body){
407 $response = array();
408 $response["status"] = $message;
409 $response["body"] = $body;
410 header('Content-type: application/json; charset=utf-8');
411 print_r(json_encode($response));
412}