source: src/main/java/it/finki/tinki/web/controller/AccountEditController.java@ 5f9d25a

Last change on this file since 5f9d25a was 5f9d25a, checked in by Vzdra <vladko.zdravkovski@…>, 3 years ago

refactoring controllers

  • Property mode set to 100644
File size: 3.2 KB
Line 
1package it.finki.tinki.web.controller;
2
3import it.finki.tinki.model.Skill;
4import it.finki.tinki.model.Users.Company;
5import it.finki.tinki.model.Users.Team;
6import it.finki.tinki.model.Users.User;
7import it.finki.tinki.model.dto.register.account.CompanyRegisterDTO;
8import it.finki.tinki.model.dto.register.account.TeamRegisterDTO;
9import it.finki.tinki.model.dto.register.account.UserRegisterDTO;
10import it.finki.tinki.model.dto.response.account.CompanyResponseDTO;
11import it.finki.tinki.model.dto.response.account.TeamResponseDTO;
12import it.finki.tinki.model.dto.response.account.UserResponseDTO;
13import it.finki.tinki.model.enumerator.AccountType;
14import it.finki.tinki.service.AccountService;
15import it.finki.tinki.service.BuilderService;
16import it.finki.tinki.service.SkillService;
17import org.springframework.web.bind.annotation.*;
18
19import java.util.List;
20import java.util.Optional;
21
22@RestController
23@CrossOrigin(origins = "http://localhost:3000")
24@RequestMapping(path = "/api/edit/account")
25public class AccountEditController {
26
27 AccountService accountService;
28 SkillService skillService;
29 BuilderService builderService;
30
31 public AccountEditController(AccountService accountService, SkillService skillService, BuilderService builderService) {
32 this.accountService = accountService;
33 this.skillService = skillService;
34 this.builderService = builderService;
35 }
36
37 @PostMapping(path = "/user/{id}")
38 public UserResponseDTO editUser(@PathVariable(name = "id") Long id,
39 @RequestBody UserRegisterDTO body){
40
41 Optional<?> a = this.accountService.findByIdAndEmail(id, body.getEmail(), AccountType.USER);
42
43 if(a.isPresent()){
44 List<Skill> retained = this.skillService.returnSkillsBasedOnId(body.getRetainedSkills());
45 List<Skill> toLearn = this.skillService.returnSkillsBasedOnId(body.getSkillsToLearn());
46 User u = this.accountService.editUser(id, body.getEmail(), body.getName(), body.getSurname(), retained, toLearn);
47 return this.builderService.buildUserResponseDTO(u);
48 }
49
50 return new UserResponseDTO();
51 }
52
53 @PostMapping(path = "/company/{id}")
54 public CompanyResponseDTO editCompany(@PathVariable(name = "id") Long id,
55 @RequestBody CompanyRegisterDTO body){
56
57 Optional<?> a = this.accountService.findByIdAndEmail(id, body.getEmail(), AccountType.COMPANY);
58
59 if(a.isPresent()){
60 Company c = this.accountService.editCompany(id, body.getEmail(), body.getName(), body.getCountry(), body.getCity(), body.getStreet());
61 return this.builderService.buildCompanyResponseDTO(c);
62 }
63
64 return new CompanyResponseDTO();
65 }
66
67 @PostMapping(path = "/team/{id}")
68 public TeamResponseDTO editTeam(@PathVariable(name = "id") Long id,
69 @RequestBody TeamRegisterDTO body){
70
71 Optional<?> a = this.accountService.findByIdAndEmail(id, body.getEmail(), AccountType.TEAM);
72
73 if(a.isPresent()){
74 Team t = this.accountService.editTeam(id, body.getEmail(), body.getName(), body.getMembers());
75 return this.builderService.buildTeamResponseDTO(t);
76 }
77
78 return new TeamResponseDTO();
79 }
80}
Note: See TracBrowser for help on using the repository browser.