Снова доблавен VisitController для получения посещений конкретного пользователя + исправлен баг с тем, что время создания Visit не сохранялось

This commit is contained in:
Daniil Makeev 2025-02-19 12:09:27 +03:00
parent ae3b001d8f
commit e7aea29ec8
4 changed files with 51 additions and 41 deletions

View File

@ -31,21 +31,13 @@ public class EmployeeController {
@GetMapping("/{username}/info")
public ResponseEntity<Employee> info(@PathVariable String username) {
return employeeService.info(username);
return ResponseEntity.ok(employeeService.info(username));
}
@GetMapping("/{username}/auth")
public ResponseEntity<Visit> auth(@PathVariable String username) {
return new ResponseEntity<>(null, employeeService.auth(username));
}
@GetMapping("/{username}/visits")
public ResponseEntity<List<Visit>> visits(
@PathVariable String username,
@RequestParam Integer offset,
@RequestParam Integer limit
) {
return ResponseEntity.ok(employeeService.getVisits(username, offset, limit));
employeeService.auth(username);
return new ResponseEntity<>(HttpStatus.OK);
}
@PatchMapping("/{username}/open")

View File

@ -0,0 +1,28 @@
package com.example.onomatopoeiaback.controller;
import com.example.onomatopoeiaback.domain.visit.Visit;
import com.example.onomatopoeiaback.domain.visit.VisitDTO;
import com.example.onomatopoeiaback.service.VisitService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/visit")
public class VisitController {
private final VisitService visitService;
public VisitController(VisitService visitService) {
this.visitService = visitService;
}
@GetMapping("/{username}/visits")
public ResponseEntity<List<Visit>> visits(
@PathVariable String username,
@RequestParam Integer offset,
@RequestParam Integer limit
) {
return ResponseEntity.ok(visitService.getVisits(username, offset, limit));
}
}

View File

@ -2,19 +2,12 @@ package com.example.onomatopoeiaback.service;
import com.example.onomatopoeiaback.domain.employee.Employee;
import com.example.onomatopoeiaback.domain.employee.EmployeeDTO;
import com.example.onomatopoeiaback.domain.visit.Visit;
import com.example.onomatopoeiaback.exceptions.UnauthorizedException;
import com.example.onomatopoeiaback.repository.EmployeeRepository;
import jakarta.persistence.criteria.CriteriaBuilder;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import com.example.onomatopoeiaback.repository.VisitRepository;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
@Service
public class EmployeeService {
@ -38,33 +31,21 @@ public class EmployeeService {
return employee;
}
public HttpStatus auth(String login) {
public void auth(String login) {
Employee employee = employeeRepository.getEmployeesByLogin(login);
if (employee == null) return HttpStatus.UNAUTHORIZED;
LocalDateTime localDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
employee.setLastVisit(localDateTime);
employeeRepository.save(employee);
return HttpStatus.OK;
if (employee == null) {
throw new UnauthorizedException();
}
}
public ResponseEntity<Employee> info(String login) {
public Employee info(String login) {
Employee employee = employeeRepository.getEmployeesByLogin(login);
HttpStatus response_status = HttpStatus.OK;
if (employee == null) response_status = HttpStatus.UNAUTHORIZED;
else {
LocalDateTime localDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
employee.setLastVisit(localDateTime);
employeeRepository.save(employee);
if (employee == null) {
throw new UnauthorizedException();
}
return new ResponseEntity<>(employee, response_status);
}
public List<Visit> getVisits(String login, Integer offset, Integer limit) {
Employee employee = employeeRepository.getEmployeesByLogin(login);
return new ArrayList<>();
return employee;
}
}

View File

@ -14,6 +14,8 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Service
@ -32,6 +34,8 @@ public class VisitService {
public void register(String login, VisitDTO visitDTO) {
Employee employee = employeeRepository.getEmployeesByLogin(login);
LocalDateTime localDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
Optional<QrCode> qrCodeOptional = qrCodeRepository.findById(visitDTO.getQrCodeId());
if (qrCodeOptional.isEmpty()) {
throw new BadRequestException();
@ -45,10 +49,15 @@ public class VisitService {
Visit visit = new Visit();
visit.setQrCode(qrCode);
visit.setVisitType(visitDTO.getVisitType());
visit.setVisitTime(localDateTime);
visit.setEmployee(employee);
visitRepository.saveAndFlush(visit);
LocalDateTime localDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
employee.setLastVisit(localDateTime);
employeeRepository.saveAndFlush(employee);
}
public List<Visit> getVisits(String login, Integer offset, Integer limit) {
Employee employee = employeeRepository.getEmployeesByLogin(login);
return new ArrayList<>();
}
}