From 0aa62ee725cfb9282ecc884f27ff10232483307e Mon Sep 17 00:00:00 2001
From: Piotr Jakubiak <2021323@stud.hs-mannheim.de>
Date: Mon, 11 Nov 2024 09:30:14 +0100
Subject: [PATCH 1/3] gui: Add star-rating & alerts, meta tag, change
fetchSeconarySkills.js, correct thymeleaf template
---
.gitignore | 3 +
src/main/resources/config/application.yaml | 2 +-
src/main/resources/static/css/core/alerts.css | 57 ++++++
.../resources/static/css/skills/skills.css | 8 -
.../static/css/skills/starRating.css | 85 ++++++++
.../static/js/skills/fetchSecondarySkills.js | 193 ++++++++++++++++--
.../resources/static/js/skills/starRating.js | 103 ++++++++++
.../resources/templates/pages/skills/add.html | 67 ++++--
.../templates/pages/skills/create.html | 2 +-
9 files changed, 475 insertions(+), 45 deletions(-)
create mode 100644 src/main/resources/static/css/core/alerts.css
create mode 100644 src/main/resources/static/css/skills/starRating.css
create mode 100644 src/main/resources/static/js/skills/starRating.js
diff --git a/.gitignore b/.gitignore
index 8186e8d..0a305ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,3 +39,6 @@ build/
### Database files ###
*.db
*.mv.db
+
+### Log files ###
+data/maradona/dbfile.mv.db
diff --git a/src/main/resources/config/application.yaml b/src/main/resources/config/application.yaml
index ae2e076..1c11ed0 100644
--- a/src/main/resources/config/application.yaml
+++ b/src/main/resources/config/application.yaml
@@ -26,7 +26,7 @@ spring:
prefix: "classpath:/templates/" # Path where Thymeleaf templates are stored
suffix: ".html" # File extension for Thymeleaf templates
cache: false # Disable caching for development (set to true in production)
- mode: "HTML5" # Template mode; Thymeleaf parses the templates as HTML5
+ mode: "HTML" # Template mode; Thymeleaf parses the templates as HTML5
encoding: "UTF-8" # Character encoding for the templates
servlet:
content-type: "text/html" # Content type for the Thymeleaf-rendered HTML responses
diff --git a/src/main/resources/static/css/core/alerts.css b/src/main/resources/static/css/core/alerts.css
new file mode 100644
index 0000000..86992c9
--- /dev/null
+++ b/src/main/resources/static/css/core/alerts.css
@@ -0,0 +1,57 @@
+.alert {
+ padding: 15px;
+ margin-top: 10px;
+ border-radius: 4px;
+ font-size: 14px;
+ font-weight: 500;
+ color: var(--cosmic-dark-darker);
+ display: inline-block;
+ max-width: 100%;
+ animation: fadeInOut 5s ease-in-out;
+ opacity: 0;
+ transition: opacity 0.3s ease-in-out;
+}
+
+.alert.show {
+ opacity: 1;
+}
+
+/* Alert types */
+.alert-info {
+ background-color: #17a2b8;
+ border: 1px solid #17a2b8;
+}
+
+.alert-error {
+ background-color: var(--aurora-yellowgreen-lighter);
+ border: 1px solid var(--aurora-yellowgreen-lighter);
+}
+
+.alert-success {
+ background-color: #28a745;
+ border: 1px solid #28a745;
+}
+
+/* Fade animation */
+@keyframes fadeInOut {
+ 0%,
+ 100% {
+ opacity: 0;
+ }
+ 10%,
+ 90% {
+ opacity: 1;
+ }
+}
+
+/* Additional styling for improved visibility */
+.alert-icon {
+ margin-right: 8px;
+ font-size: 16px;
+ vertical-align: middle;
+}
+
+/* Additional spacing */
+.mt-2 {
+ margin-top: 10px;
+}
diff --git a/src/main/resources/static/css/skills/skills.css b/src/main/resources/static/css/skills/skills.css
index 4ff712b..1ef0b6b 100644
--- a/src/main/resources/static/css/skills/skills.css
+++ b/src/main/resources/static/css/skills/skills.css
@@ -65,11 +65,3 @@
.form-control::placeholder {
color: var(--cosmic-dark-dark);
}
-
-.star-filled {
- color: var(--aurora-yellowgreen-lighter);
-}
-
-.star-empty {
- color: var(--cosmic-dark-light) !important;
-}
diff --git a/src/main/resources/static/css/skills/starRating.css b/src/main/resources/static/css/skills/starRating.css
new file mode 100644
index 0000000..c6d23c5
--- /dev/null
+++ b/src/main/resources/static/css/skills/starRating.css
@@ -0,0 +1,85 @@
+.star-rating-container {
+ display: inline-block;
+ position: relative;
+ min-width: 300px;
+}
+
+.star-rating {
+ display: inline-block;
+}
+
+.star {
+ font-size: 24px;
+ cursor: pointer;
+ transition: all 0.2s ease;
+}
+
+.star i {
+ color: transparent;
+ -webkit-text-stroke: 1.5px var(--aurora-yellowgreen-lighter);
+}
+
+.star.active i {
+ color: var(--aurora-yellowgreen-lighter);
+ -webkit-text-stroke: 1px var(--aurora-yellowgreen-lighter);
+}
+
+.star:hover i {
+ color: var(--aurora-yellowgreen-lighter);
+ -webkit-text-stroke: 1px var(--aurora-yellowgreen-lighter);
+}
+
+.rating-description {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ min-width: 300px;
+ width: max-content;
+ max-width: 400px;
+ margin-top: 8px;
+ padding: 10px 15px;
+ background-color: var(--starlight-white-lighter);
+ border: 1px solid var(--starlight-white-dark);
+ border-radius: 4px;
+ font-size: 14px;
+ line-height: 1.5;
+ color: var(--cosmic-dark-medium);
+ opacity: 0;
+ visibility: hidden;
+ transition: opacity 0.2s, visibility 0.2s;
+ z-index: 1000;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.rating-description.visible {
+ opacity: 1;
+ visibility: visible;
+}
+
+.star + .star {
+ margin-left: 4px;
+}
+
+.form-group label + .star-rating-container {
+ margin-left: 8px;
+ margin-bottom: 40px;
+}
+
+.form-group input[type="hidden"] {
+ display: none;
+}
+
+@media (max-width: 768px) {
+ .rating-description {
+ position: relative;
+ width: 100%;
+ max-width: none;
+ margin-top: 8px;
+ }
+
+ .form-group label + .star-rating-container {
+ margin-left: 0;
+ display: block;
+ margin-top: 8px;
+ }
+}
diff --git a/src/main/resources/static/js/skills/fetchSecondarySkills.js b/src/main/resources/static/js/skills/fetchSecondarySkills.js
index 57d786d..2b30f59 100644
--- a/src/main/resources/static/js/skills/fetchSecondarySkills.js
+++ b/src/main/resources/static/js/skills/fetchSecondarySkills.js
@@ -1,18 +1,175 @@
-document.getElementById("primarySkill").addEventListener("change", function () {
- var primarySkillId = this.value;
- fetch("/skills/secondary-skills?primarySkillId=" + primarySkillId)
- .then((response) => response.json())
- .then((data) => {
- console.log("Fetch response data:", data);
- var secondarySkillSelect = document.getElementById("secondarySkill");
- secondarySkillSelect.innerHTML =
- '';
- data.forEach(function (secondarySkill) {
- var option = document.createElement("option");
- option.value = secondarySkill.ssid;
- option.text = secondarySkill.description;
- secondarySkillSelect.add(option);
- });
- })
- .catch((error) => console.error("Error fetching secondary skills:", error));
-});
+/**
+ * @fileoverview Handles the dynamic population of secondary skills dropdown based on primary skill selection
+ * @version 4.1.0
+ */
+
+/**
+ * @typedef {Object} SecondarySkill
+ * @property {number} ssid - The secondary skill ID
+ * @property {string} description - The description of the secondary skill
+ */
+
+/**
+ * Creates and returns an option element for the select dropdown
+ * @param {string} text - The text to display in the option
+ * @param {boolean} [disabled=false] - Whether the option should be disabled
+ * @param {boolean} [selected=false] - Whether the option should be selected
+ * @param {string|number} [value=""] - The value for the option
+ * @returns {HTMLOptionElement} The created option element
+ */
+function createOption(text, disabled = false, selected = false, value = "") {
+ const option = document.createElement("option");
+ option.textContent = text;
+ option.disabled = disabled;
+ option.selected = selected;
+ option.value = value;
+ return option;
+}
+
+/**
+ * Shows a temporary message below the secondary skills dropdown
+ * @param {string} message - The message to display
+ * @param {string} type - The type of alert (info, error, success, etc.)
+ * @param {number} [duration=5000] - How long to show the message in milliseconds
+ * @param {HTMLElement} container - The element to append the message to
+ */
+function showTemporaryMessage(message, type, duration = 5000, container) {
+ const messageElement = document.createElement("div");
+ messageElement.className = `alert alert-${type} mt-2`;
+ messageElement.textContent = message;
+ container.appendChild(messageElement);
+
+ setTimeout(() => {
+ messageElement.classList.add("show");
+ }, 10);
+
+ setTimeout(() => {
+ messageElement.classList.remove("show");
+ setTimeout(() => {
+ if (messageElement.parentNode) {
+ messageElement.parentNode.removeChild(messageElement);
+ }
+ });
+ }, duration);
+}
+
+/**
+ * Updates the secondary skills dropdown based on the API response
+ * @param {SecondarySkill[]} secondarySkills - Array of secondary skills from the API
+ * @param {HTMLSelectElement} selectElement - The secondary skills select element
+ */
+function updateSecondarySkillsDropdown(secondarySkills, selectElement) {
+ selectElement.innerHTML = ""; // Clear existing options
+
+ if (!secondarySkills || secondarySkills.length === 0) {
+ selectElement.appendChild(
+ createOption("No secondary skills available", true, true)
+ );
+ selectElement.disabled = true;
+
+ showTemporaryMessage(
+ "There are no secondary skills available for this primary skill. Please contact an administrator to add some.",
+ "info",
+ 5000,
+ selectElement.parentNode
+ );
+ return;
+ }
+
+ selectElement.appendChild(
+ createOption("Select a secondary skill", true, true)
+ );
+
+ secondarySkills.forEach((skill) => {
+ selectElement.appendChild(
+ createOption(skill.description, false, false, skill.ssid)
+ );
+ });
+
+ selectElement.disabled = false;
+}
+
+/**
+ * Initializes the event listeners and handlers for the skills dropdowns
+ * This is the main function that sets up all the functionality
+ */
+function initializeSkillsDropdowns() {
+ const primarySkillSelect = document.getElementById("primarySkill");
+ const secondarySkillSelect = document.getElementById("secondarySkill");
+
+ if (!primarySkillSelect || !secondarySkillSelect) {
+ console.error("Required select elements not found");
+ return;
+ }
+
+ secondarySkillSelect.disabled = true;
+
+ primarySkillSelect.addEventListener("change", async function () {
+ const selectedPrimarySkillId = this.value;
+ secondarySkillSelect.innerHTML = "";
+ secondarySkillSelect.appendChild(
+ createOption("Select a secondary skill", true, true)
+ );
+
+ if (!selectedPrimarySkillId) {
+ secondarySkillSelect.disabled = true;
+ return;
+ }
+
+ secondarySkillSelect.innerHTML = "";
+ secondarySkillSelect.appendChild(createOption("Loading...", true, true));
+
+ try {
+ const response = await fetch(
+ `/api/skills/secondary/${selectedPrimarySkillId}`,
+ {
+ method: "GET",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ }
+ );
+
+ if (!response.ok) {
+ const errorMessage = `Server returned ${response.status}: ${response.statusText}`;
+ throw new Error(errorMessage);
+ }
+
+ const secondarySkills = await response.json();
+ updateSecondarySkillsDropdown(secondarySkills, secondarySkillSelect);
+ } catch (error) {
+ console.error("Error fetching secondary skills:", error);
+ secondarySkillSelect.innerHTML = "";
+ secondarySkillSelect.appendChild(
+ createOption("Error loading secondary skills", true, true)
+ );
+ secondarySkillSelect.disabled = true;
+
+ let userMessage = "";
+ if (error.name === "TypeError" && !window.navigator.onLine) {
+ userMessage =
+ "No internet connection. Please check your network and try again.";
+ } else if (error.message.includes("Server returned 404")) {
+ userMessage =
+ "The selected primary skill was not found. Please refresh and try again.";
+ } else if (error.message.includes("Server returned 500")) {
+ userMessage =
+ "Server error occurred. Please try again in a few minutes.";
+ } else if (error.message.includes("Server returned 403")) {
+ userMessage =
+ "You don't have permission to access these skills. Please contact support.";
+ } else {
+ userMessage = `Failed to load secondary skills: ${error.message}`;
+ }
+
+ showTemporaryMessage(
+ userMessage,
+ "error",
+ 5000,
+ secondarySkillSelect.parentNode
+ );
+ }
+ });
+}
+
+document.addEventListener("DOMContentLoaded", initializeSkillsDropdowns);
diff --git a/src/main/resources/static/js/skills/starRating.js b/src/main/resources/static/js/skills/starRating.js
new file mode 100644
index 0000000..f847bed
--- /dev/null
+++ b/src/main/resources/static/js/skills/starRating.js
@@ -0,0 +1,103 @@
+/***
+ * @fileoverview Star Rating Component - Initializes and manages an interactive star rating system
+ * with hover effects, click handling, and dynamic descriptions.
+ * @version 2.2.0
+ */
+document.addEventListener("DOMContentLoaded", function () {
+ const stars = document.querySelectorAll(".star");
+ const ratingInput = document.getElementById("level");
+ const descriptionElement = document.querySelector(".rating-description");
+ const initialValue = parseInt(ratingInput.value) || 0;
+ updateStars(initialValue);
+
+ stars.forEach((star) => {
+ /**
+ * Handle click events on stars
+ * Updates the rating value and displays the corresponding description
+ */
+ star.addEventListener("click", function () {
+ const value = parseInt(this.dataset.value);
+ ratingInput.value = value;
+ updateStars(value);
+ showDescription(this.dataset.description);
+ });
+
+ /**
+ * Handle mouseenter events on stars
+ * Temporarily highlights stars and shows description on hover
+ */
+ star.addEventListener("mouseenter", function () {
+ const value = parseInt(this.dataset.value);
+ highlightStars(value);
+ showDescription(this.dataset.description);
+ });
+ });
+
+ /**
+ * Handle mouseleave events on the entire star rating container
+ * Resets the display to the current selected rating
+ */
+ document
+ .querySelector(".star-rating")
+ .addEventListener("mouseleave", function () {
+ const currentValue = parseInt(ratingInput.value) || 0;
+ updateStars(currentValue);
+ if (currentValue > 0) {
+ const selectedStar = document.querySelector(
+ `.star[data-value="${currentValue}"]`
+ );
+ showDescription(selectedStar.dataset.description);
+ } else {
+ hideDescription();
+ }
+ });
+
+ /**
+ * Updates the visual state of stars based on a value
+ * @param {number} value - The rating value to display (1-5)
+ */
+ function updateStars(value) {
+ stars.forEach((star) => {
+ const starValue = parseInt(star.dataset.value);
+ if (starValue <= value) {
+ star.classList.add("active");
+ } else {
+ star.classList.remove("active");
+ }
+ });
+ }
+
+ /**
+ * Temporarily highlights stars up to a specific value
+ * Used for hover effects
+ * @param {number} value - The rating value to highlight (1-5)
+ */
+ function highlightStars(value) {
+ stars.forEach((star) => {
+ const starValue = parseInt(star.dataset.value);
+ if (starValue <= value) {
+ star.classList.add("active");
+ } else {
+ star.classList.remove("active");
+ }
+ });
+ }
+
+ /**
+ * Displays a description for the current rating
+ * @param {string} description - The description text to display
+ */
+ function showDescription(description) {
+ if (description) {
+ descriptionElement.textContent = description;
+ descriptionElement.classList.add("visible");
+ }
+ }
+
+ /**
+ * Hides the rating description
+ */
+ function hideDescription() {
+ descriptionElement.classList.remove("visible");
+ }
+});
diff --git a/src/main/resources/templates/pages/skills/add.html b/src/main/resources/templates/pages/skills/add.html
index cd08989..1b4088b 100644
--- a/src/main/resources/templates/pages/skills/add.html
+++ b/src/main/resources/templates/pages/skills/add.html
@@ -1,16 +1,22 @@
-
+
Add Skill
+
+
+
-
+
Add Skill
-
@@ -54,25 +59,52 @@
-
-
+
-
-
+ value="1"
+ />
-
@@ -81,5 +113,6 @@
+
diff --git a/src/main/resources/templates/pages/skills/create.html b/src/main/resources/templates/pages/skills/create.html
index 13a5716..62ebf2a 100644
--- a/src/main/resources/templates/pages/skills/create.html
+++ b/src/main/resources/templates/pages/skills/create.html
@@ -1,7 +1,7 @@
-
+
Create Skill
From 5258db4300f713fe04ecea0123c48131fc26d853 Mon Sep 17 00:00:00 2001
From: Lunix-420
Date: Mon, 11 Nov 2024 11:38:58 +0100
Subject: [PATCH 2/3] refactor: Rename all IDs
---
.../controllers/api/EmployeeController.java | 47 ++++++++++++-------
.../api/FormOfAdressController.java | 20 ++++----
.../api/PrimarySkillController.java | 16 +++----
.../controllers/api/ProjectController.java | 22 ++++-----
.../api/SecondarySkillController.java | 18 +++----
.../backend/controllers/page/SkillsPage.java | 2 +-
.../maradona/backend/dto/SkillPrototype.java | 20 ++++----
.../maradona/backend/entities/Employee.java | 2 +-
.../entities/EmployeeSecondarySkill.java | 12 ++---
.../backend/entities/FormOfAddress.java | 10 ++--
.../maradona/backend/entities/Project.java | 10 +++-
.../EmployeeSecondarySkillRepository.java | 2 -
.../backend/services/EmployeeService.java | 38 ++++++++-------
.../services/FormOfAddressService.java | 31 +++++++-----
.../backend/services/PrimarySkillService.java | 17 +++++--
.../backend/services/ProjectService.java | 21 +++++++--
.../services/SecondarySkillService.java | 18 ++++---
.../backend/services/SkillService.java | 23 ++++-----
18 files changed, 192 insertions(+), 137 deletions(-)
diff --git a/src/main/java/com/maradona/backend/controllers/api/EmployeeController.java b/src/main/java/com/maradona/backend/controllers/api/EmployeeController.java
index a9a3fb6..ade2817 100644
--- a/src/main/java/com/maradona/backend/controllers/api/EmployeeController.java
+++ b/src/main/java/com/maradona/backend/controllers/api/EmployeeController.java
@@ -21,6 +21,7 @@ import com.maradona.backend.services.EmployeeService;
*
* Endpoints:
* - GET /api/employee
+ * - GET /api/employee/{eid}
* - GET /api/employee/all
* - GET /api/employee/from-skill
* - GET /api/employee/skill/all
@@ -40,15 +41,29 @@ public class EmployeeController {
Long user = Long.valueOf(1);
/**
- * Returns a specific employee from the database.
+ * Returns the employee profile of the currently logged in user.
*
- * @param id The ID of the requested employee.
- * @return The employee with the requested ID.
+ * @return The employee profile of the currently logged in user.
* @see com.maradona.backend.entities.Employee
*/
@GetMapping({ "/", "" })
- public ResponseEntity get(@RequestParam Long id) {
- var employee = employeeService.getEmployeeById(id);
+ public ResponseEntity get() {
+ var employee = employeeService.getEmployeeByEid(user);
+ return employee
+ .map(ResponseEntity::ok)
+ .orElse(ResponseEntity.notFound().build());
+ }
+
+ /**
+ * Returns a specific employee from the database.
+ *
+ * @param eid The ID of the requested employee.
+ * @return The employee with the requested ID.
+ * @see com.maradona.backend.entities.Employee
+ */
+ @GetMapping("/{eid}")
+ public ResponseEntity get(@RequestParam Long eid) {
+ var employee = employeeService.getEmployeeByEid(eid);
return employee
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
@@ -68,15 +83,15 @@ public class EmployeeController {
/**
* Returns a list of employees for a given secondary skill and level.
*
- * @param skillId ID of the secondary skill
- * @param level Level of the secondary skill
+ * @param ssid ID of the secondary skill
+ * @param level Level of the secondary skill
* @return list of employees
* @see com.maradona.backend.entities.Employee
* @see com.maradona.backend.entities.SecondarySkill
*/
@GetMapping("/from-skill")
- public ResponseEntity> getFromSkill(@RequestParam Long skillId, @RequestParam Integer level) {
- return ResponseEntity.ok(employeeService.getEmployeesBySecondarySkill(skillId, level));
+ public ResponseEntity> getFromSkill(@RequestParam Long ssid, @RequestParam Integer level) {
+ return ResponseEntity.ok(employeeService.getEmployeesBySecondarySkill(ssid, level));
}
/**
@@ -97,30 +112,30 @@ public class EmployeeController {
/**
* Updates the level of a secondary skill in the user profile.
*
- * @param skillId ID of the secondary skill
- * @param level Level of the secondary skill
+ * @param ssid ID of the secondary skill
+ * @param level Level of the secondary skill
* @return HTTP status indicating the outcome of the operation
* @see com.maradona.backend.entities.Employee
* @see com.maradona.backend.entities.SecondarySkill
* @see com.maradona.backend.entities.EmployeeSecondarySkill
*/
@PutMapping("/skill/level")
- public ResponseEntity putSkillLevel(@RequestParam Long skillId, @RequestParam Integer level) {
- employeeService.updateSecondarySkillLevel(user, skillId, level);
+ public ResponseEntity putSkillLevel(@RequestParam Long ssid, @RequestParam Integer level) {
+ employeeService.updateSecondarySkillLevel(user, ssid, level);
return ResponseEntity.ok().build();
}
/**
* Removes a secondary skill from the user profile.
*
- * @param id The ID of the secondary skill to be removed
+ * @param ssid The ID of the secondary skill to be removed
* @return HTTP status indicating the outcome of the operation
* @see com.maradona.backend.entities.Employee
* @see com.maradona.backend.entities.SecondarySkill
*/
@DeleteMapping("/skill")
- public ResponseEntity delete(@RequestParam Long id) {
- employeeService.deleteSecondarySkillFromEmployee(user, id);
+ public ResponseEntity delete(@RequestParam Long ssid) {
+ employeeService.deleteSecondarySkillFromEmployee(user, ssid);
return ResponseEntity.noContent().build();
}
}
\ No newline at end of file
diff --git a/src/main/java/com/maradona/backend/controllers/api/FormOfAdressController.java b/src/main/java/com/maradona/backend/controllers/api/FormOfAdressController.java
index 7051ced..feffeef 100644
--- a/src/main/java/com/maradona/backend/controllers/api/FormOfAdressController.java
+++ b/src/main/java/com/maradona/backend/controllers/api/FormOfAdressController.java
@@ -37,13 +37,13 @@ class FormOfAdressController {
/**
* Returns the form of address with the given ID.
*
- * @param id The ID of the form of address to return.
+ * @param fid The ID of the form of address to return.
* @return The description of the form of address with the given ID.
* @see com.maradona.backend.entities.FormOfAddress
*/
@GetMapping({ "/", "" })
- public ResponseEntity getFormOfAdress(@RequestParam Long id) {
- return formOfAdressService.getFormOfAddressById(id)
+ public ResponseEntity getFormOfAdress(@RequestParam Long fid) {
+ return formOfAdressService.getFormOfAddressByFid(fid)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@@ -78,14 +78,14 @@ class FormOfAdressController {
/**
* Updates the description of a form of address.
*
- * @param id The ID of the form of address to update.
+ * @param fid The ID of the form of address to update.
* @param description The new description of the form of address.
* @return The updated form of address.
* @see com.maradona.backend.entities.FormOfAddress
*/
@PutMapping({ "/", "" })
- public ResponseEntity updateFormOfAdress(@RequestParam Long id, @RequestBody String description) {
- var formOfAddress = formOfAdressService.getFormOfAddressById(id).orElse(null);
+ public ResponseEntity updateFormOfAdress(@RequestParam Long fid, @RequestBody String description) {
+ var formOfAddress = formOfAdressService.getFormOfAddressByFid(fid).orElse(null);
if (formOfAddress == null) {
return ResponseEntity.notFound().build();
}
@@ -97,17 +97,17 @@ class FormOfAdressController {
/**
* Deletes a form of address.
*
- * @param id The ID of the form of address to delete.
+ * @param fid The ID of the form of address to delete.
* @return The deleted form of address.
* @see com.maradona.backend.entities.FormOfAddress
*/
@DeleteMapping({ "/", "" })
- public ResponseEntity deleteFormOfAdress(@RequestParam Long id) {
- var formOfAddress = formOfAdressService.getFormOfAddressById(id).orElse(null);
+ public ResponseEntity deleteFormOfAdress(@RequestParam Long fid) {
+ var formOfAddress = formOfAdressService.getFormOfAddressByFid(fid).orElse(null);
if (formOfAddress == null) {
return ResponseEntity.notFound().build();
}
- formOfAdressService.deleteFormOfAddress(id);
+ formOfAdressService.deleteFormOfAddress(fid);
return ResponseEntity.ok().build();
}
}
\ No newline at end of file
diff --git a/src/main/java/com/maradona/backend/controllers/api/PrimarySkillController.java b/src/main/java/com/maradona/backend/controllers/api/PrimarySkillController.java
index db7c709..ba6739d 100644
--- a/src/main/java/com/maradona/backend/controllers/api/PrimarySkillController.java
+++ b/src/main/java/com/maradona/backend/controllers/api/PrimarySkillController.java
@@ -42,13 +42,13 @@ public class PrimarySkillController {
/**
* Returns a specific primary skill from the database.
*
- * @param id The ID of the requested primary skill.
+ * @param pid The ID of the requested primary skill.
* @return The primary skill with the requested ID.
* @see com.maradona.backend.entities.PrimarySkill
*/
@GetMapping({ "/", "" })
- public ResponseEntity get(@RequestParam Long id) {
- return primarySkillService.getPrimarySkillById(id)
+ public ResponseEntity get(@RequestParam Long pid) {
+ return primarySkillService.getPrimarySkillByPsid(pid)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@@ -93,21 +93,21 @@ public class PrimarySkillController {
/**
* Deletes a primary skill from the database.
*
- * @param id The ID of the primary skill to be deleted
+ * @param pid The ID of the primary skill to be deleted
* @return HTTP status indicating the outcome of the operation
* @see com.maradona.backend.entities.PrimarySkill
*/
@DeleteMapping({ "/", "" })
- public ResponseEntity delete(@RequestParam Long id) {
- var primarySkill = primarySkillService.getPrimarySkillById(id);
+ public ResponseEntity delete(@RequestParam Long pid) {
+ var primarySkill = primarySkillService.getPrimarySkillByPsid(pid);
if (primarySkill.isPresent()) {
var secondarySkills = secondarySkillService.getAllSecondarySkills();
for (SecondarySkill secondarySkill : secondarySkills) {
- if (secondarySkill.getPrimarySkill().getPsid().equals(id)) {
+ if (secondarySkill.getPrimarySkill().getPsid().equals(pid)) {
secondarySkillService.deleteSecondarySkill(secondarySkill.getSsid());
}
}
- primarySkillService.deletePrimarySkill(id);
+ primarySkillService.deletePrimarySkill(pid);
return ResponseEntity.noContent().build();
} else {
return ResponseEntity.notFound().build();
diff --git a/src/main/java/com/maradona/backend/controllers/api/ProjectController.java b/src/main/java/com/maradona/backend/controllers/api/ProjectController.java
index 9520a28..4d6823d 100644
--- a/src/main/java/com/maradona/backend/controllers/api/ProjectController.java
+++ b/src/main/java/com/maradona/backend/controllers/api/ProjectController.java
@@ -41,13 +41,13 @@ public class ProjectController {
/**
* Returns a specific project from the database.
*
- * @param id The ID of the requested project.
+ * @param psid The ID of the requested project.
* @return The project with the requested ID.
* @see com.maradona.backend.entities.Project
*/
@GetMapping({ "/", "" })
- public ResponseEntity get(@RequestParam Long id) {
- Optional project = projectService.getProjectById(id);
+ public ResponseEntity get(@RequestParam Long psid) {
+ Optional project = projectService.getProjectByPid(psid);
return project.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
}
@@ -63,15 +63,15 @@ public class ProjectController {
}
/**
- * Returns a list of projects for a given user.
+ * Returns a list of projects for a given employee.
*
- * @param userId ID of the user
+ * @param eid ID of the employee
* @return list of projects
* @see com.maradona.backend.entities.Project
*/
- @GetMapping("/from-user")
- public ResponseEntity> getFromUser(@RequestParam Long userId) {
- return ResponseEntity.ok(projectService.getProjectsByUserId(userId));
+ @GetMapping("/from-employee")
+ public ResponseEntity> getFromUser(@RequestParam Long eid) {
+ return ResponseEntity.ok(projectService.getProjectsByEid(eid));
}
/**
@@ -103,13 +103,13 @@ public class ProjectController {
/**
* Deletes a project from the database.
*
- * @param id The ID of the project to be deleted
+ * @param pid The ID of the project to be deleted
* @return HTTP status indicating the outcome of the operation
* @see com.maradona.backend.entities.Project
*/
@DeleteMapping({ "/", "" })
- public ResponseEntity delete(@RequestParam Long id) {
- projectService.deleteProject(id);
+ public ResponseEntity delete(@RequestParam Long pid) {
+ projectService.deleteProject(pid);
return ResponseEntity.noContent().build();
}
}
\ No newline at end of file
diff --git a/src/main/java/com/maradona/backend/controllers/api/SecondarySkillController.java b/src/main/java/com/maradona/backend/controllers/api/SecondarySkillController.java
index 78cfc47..26985f6 100644
--- a/src/main/java/com/maradona/backend/controllers/api/SecondarySkillController.java
+++ b/src/main/java/com/maradona/backend/controllers/api/SecondarySkillController.java
@@ -40,13 +40,13 @@ public class SecondarySkillController {
/**
* Returns a specific secondary skill from the database.
*
- * @param id The ID of the requested secondary skill.
+ * @param ssid The ID of the requested secondary skill.
* @return The secondary skill with the requested ID.
* @see com.maradona.backend.entities.SecondarySkill
*/
@GetMapping({ "/", "" })
- public ResponseEntity get(@RequestParam Long id) {
- Optional secondarySkill = secondarySkillService.getSecondarySkillById(id);
+ public ResponseEntity get(@RequestParam Long ssid) {
+ Optional secondarySkill = secondarySkillService.getSecondarySkillBySsid(ssid);
return secondarySkill.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
}
@@ -64,14 +64,14 @@ public class SecondarySkillController {
/**
* Returns a list of secondary skills for a given primary skill.
*
- * @param primarySkillId ID of the primary skill
+ * @param psid ID of the primary skill
* @return list of secondary skills
* @see com.maradona.backend.entities.SecondarySkill
* @see com.maradona.backend.entities.PrimarySkill
*/
@GetMapping("/from-primary-skill")
- public ResponseEntity> getSecondarySkills(@RequestParam Long primarySkillId) {
- return ResponseEntity.ok(secondarySkillService.getSecondarySkillsByPrimarySkillId(primarySkillId));
+ public ResponseEntity> getSecondarySkills(@RequestParam Long psid) {
+ return ResponseEntity.ok(secondarySkillService.getSecondarySkillsByPrimarySkillId(psid));
}
/**
@@ -103,13 +103,13 @@ public class SecondarySkillController {
/**
* Deletes a secondary skill from the database.
*
- * @param id The ID of the secondary skill to be deleted
+ * @param ssid The ID of the secondary skill to be deleted
* @return HTTP status indicating the outcome of the operation
* @see com.maradona.backend.entities.SecondarySkill
*/
@DeleteMapping({ "/", "" })
- public ResponseEntity delete(@RequestParam Long id) {
- secondarySkillService.deleteSecondarySkill(id);
+ public ResponseEntity delete(@RequestParam Long ssid) {
+ secondarySkillService.deleteSecondarySkill(ssid);
return ResponseEntity.noContent().build();
}
}
\ No newline at end of file
diff --git a/src/main/java/com/maradona/backend/controllers/page/SkillsPage.java b/src/main/java/com/maradona/backend/controllers/page/SkillsPage.java
index 4611268..c92c075 100644
--- a/src/main/java/com/maradona/backend/controllers/page/SkillsPage.java
+++ b/src/main/java/com/maradona/backend/controllers/page/SkillsPage.java
@@ -52,7 +52,7 @@ public class SkillsPage {
*/
@GetMapping({ "/", "" })
public String profile(Model model) {
- model.addAttribute("employee", employeeService.getEmployeeById(user).orElse(null));
+ model.addAttribute("employee", employeeService.getEmployeeByEid(user).orElse(null));
model.addAttribute("skills", skillService.getUserSkills(user));
return "/pages/skills/overview";
}
diff --git a/src/main/java/com/maradona/backend/dto/SkillPrototype.java b/src/main/java/com/maradona/backend/dto/SkillPrototype.java
index 3fc33dd..0feb9de 100644
--- a/src/main/java/com/maradona/backend/dto/SkillPrototype.java
+++ b/src/main/java/com/maradona/backend/dto/SkillPrototype.java
@@ -1,24 +1,24 @@
package com.maradona.backend.dto;
public class SkillPrototype {
- private Long primarySkillId;
- private Long secondarySkillId;
+ private Long psid;
+ private Long ssid;
private Integer level;
- public Long getPrimarySkillId() {
- return primarySkillId;
+ public Long getPsid() {
+ return psid;
}
- public void setPrimarySkillId(Long primarySkillId) {
- this.primarySkillId = primarySkillId;
+ public void setPsid(Long psid) {
+ this.psid = psid;
}
- public Long getSecondarySkillId() {
- return secondarySkillId;
+ public Long getSsid() {
+ return ssid;
}
- public void setSecondarySkillId(Long secondarySkillId) {
- this.secondarySkillId = secondarySkillId;
+ public void setSsid(Long ssid) {
+ this.ssid = ssid;
}
public Integer getLevel() {
diff --git a/src/main/java/com/maradona/backend/entities/Employee.java b/src/main/java/com/maradona/backend/entities/Employee.java
index 5d06051..7029b62 100644
--- a/src/main/java/com/maradona/backend/entities/Employee.java
+++ b/src/main/java/com/maradona/backend/entities/Employee.java
@@ -24,7 +24,7 @@ public class Employee {
private String lastName;
@ManyToOne
- @JoinColumn(name = "AID")
+ @JoinColumn(name = "FID")
private FormOfAddress formOfAddress;
private LocalTime dStart;
diff --git a/src/main/java/com/maradona/backend/entities/EmployeeSecondarySkill.java b/src/main/java/com/maradona/backend/entities/EmployeeSecondarySkill.java
index 5c17779..1cdf4f8 100644
--- a/src/main/java/com/maradona/backend/entities/EmployeeSecondarySkill.java
+++ b/src/main/java/com/maradona/backend/entities/EmployeeSecondarySkill.java
@@ -9,10 +9,10 @@ import com.fasterxml.jackson.annotation.JsonBackReference;
public class EmployeeSecondarySkill {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
+ private Long essid;
@ManyToOne
- @JoinColumn(name = "employee_id", nullable = false)
+ @JoinColumn(name = "employee_eid", nullable = false)
@JsonBackReference
private Employee employee;
@@ -23,12 +23,12 @@ public class EmployeeSecondarySkill {
@Column(nullable = false)
private Integer level;
- public void setId(Long id) {
- this.id = id;
+ public void setEssid(Long essid) {
+ this.essid = essid;
}
- public Long getId() {
- return id;
+ public Long getEssid() {
+ return essid;
}
public void setEmployee(Employee employee) {
diff --git a/src/main/java/com/maradona/backend/entities/FormOfAddress.java b/src/main/java/com/maradona/backend/entities/FormOfAddress.java
index c440eaa..3bf7cac 100644
--- a/src/main/java/com/maradona/backend/entities/FormOfAddress.java
+++ b/src/main/java/com/maradona/backend/entities/FormOfAddress.java
@@ -9,17 +9,17 @@ public class FormOfAddress {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
+ private Long fid;
@Column(nullable = false, length = 50)
private String description;
- public void setId(Long id) {
- this.id = id;
+ public void setFid(Long fid) {
+ this.fid = fid;
}
- public Long getId() {
- return id;
+ public Long getFid() {
+ return fid;
}
public void setDescription(String description) {
diff --git a/src/main/java/com/maradona/backend/entities/Project.java b/src/main/java/com/maradona/backend/entities/Project.java
index 2536b77..c7f92cb 100644
--- a/src/main/java/com/maradona/backend/entities/Project.java
+++ b/src/main/java/com/maradona/backend/entities/Project.java
@@ -10,7 +10,7 @@ public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
+ private Long pid;
@Column(nullable = false, length = 255)
private String name;
@@ -23,6 +23,14 @@ public class Project {
@Column(columnDefinition = "TEXT")
private String description;
+ public void setPid(Long pid) {
+ this.pid = pid;
+ }
+
+ public Long getPid() {
+ return pid;
+ }
+
public void setName(String name) {
this.name = name;
}
diff --git a/src/main/java/com/maradona/backend/repositories/EmployeeSecondarySkillRepository.java b/src/main/java/com/maradona/backend/repositories/EmployeeSecondarySkillRepository.java
index bc8e110..0f4fdbf 100644
--- a/src/main/java/com/maradona/backend/repositories/EmployeeSecondarySkillRepository.java
+++ b/src/main/java/com/maradona/backend/repositories/EmployeeSecondarySkillRepository.java
@@ -2,8 +2,6 @@ package com.maradona.backend.repositories;
import org.springframework.data.repository.CrudRepository;
import com.maradona.backend.entities.EmployeeSecondarySkill;
-import java.util.List;
public interface EmployeeSecondarySkillRepository extends CrudRepository {
- List findByEmployeeId(Long employeeId);
}
\ No newline at end of file
diff --git a/src/main/java/com/maradona/backend/services/EmployeeService.java b/src/main/java/com/maradona/backend/services/EmployeeService.java
index 5d49343..6fcd32c 100644
--- a/src/main/java/com/maradona/backend/services/EmployeeService.java
+++ b/src/main/java/com/maradona/backend/services/EmployeeService.java
@@ -21,19 +21,19 @@ public class EmployeeService {
return employeeRepository.save(employee);
}
- public Optional getEmployeeById(Long id) {
+ public Optional getEmployeeByEid(Long eid) {
var employees = employeeRepository.findAll();
for (Employee employee : employees) {
- if (employee.getEid().equals(id)) {
+ if (employee.getEid().equals(eid)) {
return Optional.of(employee);
}
}
return Optional.empty();
}
- public void deleteEmployee(Long id) {
+ public void deleteEmployee(Long eid) {
for (Employee employee : employeeRepository.findAll()) {
- if (employee.getEid().equals(id)) {
+ if (employee.getEid().equals(eid)) {
employeeRepository.delete(employee);
return;
}
@@ -44,13 +44,13 @@ public class EmployeeService {
return employeeRepository.findAll();
}
- public void addSecondarySkillToEmployee(Long userId, SkillPrototype skillPrototype) {
- var employee = getEmployeeById(userId).orElseThrow(() -> new RuntimeException("Employee not found"));
- var secondarySkill = secondarySkillService.getSecondarySkillById(skillPrototype.getSecondarySkillId())
+ public void addSecondarySkillToEmployee(Long eid, SkillPrototype skillPrototype) {
+ var employee = getEmployeeByEid(eid).orElseThrow(() -> new RuntimeException("Employee not found"));
+ var secondarySkill = secondarySkillService.getSecondarySkillBySsid(skillPrototype.getSsid())
.orElseThrow(() -> new RuntimeException("Secondary Skill not found"));
for (EmployeeSecondarySkill skill : employee.getSecondarySkills()) {
- if (skill.getSecondarySkill().getSsid().equals(skillPrototype.getSecondarySkillId())) {
+ if (skill.getSecondarySkill().getSsid().equals(skillPrototype.getSsid())) {
return;
}
}
@@ -63,13 +63,14 @@ public class EmployeeService {
saveEmployee(employee);
}
- public void updateSecondarySkillLevel(Long userId, Long skillId, Integer level) {
- var employee = getEmployeeById(userId).orElseThrow(() -> new RuntimeException("Employee not found"));
- secondarySkillService.getSecondarySkillById(skillId)
+ public void updateSecondarySkillLevel(Long eid, Long ssid, Integer level) {
+ var employee = getEmployeeByEid(eid).orElseThrow(() -> new RuntimeException("Employee not found"));
+ secondarySkillService.getSecondarySkillBySsid(
+ ssid)
.orElseThrow(() -> new RuntimeException("Secondary Skill not found"));
for (EmployeeSecondarySkill skill : employee.getSecondarySkills()) {
- if (skill.getSecondarySkill().getSsid().equals(skillId)) {
+ if (skill.getSecondarySkill().getSsid().equals(ssid)) {
skill.setLevel(level);
break;
}
@@ -78,18 +79,19 @@ public class EmployeeService {
saveEmployee(employee);
}
- public void deleteSecondarySkillFromEmployee(Long userId, Long skillId) {
- var employee = getEmployeeById(userId).orElseThrow(() -> new RuntimeException("Employee not found"));
- secondarySkillService.getSecondarySkillById(skillId)
+ public void deleteSecondarySkillFromEmployee(Long eid, Long ssid) {
+ var employee = getEmployeeByEid(eid).orElseThrow(() -> new RuntimeException("Employee not found"));
+ secondarySkillService.getSecondarySkillBySsid(
+ ssid)
.orElseThrow(() -> new RuntimeException("Secondary Skill not found"));
- employee.getSecondarySkills().removeIf(skill -> skill.getSecondarySkill().getSsid().equals(skillId));
+ employee.getSecondarySkills().removeIf(skill -> skill.getSecondarySkill().getSsid().equals(ssid));
saveEmployee(employee);
}
- public Iterable getEmployeesBySecondarySkill(Long skillId, Integer level) {
+ public Iterable getEmployeesBySecondarySkill(Long ssid, Integer level) {
// Implement logic to fetch employees by secondary skill and level
- // This is a placeholder implementation
+ // TODO: This is a placeholder implementation
return employeeRepository.findAll();
}
}
\ No newline at end of file
diff --git a/src/main/java/com/maradona/backend/services/FormOfAddressService.java b/src/main/java/com/maradona/backend/services/FormOfAddressService.java
index 54075b6..7ac7f5a 100644
--- a/src/main/java/com/maradona/backend/services/FormOfAddressService.java
+++ b/src/main/java/com/maradona/backend/services/FormOfAddressService.java
@@ -17,25 +17,32 @@ public class FormOfAddressService {
return formOfAddressRepository.save(formOfAddress);
}
- public Optional getFormOfAddressById(Long id) {
- return formOfAddressRepository.findById(id);
+ public Optional getFormOfAddressByFid(Long fid) {
+ var formOfAddresses = formOfAddressRepository.findAll();
+ for (FormOfAddress formOfAddress : formOfAddresses) {
+ if (formOfAddress.getFid().equals(fid)) {
+ return Optional.of(formOfAddress);
+ }
+ }
+ return Optional.empty();
}
- public void deleteFormOfAddress(Long id) {
- formOfAddressRepository.deleteById(id);
+ public void deleteFormOfAddress(Long fid) {
+ for (FormOfAddress formOfAddress : formOfAddressRepository.findAll()) {
+ if (formOfAddress.getFid().equals(fid)) {
+ formOfAddressRepository.delete(formOfAddress);
+ return;
+ }
+ }
}
public Iterable getAllFormOfAddresses() {
return formOfAddressRepository.findAll();
}
- public Long updateFormOfAddress(Long id, String description) {
- var formOfAddress = formOfAddressRepository.findById(id).orElse(null);
- if (formOfAddress != null) {
- formOfAddress.setDescription(description);
- formOfAddressRepository.save(formOfAddress);
- return id;
- }
- return null;
+ public void updateFormOfAddress(Long fid, String description) {
+ var formOfAddress = getFormOfAddressByFid(fid).orElseThrow(() -> new RuntimeException("Form of Address not found"));
+ formOfAddress.setDescription(description);
+ saveFormOfAddress(formOfAddress);
}
}
diff --git a/src/main/java/com/maradona/backend/services/PrimarySkillService.java b/src/main/java/com/maradona/backend/services/PrimarySkillService.java
index 0ca21a2..d9b0ee0 100644
--- a/src/main/java/com/maradona/backend/services/PrimarySkillService.java
+++ b/src/main/java/com/maradona/backend/services/PrimarySkillService.java
@@ -17,12 +17,23 @@ public class PrimarySkillService {
return primarySkillRepository.save(primarySkill);
}
- public Optional getPrimarySkillById(Long id) {
- return primarySkillRepository.findById(id);
+ public Optional getPrimarySkillByPsid(Long psid) {
+ var primarySkills = primarySkillRepository.findAll();
+ for (PrimarySkill primarySkill : primarySkills) {
+ if (primarySkill.getPsid().equals(psid)) {
+ return Optional.of(primarySkill);
+ }
+ }
+ return Optional.empty();
}
public void deletePrimarySkill(Long id) {
- primarySkillRepository.deleteById(id);
+ var primarySkills = primarySkillRepository.findAll();
+ for (PrimarySkill primarySkill : primarySkills) {
+ if (primarySkill.getPsid().equals(id)) {
+ primarySkillRepository.delete(primarySkill);
+ }
+ }
}
public Iterable getAllPrimarySkills() {
diff --git a/src/main/java/com/maradona/backend/services/ProjectService.java b/src/main/java/com/maradona/backend/services/ProjectService.java
index c9bcb36..4e6280d 100644
--- a/src/main/java/com/maradona/backend/services/ProjectService.java
+++ b/src/main/java/com/maradona/backend/services/ProjectService.java
@@ -17,19 +17,30 @@ public class ProjectService {
return projectRepository.save(project);
}
- public Optional getProjectById(Long id) {
- return projectRepository.findById(id);
+ public Optional getProjectByPid(Long pid) {
+ var projects = projectRepository.findAll();
+ for (Project project : projects) {
+ if (project.getPid().equals(pid)) {
+ return Optional.of(project);
+ }
+ }
+ return Optional.empty();
}
- public void deleteProject(Long id) {
- projectRepository.deleteById(id);
+ public void deleteProject(Long pid) {
+ var projects = projectRepository.findAll();
+ for (Project project : projects) {
+ if (project.getPid().equals(pid)) {
+ projectRepository.delete(project);
+ }
+ }
}
public Iterable getAllProjects() {
return projectRepository.findAll();
}
- public Iterable getProjectsByUserId(Long userId) {
+ public Iterable getProjectsByEid(Long eid) {
// TODO: Actually filter by user
return projectRepository.findAll();
}
diff --git a/src/main/java/com/maradona/backend/services/SecondarySkillService.java b/src/main/java/com/maradona/backend/services/SecondarySkillService.java
index e08d48b..07df7eb 100644
--- a/src/main/java/com/maradona/backend/services/SecondarySkillService.java
+++ b/src/main/java/com/maradona/backend/services/SecondarySkillService.java
@@ -28,23 +28,29 @@ public class SecondarySkillService {
return secondarySkillRepository.save(secondarySkill);
}
- public Optional getSecondarySkillById(Long id) {
- return secondarySkillRepository.findById(id);
+ public Optional getSecondarySkillBySsid(Long ssid) {
+ var secondarySkills = secondarySkillRepository.findAll();
+ for (SecondarySkill secondarySkill : secondarySkills) {
+ if (secondarySkill.getSsid().equals(ssid)) {
+ return Optional.of(secondarySkill);
+ }
+ }
+ return Optional.empty();
}
- public void deleteSecondarySkill(Long id) {
- secondarySkillRepository.deleteById(id);
+ public void deleteSecondarySkill(Long ssid) {
+ secondarySkillRepository.deleteById(ssid);
}
public Iterable getAllSecondarySkills() {
return secondarySkillRepository.findAll();
}
- public Iterable getSecondarySkillsByPrimarySkillId(Long primarySkillId) {
+ public Iterable getSecondarySkillsByPrimarySkillId(Long psid) {
var skills = secondarySkillRepository.findAll();
var result = new java.util.ArrayList();
for (SecondarySkill skill : skills) {
- if (skill.getPrimarySkill().getPsid().equals(primarySkillId)) {
+ if (skill.getPrimarySkill().getPsid().equals(psid)) {
result.add(skill);
System.out.println(skill.getDescription());
}
diff --git a/src/main/java/com/maradona/backend/services/SkillService.java b/src/main/java/com/maradona/backend/services/SkillService.java
index b8d7162..b3a6a4b 100644
--- a/src/main/java/com/maradona/backend/services/SkillService.java
+++ b/src/main/java/com/maradona/backend/services/SkillService.java
@@ -4,9 +4,6 @@ import com.maradona.backend.dto.SkillList;
import com.maradona.backend.entities.Employee;
import com.maradona.backend.entities.PrimarySkill;
import com.maradona.backend.entities.SecondarySkill;
-import com.maradona.backend.repositories.EmployeeRepository;
-import com.maradona.backend.repositories.PrimarySkillRepository;
-import com.maradona.backend.repositories.SecondarySkillRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.data.util.Pair;
@@ -19,24 +16,24 @@ import java.util.Map;
public class SkillService {
@Autowired
- private PrimarySkillRepository primarySkillRepository;
+ private PrimarySkillService primarySkillService;
@Autowired
- private SecondarySkillRepository secondarySkillRepository;
+ private SecondarySkillService secondarySkillService;
@Autowired
- private EmployeeRepository employeeRepository;
+ private EmployeeService employeeService;
public Iterable getAllSkills() {
- Iterable primarySkills = primarySkillRepository.findAll();
- Iterable secondarySkills = secondarySkillRepository.findAll();
+ Iterable primarySkills = primarySkillService.getAllPrimarySkills();
+ Iterable secondarySkills = secondarySkillService.getAllSecondarySkills();
List skills = new ArrayList<>();
for (PrimarySkill primarySkill : primarySkills) {
List> secondarySkillList = new ArrayList<>();
for (SecondarySkill secondarySkill : secondarySkills) {
if (secondarySkill.getPrimarySkill().getPsid().equals(primarySkill.getPsid())) {
- secondarySkillList.add(Pair.of(secondarySkill, 3)); // Placeholder level
+ secondarySkillList.add(Pair.of(secondarySkill, 3));
}
}
skills.add(new SkillList(primarySkill, secondarySkillList));
@@ -44,11 +41,11 @@ public class SkillService {
return skills;
}
- public Iterable getUserSkills(Long userId) {
- if (userId == null) {
+ public Iterable getUserSkills(Long eid) {
+ if (eid == null) {
return new ArrayList<>();
}
- Employee employee = employeeRepository.findById(userId).orElse(null);
+ Employee employee = employeeService.getEmployeeByEid(eid).orElse(null);
if (employee == null) {
return new ArrayList<>();
}
@@ -56,7 +53,7 @@ public class SkillService {
Map secondarySkillLevels = employee.getSecondarySkillLevels();
List skills = new ArrayList<>();
- for (PrimarySkill primarySkill : primarySkillRepository.findAll()) {
+ for (PrimarySkill primarySkill : primarySkillService.getAllPrimarySkills()) {
List> secondarySkillList = new ArrayList<>();
for (Map.Entry entry : secondarySkillLevels.entrySet()) {
if (entry.getKey().getPrimarySkill().getPsid().equals(primarySkill.getPsid())) {
From dcb3d0ec916b3811812849813efadf732525137f Mon Sep 17 00:00:00 2001
From: Lunix-420
Date: Mon, 11 Nov 2024 11:47:31 +0100
Subject: [PATCH 3/3] api: Update PrimarySkillService
---
.../backend/services/PrimarySkillService.java | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/maradona/backend/services/PrimarySkillService.java b/src/main/java/com/maradona/backend/services/PrimarySkillService.java
index d9b0ee0..169ad7a 100644
--- a/src/main/java/com/maradona/backend/services/PrimarySkillService.java
+++ b/src/main/java/com/maradona/backend/services/PrimarySkillService.java
@@ -3,6 +3,7 @@ package com.maradona.backend.services;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.maradona.backend.entities.PrimarySkill;
+import com.maradona.backend.entities.SecondarySkill;
import com.maradona.backend.repositories.PrimarySkillRepository;
import java.util.Optional;
@@ -13,6 +14,9 @@ public class PrimarySkillService {
@Autowired
private PrimarySkillRepository primarySkillRepository;
+ @Autowired
+ private SecondarySkillService secondarySkillRepository;
+
public PrimarySkill savePrimarySkill(PrimarySkill primarySkill) {
return primarySkillRepository.save(primarySkill);
}
@@ -27,10 +31,16 @@ public class PrimarySkillService {
return Optional.empty();
}
- public void deletePrimarySkill(Long id) {
+ public void deletePrimarySkill(Long psid) {
var primarySkills = primarySkillRepository.findAll();
+ var secondarySkills = secondarySkillRepository.getAllSecondarySkills();
+ for (SecondarySkill secondarySkill : secondarySkills) {
+ if (secondarySkill.getPrimarySkill().getPsid().equals(psid)) {
+ secondarySkillRepository.deleteSecondarySkill(secondarySkill.getSsid());
+ }
+ }
for (PrimarySkill primarySkill : primarySkills) {
- if (primarySkill.getPsid().equals(id)) {
+ if (primarySkill.getPsid().equals(psid)) {
primarySkillRepository.delete(primarySkill);
}
}