Merge pull request 'fix: Fix bugs and improve file naming' (#28) from 3002833/Backend:main into main

Reviewed-on: Maradona/Backend#28
pull/1/head
David Hess 2024-11-04 11:56:53 +01:00
commit 836ecee3bd
9 changed files with 182 additions and 3235 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,143 @@
package com.maradona.backend;
import com.maradona.backend.entities.Employee;
import com.maradona.backend.entities.EmployeeSecondarySkill;
import com.maradona.backend.entities.FormOfAddress;
import com.maradona.backend.entities.PrimarySkill;
import com.maradona.backend.entities.SecondarySkill;
import com.maradona.backend.repositories.EmployeeRepository;
import com.maradona.backend.repositories.FormOfAddressRepository;
import com.maradona.backend.repositories.PrimarySkillRepository;
import com.maradona.backend.repositories.SecondarySkillRepository;
import com.maradona.backend.repositories.EmployeeSecondarySkillRepository;
import com.maradona.backend.repositories.ProjectRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
@Component
public class DefaultValueLoader implements CommandLineRunner {
@Autowired
private PrimarySkillRepository primarySkillRepository;
@Autowired
private SecondarySkillRepository secondarySkillRepository;
@Autowired
private EmployeeRepository employeeRepository;
@Autowired
private FormOfAddressRepository formOfAddressRepository;
@Autowired
private EmployeeSecondarySkillRepository employeeSecondarySkillRepository;
@Autowired
private ProjectRepository projectRepository;
@Override
public void run(String... args) throws Exception {
// Clear all data
employeeRepository.deleteAll();
secondarySkillRepository.deleteAll();
primarySkillRepository.deleteAll();
formOfAddressRepository.deleteAll();
projectRepository.deleteAll();
employeeSecondarySkillRepository.deleteAll();
// Create form of addresses
FormOfAddress formOfAddress1 = new FormOfAddress();
formOfAddress1.setDescription("Herr");
FormOfAddress formOfAddress2 = new FormOfAddress();
formOfAddress2.setDescription("Frau");
FormOfAddress formOfAddress3 = new FormOfAddress();
formOfAddress3.setDescription("Einkaufstüte");
formOfAddress1 = formOfAddressRepository.save(formOfAddress1);
formOfAddress2 = formOfAddressRepository.save(formOfAddress2);
// Create primary skills
PrimarySkill primarySkill1 = new PrimarySkill();
primarySkill1.setDescription("Software Development");
PrimarySkill primarySkill2 = new PrimarySkill();
primarySkill2.setDescription("Project Management");
primarySkillRepository.save(primarySkill1);
primarySkillRepository.save(primarySkill2);
// Create secondary skills
SecondarySkill secondarySkill1 = new SecondarySkill();
secondarySkill1.setDescription("Java");
secondarySkill1.setPrimarySkill(primarySkill1);
SecondarySkill secondarySkill2 = new SecondarySkill();
secondarySkill2.setDescription("Agile Methodology");
secondarySkill2.setPrimarySkill(primarySkill2);
SecondarySkill secondarySkill3 = new SecondarySkill();
secondarySkill3.setDescription("Risk Management");
secondarySkill3.setPrimarySkill(primarySkill2);
secondarySkillRepository.save(secondarySkill1);
secondarySkillRepository.save(secondarySkill2);
secondarySkillRepository.save(secondarySkill3);
// Create employees
Employee employee1 = new Employee();
employee1.setEmployeeNr(1);
employee1.setFirstName("John");
employee1.setLastName("Doe");
employee1.setMail("john.doe@example.com");
employee1.setDStart(LocalTime.of(9, 0));
employee1.setDEnd(LocalTime.of(17, 0));
employee1.setFormOfAddress(formOfAddress1);
Employee employee2 = new Employee();
employee2.setEmployeeNr(2);
employee2.setFirstName("Jane");
employee2.setLastName("Smith");
employee2.setMail("jane.smith@example.com");
employee2.setDStart(LocalTime.of(9, 0));
employee2.setDEnd(LocalTime.of(17, 0));
employee2.setFormOfAddress(formOfAddress2);
employeeRepository.save(employee1);
employeeRepository.save(employee2);
// Assign secondary skills to employees
EmployeeSecondarySkill employeeSecondarySkill1 = new EmployeeSecondarySkill();
employeeSecondarySkill1.setEmployee(employee1);
employeeSecondarySkill1.setSecondarySkill(secondarySkill1);
employeeSecondarySkill1.setLevel(4);
EmployeeSecondarySkill employeeSecondarySkill2 = new EmployeeSecondarySkill();
employeeSecondarySkill2.setEmployee(employee1);
employeeSecondarySkill2.setSecondarySkill(secondarySkill2);
employeeSecondarySkill2.setLevel(3);
EmployeeSecondarySkill employeeSecondarySkill3 = new EmployeeSecondarySkill();
employeeSecondarySkill3.setEmployee(employee2);
employeeSecondarySkill3.setSecondarySkill(secondarySkill3);
employeeSecondarySkill3.setLevel(5);
List<EmployeeSecondarySkill> employee1Skills = new ArrayList<>();
employee1Skills.add(employeeSecondarySkill1);
employee1Skills.add(employeeSecondarySkill2);
employee1.setSecondarySkills(employee1Skills);
List<EmployeeSecondarySkill> employee2Skills = new ArrayList<>();
employee2Skills.add(employeeSecondarySkill3);
employee2.setSecondarySkills(employee2Skills);
employeeRepository.save(employee1);
employeeRepository.save(employee2);
}
}

View File

@ -26,7 +26,7 @@ public class ProjectController {
@GetMapping("/create")
public String create(Model model) {
model.addAttribute("project", new Project());
return "project-create";
return "projects-create";
}
@PostMapping("/save")

View File

@ -38,6 +38,7 @@ public class SkillsController {
// Hardcoded placeholder user ID for now
Long user = Long.valueOf(1);
// Returns the skills overview page
@GetMapping({ "/", "" })
public String profile(Model model) {
var employeeData = employeeService.getEmployeeById(user);
@ -47,20 +48,23 @@ public class SkillsController {
return "skills";
}
// Returns the create-skill page
@GetMapping("/create")
public String createSkill(Model model) {
model.addAttribute("secondarySkill", new SecondarySkill());
return "create-skill";
return "skills-create";
}
// Add a new skill to the user profile
@GetMapping("/add")
public String addSkill(Model model) {
model.addAttribute("primarySkills", primarySkillService.getAllPrimarySkills());
model.addAttribute("secondarySkills", List.of()); // Empty list initially
model.addAttribute("skillForm", new SkillForm()); // Add a form object to the model
return "add-skill";
return "skills-add";
}
// Add a new skill to the user profile
@PostMapping("/add")
public String addSkill(@ModelAttribute SkillForm skillForm) {
var employee = employeeService.getEmployeeById(user).orElseThrow(() -> new RuntimeException("Employee not found"));
@ -78,6 +82,7 @@ public class SkillsController {
return "redirect:/skills";
}
// Returns a list of secondary skills for a given primary skill
@GetMapping("/secondary-skills")
@ResponseBody
public Iterable<SecondarySkill> getSecondarySkills(@RequestParam Long primarySkillId) {
@ -89,6 +94,7 @@ public class SkillsController {
return list;
}
// Saves a new skill to the database
@PostMapping("/save")
public String save(@ModelAttribute SecondarySkill secondarySkill) {
var primarySkillDescription = secondarySkill.getPrimarySkill().getDescription();
@ -104,6 +110,7 @@ public class SkillsController {
return "redirect:/skills";
}
// Deletes a primary skill and all associated secondary skills
@PostMapping("/delete")
public String delete(@RequestParam Long id) {
// Find and delete all secondary skills associated with the primary skill
@ -120,4 +127,19 @@ public class SkillsController {
}
return "redirect:/skills";
}
// Removes secondary skill from user profile
@PostMapping("/remove")
public String remove(@RequestParam Long id) {
var employee = employeeService.getEmployeeById(user).orElseThrow(() -> new RuntimeException("Employee not found"));
var secondarySkills = employee.getSecondarySkills();
for (EmployeeSecondarySkill employeeSecondarySkill : secondarySkills) {
if (employeeSecondarySkill.getSecondarySkill().getSsid().equals(id)) {
employee.getSecondarySkills().remove(employeeSecondarySkill);
employeeService.saveEmployee(employee);
break;
}
}
return "redirect:/skills";
}
}

View File

@ -60,21 +60,23 @@
>&#9734;</span
>
</span>
<form
th:action="@{/skills/remove}"
method="post"
class="d-inline"
>
<input
type="hidden"
name="id"
th:value="${pair.first.ssid}"
/>
<button type="submit" class="btn-delete">
Delete
</button>
</form>
</li>
</ul>
</div>
<form
th:action="@{/skills/delete}"
method="post"
class="d-inline"
>
<input
type="hidden"
name="id"
th:value="${skillDto.primarySkill.psid}"
/>
<button type="submit" class="btn-delete">Delete</button>
</form>
</div>
</div>
</div>