diff --git a/src/main/java/com/example/onomatopoeiaback/OnomatopoeiaBackApplication.java b/src/main/java/com/example/onomatopoeiaback/OnomatopoeiaBackApplication.java index 5474c0d..7853fb0 100644 --- a/src/main/java/com/example/onomatopoeiaback/OnomatopoeiaBackApplication.java +++ b/src/main/java/com/example/onomatopoeiaback/OnomatopoeiaBackApplication.java @@ -2,8 +2,10 @@ package com.example.onomatopoeiaback; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; -@SpringBootApplication +// отключаем стандартную шизанастройку в spring security +@SpringBootApplication(exclude = {SecurityAutoConfiguration.class }) public class OnomatopoeiaBackApplication { public static void main(String[] args) { diff --git a/src/main/java/com/example/onomatopoeiaback/controller/EmployeeController.java b/src/main/java/com/example/onomatopoeiaback/controller/EmployeeController.java index 48feedf..33d25bc 100644 --- a/src/main/java/com/example/onomatopoeiaback/controller/EmployeeController.java +++ b/src/main/java/com/example/onomatopoeiaback/controller/EmployeeController.java @@ -11,6 +11,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/employee") public class EmployeeController { @@ -37,9 +39,18 @@ public class EmployeeController { return new ResponseEntity<>(null, employeeService.auth(username)); } + @GetMapping("/{username}/visits") + public ResponseEntity> visits( + @PathVariable String username, + @RequestParam Integer offset, + @RequestParam Integer limit + ) { + return ResponseEntity.ok(employeeService.getVisits(username, offset, limit)); + } + @PatchMapping("/{username}/open") public ResponseEntity open(@PathVariable String username, @RequestBody VisitDTO visitDTO) { - visitService.open(username, visitDTO); + visitService.register(username, visitDTO); return new ResponseEntity<>(HttpStatus.OK); } } diff --git a/src/main/java/com/example/onomatopoeiaback/controller/QrCodeController.java b/src/main/java/com/example/onomatopoeiaback/controller/QrCodeController.java index 27bfe9b..50706e4 100644 --- a/src/main/java/com/example/onomatopoeiaback/controller/QrCodeController.java +++ b/src/main/java/com/example/onomatopoeiaback/controller/QrCodeController.java @@ -3,6 +3,7 @@ package com.example.onomatopoeiaback.controller; import com.example.onomatopoeiaback.domain.qrcode.QrCode; import com.example.onomatopoeiaback.service.QrCodeService; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -17,6 +18,7 @@ public class QrCodeController { this.qrCodeService = qrCodeService; } + @PostMapping("/create") public ResponseEntity createQrCode(@RequestParam String name) { return ResponseEntity.ok(qrCodeService.createQrCode(name)); } diff --git a/src/main/java/com/example/onomatopoeiaback/domain/employee/Employee.java b/src/main/java/com/example/onomatopoeiaback/domain/employee/Employee.java index 342d259..0e50840 100644 --- a/src/main/java/com/example/onomatopoeiaback/domain/employee/Employee.java +++ b/src/main/java/com/example/onomatopoeiaback/domain/employee/Employee.java @@ -1,5 +1,6 @@ package com.example.onomatopoeiaback.domain.employee; +import com.example.onomatopoeiaback.domain.visit.Visit; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Getter; @@ -7,6 +8,8 @@ import lombok.NonNull; import lombok.Setter; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; @Entity @Table(name = "employee") diff --git a/src/main/java/com/example/onomatopoeiaback/domain/visit/Visit.java b/src/main/java/com/example/onomatopoeiaback/domain/visit/Visit.java index 6d4e231..c3092bc 100644 --- a/src/main/java/com/example/onomatopoeiaback/domain/visit/Visit.java +++ b/src/main/java/com/example/onomatopoeiaback/domain/visit/Visit.java @@ -1,5 +1,6 @@ package com.example.onomatopoeiaback.domain.visit; +import com.example.onomatopoeiaback.domain.employee.Employee; import com.example.onomatopoeiaback.domain.qrcode.QrCode; import jakarta.persistence.*; import lombok.Getter; @@ -23,4 +24,6 @@ public class Visit { private VisitType visitType; @NonNull private LocalDateTime visitTime; + @ManyToOne + private Employee employee; } diff --git a/src/main/java/com/example/onomatopoeiaback/repository/QrCodeRepository.java b/src/main/java/com/example/onomatopoeiaback/repository/QrCodeRepository.java index a3b1c7b..959d82e 100644 --- a/src/main/java/com/example/onomatopoeiaback/repository/QrCodeRepository.java +++ b/src/main/java/com/example/onomatopoeiaback/repository/QrCodeRepository.java @@ -1,7 +1,12 @@ package com.example.onomatopoeiaback.repository; import com.example.onomatopoeiaback.domain.qrcode.QrCode; +import lombok.NonNull; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface QrCodeRepository extends JpaRepository { + @NonNull + Optional findById(@NonNull Long id); } diff --git a/src/main/java/com/example/onomatopoeiaback/repository/VisitRepository.java b/src/main/java/com/example/onomatopoeiaback/repository/VisitRepository.java index e4f8f2c..7b78b0f 100644 --- a/src/main/java/com/example/onomatopoeiaback/repository/VisitRepository.java +++ b/src/main/java/com/example/onomatopoeiaback/repository/VisitRepository.java @@ -6,5 +6,4 @@ import org.springframework.stereotype.Repository; @Repository public interface VisitRepository extends JpaRepository { - Visit getVisitByValue(long value); } diff --git a/src/main/java/com/example/onomatopoeiaback/service/EmployeeService.java b/src/main/java/com/example/onomatopoeiaback/service/EmployeeService.java index f199f53..3368340 100644 --- a/src/main/java/com/example/onomatopoeiaback/service/EmployeeService.java +++ b/src/main/java/com/example/onomatopoeiaback/service/EmployeeService.java @@ -2,7 +2,9 @@ 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.repository.EmployeeRepository; +import jakarta.persistence.criteria.CriteriaBuilder; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @@ -10,6 +12,8 @@ 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 { @@ -58,4 +62,9 @@ public class EmployeeService { return new ResponseEntity<>(employee, response_status); } + + public List getVisits(String login, Integer offset, Integer limit) { + Employee employee = employeeRepository.getEmployeesByLogin(login); + return new ArrayList<>(); + } } diff --git a/src/main/java/com/example/onomatopoeiaback/service/QrCodeService.java b/src/main/java/com/example/onomatopoeiaback/service/QrCodeService.java index 91ed1cd..5e07440 100644 --- a/src/main/java/com/example/onomatopoeiaback/service/QrCodeService.java +++ b/src/main/java/com/example/onomatopoeiaback/service/QrCodeService.java @@ -1,13 +1,22 @@ package com.example.onomatopoeiaback.service; import com.example.onomatopoeiaback.domain.qrcode.QrCode; +import com.example.onomatopoeiaback.repository.QrCodeRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class QrCodeService { + final + QrCodeRepository qrCodeRepository; + + public QrCodeService(QrCodeRepository qrCodeRepository) { + this.qrCodeRepository = qrCodeRepository; + } + public QrCode createQrCode(String name) { QrCode qrCode = new QrCode(); qrCode.setName(name); - return qrCode; + return qrCodeRepository.saveAndFlush(qrCode); } } diff --git a/src/main/java/com/example/onomatopoeiaback/service/VisitService.java b/src/main/java/com/example/onomatopoeiaback/service/VisitService.java index 6cc3d5d..3183371 100644 --- a/src/main/java/com/example/onomatopoeiaback/service/VisitService.java +++ b/src/main/java/com/example/onomatopoeiaback/service/VisitService.java @@ -2,6 +2,7 @@ package com.example.onomatopoeiaback.service; import com.example.onomatopoeiaback.domain.employee.Employee; +import com.example.onomatopoeiaback.domain.qrcode.QrCode; import com.example.onomatopoeiaback.domain.visit.Visit; import com.example.onomatopoeiaback.domain.visit.VisitDTO; import com.example.onomatopoeiaback.exceptions.BadRequestException; @@ -13,6 +14,7 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; +import java.util.Optional; @Service public class VisitService { @@ -27,25 +29,24 @@ public class VisitService { this.qrCodeRepository = qrCodeRepository; } -// TDDO: удалить это. и оставить open и доработать его. После этого объект Visit добавить пользователю в массив посещений. Реализовать получение посещений с offset и limit. Реализовать авторизацию и разделение методов на роли. - public Visit create(VisitDTO visitDTO) { - Visit visit = new Visit(); - visit.setQrCode(qrCodeRepository.getReferenceById(visitDTO.getQrCodeId())); - visit.setVisitType(visitDTO.getVisitType()); - return visitRepository.saveAndFlush(visit); - } - public void open(String login, VisitDTO visitDTO) { - Visit visit = visitRepository.getVisitByValue(visitDTO.getValue()); + public void register(String login, VisitDTO visitDTO) { Employee employee = employeeRepository.getEmployeesByLogin(login); + Optional qrCodeOptional = qrCodeRepository.findById(visitDTO.getQrCodeId()); + if (qrCodeOptional.isEmpty()) { + throw new BadRequestException(); + } if (employee == null) { throw new UnauthorizedException(); } - else if (visit == null) { - throw new BadRequestException(); - } + QrCode qrCode = qrCodeOptional.get(); + Visit visit = new Visit(); + visit.setQrCode(qrCode); + visit.setVisitType(visitDTO.getVisitType()); + visit.setEmployee(employee); + visitRepository.saveAndFlush(visit); LocalDateTime localDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS); employee.setLastVisit(localDateTime); employeeRepository.saveAndFlush(employee); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 56eb57c..54ba5a1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,6 +6,6 @@ spring-doc.swagger-ui.path=/docs # postgres set up spring.datasource.url=jdbc:postgresql://localhost:5432/postgres spring.datasource.username=postgres -spring.datasource.password=1339 +spring.datasource.password=MobileDev spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect spring.jpa.hibernate.ddl-auto=update \ No newline at end of file