Server/src/main/java/de/towerdefence/server/admin/AdminApiController.java
mehdiboudjoudi e388bb0020
Some checks failed
Quality Check / Validate OAS (pull_request) Successful in 34s
Quality Check / Validate OAS (push) Successful in 38s
Quality Check / Linting (push) Failing after 1m6s
Quality Check / Testing (push) Successful in 1m18s
Quality Check / Static Analysis (push) Successful in 1m27s
Quality Check / Linting (pull_request) Failing after 1m19s
Quality Check / Static Analysis (pull_request) Successful in 1m19s
Quality Check / Testing (pull_request) Successful in 57s
TD-34: Solved comments made by reviewer
2025-02-26 12:13:34 +01:00

87 lines
3 KiB
Java

package de.towerdefence.server.admin;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.towerdefence.server.auth.UserSession;
import de.towerdefence.server.oas.AdminApi;
import de.towerdefence.server.oas.models.AdminAuthInfo;
import de.towerdefence.server.oas.models.AdministratablePlayer;
import de.towerdefence.server.oas.models.GetAllPlayersConfigurationData;
import de.towerdefence.server.player.Player;
import de.towerdefence.server.player.PlayerRepository;
import de.towerdefence.server.utils.PlayerMapperService;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
import java.util.Optional;
@Controller
@RequestMapping("${openapi.api.base-path:/api/v1}")
public class AdminApiController implements AdminApi {
@Autowired
UserSession userSession;
@Autowired
PlayerRepository playerRepository;
@Autowired
PlayerMapperService playerMapperService;
@Override
public Optional<ObjectMapper> getObjectMapper() {
return Optional.empty();
}
@Override
public Optional<HttpServletRequest> getRequest() {
return Optional.empty();
}
@Override
public ResponseEntity<AdminAuthInfo> adminGetAuthenticated() {
AdminAuthInfo authInfo = new AdminAuthInfo();
authInfo.setUsername(this.userSession.getUsername());
return ResponseEntity.ok(authInfo);
}
@Override
public ResponseEntity<List<AdministratablePlayer>> getAllPlayers(GetAllPlayersConfigurationData body) {
var order = body.getOrder();
var page = body.getPage();
var pageSize = body.getPageSize();
var sortBy = body.getSortBy();
var username = body.getUsername();
if (order == null) {
order = GetAllPlayersConfigurationData.OrderEnum.DESCENDING;
}
Sort.Direction direction = order == GetAllPlayersConfigurationData.OrderEnum.ASCENDING ? Sort.Direction.ASC : Sort.Direction.DESC;
Pageable pageable = PageRequest.of(page, pageSize, Sort.by(direction, sortBy));
Page<Player> playerPage;
if (username != null && !username.trim().isEmpty()) {
playerPage = playerRepository.findByUsernameContainingIgnoreCase(username, pageable);
} else {
playerPage = playerRepository.findAll(pageable);
}
List<AdministratablePlayer> playersMapped = playerMapperService.mapPlayersToAdministratablePlayers(playerPage.getContent());
if (playersMapped.isEmpty()) {
return ResponseEntity.noContent().build();
} else {
return ResponseEntity.ok(playersMapped);
}
}
}