Skip to content

Commit

Permalink
DEAR-131: add teamName to workKind for dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
baurnick committed Aug 6, 2024
1 parent e332a14 commit e62897a
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package ch.fhnw.deardevbackend.controller;

import ch.fhnw.deardevbackend.dto.WorkKindAndTeamDTO;
import ch.fhnw.deardevbackend.entities.User;
import ch.fhnw.deardevbackend.entities.WorkKind;
import ch.fhnw.deardevbackend.services.WorkKindService;
import ch.fhnw.deardevbackend.services.TeamService;
import ch.fhnw.deardevbackend.services.WorkKindService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
Expand All @@ -29,4 +33,16 @@ public ResponseEntity<List<WorkKind>> getAllWorkKindsByUserAndTeam(@PathVariable
List<WorkKind> workKinds = workKindService.getWorkKindsForTeams(teamIds);
return ResponseEntity.ok(workKinds);
}

@GetMapping("/team")
public ResponseEntity<List<WorkKindAndTeamDTO>> getWorkKindsAndTeams() {
Integer userId = getCurrentUser().getId();
List<WorkKindAndTeamDTO> workKindAndTeams = workKindService.getWorkKindsAndTeams(userId);
return ResponseEntity.ok(workKindAndTeams);
}

private User getCurrentUser() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
return (User) authentication.getPrincipal();
}
}
10 changes: 10 additions & 0 deletions src/main/java/ch/fhnw/deardevbackend/dto/WorkKindAndTeamDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package ch.fhnw.deardevbackend.dto;

import ch.fhnw.deardevbackend.entities.WorkKind;
import lombok.Data;

@Data
public class WorkKindAndTeamDTO {
private WorkKind workKind;
private String teamName;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package ch.fhnw.deardevbackend.mapper;

import ch.fhnw.deardevbackend.dto.WorkKindAndTeamDTO;
import ch.fhnw.deardevbackend.entities.WorkKind;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

@Mapper(componentModel = "spring", unmappedTargetPolicy = org.mapstruct.ReportingPolicy.IGNORE)
public interface WorkKindAndTeamMapper {

WorkKindAndTeamMapper INSTANCE = Mappers.getMapper(WorkKindAndTeamMapper.class);

@Mapping(target = "workKind", source = "workKind")
@Mapping(target = "teamName", source = "teamName")
WorkKindAndTeamDTO toDTO(WorkKind workKind, String teamName);
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ public interface WorkKindRepository extends JpaRepository<WorkKind, Integer> {
List<WorkKind> findByTeamIdsOrNoTeam(@Param("teamIds") List<Integer> teamIds);

Optional<WorkKind> findByNameAndTeamId(String name, Integer teamId);

List<WorkKind> findByTeamId(Integer id);
}
29 changes: 25 additions & 4 deletions src/main/java/ch/fhnw/deardevbackend/services/WorkKindService.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,47 @@
package ch.fhnw.deardevbackend.services;

import ch.fhnw.deardevbackend.dto.WorkKindAndTeamDTO;
import ch.fhnw.deardevbackend.entities.Team;
import ch.fhnw.deardevbackend.entities.WorkKind;
import ch.fhnw.deardevbackend.mapper.WorkKindAndTeamMapper;
import ch.fhnw.deardevbackend.repositories.TeamRepository;
import ch.fhnw.deardevbackend.repositories.WorkKindRepository;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
@RequiredArgsConstructor
public class WorkKindService {

private static final Logger logger = LoggerFactory.getLogger(WorkKindService.class);

@Autowired
private final WorkKindRepository workKindRepository;

@Autowired
private TeamRepository teamRepository;

@Autowired
private WorkKindAndTeamMapper workKindAndTeamMapper;

public List<WorkKind> getWorkKindsForTeams(List<Integer> teamIds) {
logger.info("Fetching WorkKinds for teamIds: {}", teamIds);
return workKindRepository.findByTeamIdsOrNoTeam(teamIds);
}

public List<WorkKindAndTeamDTO> getWorkKindsAndTeams(Integer userId) {
List<Team> teams = teamRepository.findActiveTeamsByUserId(userId);
List<WorkKindAndTeamDTO> workKindAndTeams = new ArrayList<>();

for (Team team : teams) {
List<WorkKind> workKinds = workKindRepository.findByTeamId(team.getId());
for (WorkKind workKind : workKinds) {
workKindAndTeams.add(workKindAndTeamMapper.toDTO(workKind, team.getName()));
}
}

return workKindAndTeams;
}
}

0 comments on commit e62897a

Please sign in to comment.