65 lines
2.8 KiB
Java
65 lines
2.8 KiB
Java
package com.displaynone.acss.controllers.acs;
|
|
|
|
import com.displaynone.acss.components.acs.ACSComponent;
|
|
import com.displaynone.acss.components.acs.visit.VisitDTO;
|
|
import com.displaynone.acss.components.acs.visit.VisitMapper;
|
|
import com.displaynone.acss.components.auth.AuthComponent;
|
|
import com.displaynone.acss.components.auth.models.user.UserModel;
|
|
import com.displaynone.acss.exception.generics.ForbiddenHTTPException;
|
|
import com.displaynone.acss.exception.generics.NotFoundHTTPException;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.data.domain.Pageable;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
@RestController
|
|
@RequestMapping("/api/acs")
|
|
@RequiredArgsConstructor
|
|
public class ACSController {
|
|
private final ACSComponent acsComponent;
|
|
private final AuthComponent authComponent;
|
|
|
|
@PostMapping("/open")
|
|
public ResponseEntity<Void> open(@RequestBody OpenRQB body) {
|
|
Long code = body.getCode();
|
|
if (!acsComponent.isGateCodeValid(code)) throw new ForbiddenHTTPException("Invalid gate code");
|
|
return ResponseEntity.ok(null);
|
|
}
|
|
|
|
@GetMapping("visits/me")
|
|
public ResponseEntity<Page<VisitDTO>> getMyVisitsPaginated(
|
|
@RequestParam(defaultValue = "0") int page,
|
|
@RequestParam(defaultValue = "10") int size
|
|
) {
|
|
Pageable pageable = PageRequest.of(page, size);
|
|
UserModel user = (UserModel) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
|
return ResponseEntity.ok(acsComponent.getVisitsByUserIdPaginated(user.getId(), pageable).map(VisitMapper::convertToDTO));
|
|
}
|
|
|
|
@GetMapping("visits/login/{login}")
|
|
public ResponseEntity<Page<VisitDTO>> getUserVisitsPaginated(
|
|
@RequestParam(defaultValue = "0") int page,
|
|
@RequestParam(defaultValue = "10") int size,
|
|
@PathVariable String login
|
|
) {
|
|
Pageable pageable = PageRequest.of(page, size);
|
|
UserModel user = authComponent.getUserByLoginStrict(login);
|
|
return ResponseEntity.ok(acsComponent.getVisitsByUserIdPaginated(user.getId(), pageable).map(VisitMapper::convertToDTO));
|
|
}
|
|
|
|
@GetMapping("visits/gate/{gateId}")
|
|
public ResponseEntity<Page<VisitDTO>> getGateVisitsPaginated(
|
|
@RequestParam(defaultValue = "0") int page,
|
|
@RequestParam(defaultValue = "10") int size,
|
|
@PathVariable Long gateId
|
|
) {
|
|
Pageable pageable = PageRequest.of(page, size);
|
|
if (!acsComponent.isGateExists(gateId)) throw new NotFoundHTTPException("Invalid gate id");
|
|
return ResponseEntity.ok(acsComponent.getVisitsByGateIdPaginated(gateId, pageable).map(VisitMapper::convertToDTO));
|
|
}
|
|
}
|