diff --git a/pom.xml b/pom.xml
index da3dbeb..f3ce82f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.4.0
+ 2.7.10
diff --git a/src/main/java/com/example/nto/domain/entity/Employee.java b/src/main/java/com/example/nto/domain/entity/Employee.java
index f667855..33b0482 100644
--- a/src/main/java/com/example/nto/domain/entity/Employee.java
+++ b/src/main/java/com/example/nto/domain/entity/Employee.java
@@ -1,9 +1,6 @@
package com.example.nto.domain.entity;
-import jakarta.persistence.*;
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Size;
+
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -12,8 +9,11 @@ import org.springframework.data.annotation.CreatedDate;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
+import javax.persistence.*;
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
import java.time.LocalDateTime;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -62,9 +62,9 @@ public class Employee implements UserDetails {
@Size(max = 300, message = "Максимальная длина пароля 300 символов!")
private String password;
- // @ManyToOne(fetch = FetchType.EAGER)
- // @JoinColumn(name = "office_id", referencedColumnName = "id", nullable = false)
- // private Office office;
+ @ManyToOne(fetch = FetchType.EAGER)
+ @JoinColumn(name = "office_id", referencedColumnName = "id", nullable = false)
+ private Office office;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "pos_id", referencedColumnName = "id", nullable = false)
@@ -78,12 +78,15 @@ public class Employee implements UserDetails {
@Size(max = 300, message = "Максимальная длина адреса изображения 300 символов!")
private String profileImageUrl;
+ @Column(name = "is_blocked")
+ private boolean isBlocked;
+
@CreatedDate
@Column(name = "created_at", columnDefinition = "TIMESTAMP", nullable = false)
private LocalDateTime createdAt;
- // @OneToMany(mappedBy = "employee")
- // private List visits = new ArrayList<>();
+ @OneToMany(mappedBy = "employee")
+ private List visits;
@Override
public Collection extends GrantedAuthority> getAuthorities() {
@@ -92,7 +95,7 @@ public class Employee implements UserDetails {
@Override
public String getPassword() {
- return "";
+ return this.password;
}
@Override
diff --git a/src/main/java/com/example/nto/domain/entity/Office.java b/src/main/java/com/example/nto/domain/entity/Office.java
index cee9e88..5f3aa55 100644
--- a/src/main/java/com/example/nto/domain/entity/Office.java
+++ b/src/main/java/com/example/nto/domain/entity/Office.java
@@ -1,15 +1,16 @@
package com.example.nto.domain.entity;
-import jakarta.persistence.*;
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
+
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import javax.persistence.*;
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
import java.util.List;
@Data
diff --git a/src/main/java/com/example/nto/domain/entity/Passage.java b/src/main/java/com/example/nto/domain/entity/Passage.java
new file mode 100644
index 0000000..73e4a4f
--- /dev/null
+++ b/src/main/java/com/example/nto/domain/entity/Passage.java
@@ -0,0 +1,32 @@
+package com.example.nto.domain.entity;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+@Data
+@Entity
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "passages")
+public class Passage {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long id;
+
+ @Column(name = "passage", unique = true)
+ @NotBlank(message = "Название не может быть пустым!")
+ @Size(max = 100, message = "Максимальная длина названия 100 символов!")
+ private String passage;
+
+ @OneToMany(mappedBy = "typePassage")
+ private List visits;
+}
diff --git a/src/main/java/com/example/nto/domain/entity/Position.java b/src/main/java/com/example/nto/domain/entity/Position.java
index 61d900e..d934618 100644
--- a/src/main/java/com/example/nto/domain/entity/Position.java
+++ b/src/main/java/com/example/nto/domain/entity/Position.java
@@ -1,13 +1,14 @@
package com.example.nto.domain.entity;
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Size;
+
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import javax.persistence.*;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
import java.util.List;
@Data
diff --git a/src/main/java/com/example/nto/domain/entity/Role.java b/src/main/java/com/example/nto/domain/entity/Role.java
index 73c2b81..4046177 100644
--- a/src/main/java/com/example/nto/domain/entity/Role.java
+++ b/src/main/java/com/example/nto/domain/entity/Role.java
@@ -1,14 +1,15 @@
package com.example.nto.domain.entity;
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Size;
+
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
+import javax.persistence.*;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
import java.util.List;
@Data
diff --git a/src/main/java/com/example/nto/domain/entity/Terminal.java b/src/main/java/com/example/nto/domain/entity/Terminal.java
index d1ff6aa..c8d1639 100644
--- a/src/main/java/com/example/nto/domain/entity/Terminal.java
+++ b/src/main/java/com/example/nto/domain/entity/Terminal.java
@@ -1,14 +1,15 @@
package com.example.nto.domain.entity;
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Size;
+
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.hibernate.annotations.UuidGenerator;
+import org.hibernate.annotations.GenericGenerator;
+import javax.persistence.*;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
import java.util.List;
@Data
@@ -29,8 +30,9 @@ public class Terminal {
// Мне нужна была рандомная генерация кода для терминала, так что я мог сделать кривую реализацию через самописную функцию,
// но боялся, что она будет генерировать не уникальные значения. (я очень смутно представляю, как эта штука работает)
- // Код взят отсюда: https://stackoverflow.com/questions/76723290/using-the-new-type-for-uuidgenerator-instead-of-strategy
- @UuidGenerator
+ // Код взят отсюда: https://stackoverflow.com/questions/25082244/auto-generate-unique-random-string-in-spring-mvc-hibernate
+ @GenericGenerator(name = "uuid-gen", strategy = "uuid")
+ @GeneratedValue(generator = "uuid-gen")
@NotBlank(message = "Код не может быть пустым!")
@Column(name = "code", nullable = false, unique = true)
private String code;
diff --git a/src/main/java/com/example/nto/domain/entity/Visit.java b/src/main/java/com/example/nto/domain/entity/Visit.java
index 58d2f3b..35d502a 100644
--- a/src/main/java/com/example/nto/domain/entity/Visit.java
+++ b/src/main/java/com/example/nto/domain/entity/Visit.java
@@ -1,11 +1,11 @@
package com.example.nto.domain.entity;
-import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import javax.persistence.*;
import java.time.LocalDateTime;
@Data
@@ -30,7 +30,7 @@ public class Visit {
private LocalDateTime endVisit;
@Column(name = "is_finished", nullable = false)
- private boolean isFinished = false;
+ private final boolean isFinished = false;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "start_terminal_id", referencedColumnName = "code", nullable = false)
@@ -39,5 +39,8 @@ public class Visit {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "end_terminal_id", referencedColumnName = "code")
private Terminal endTerminal;
+
+ @OneToMany(mappedBy = "passage")
+ private long typePassage;
}
diff --git a/src/main/java/com/example/nto/dto/entity/employee/EmployeeCreateDTO.java b/src/main/java/com/example/nto/dto/entity/employee/EmployeeCreateDTO.java
index 80f5c31..06de761 100644
--- a/src/main/java/com/example/nto/dto/entity/employee/EmployeeCreateDTO.java
+++ b/src/main/java/com/example/nto/dto/entity/employee/EmployeeCreateDTO.java
@@ -16,6 +16,7 @@ public class EmployeeCreateDTO {
private String telephone;
private String email;
private String password;
+ private boolean isBlocked;
private String officeName; // Имя офиса, к которому присоединится работник.
private String positionName; // Должность работника.
diff --git a/src/main/java/com/example/nto/dto/entity/employee/EmployeeDTO.java b/src/main/java/com/example/nto/dto/entity/employee/EmployeeDTO.java
index 450d94b..ac9698f 100644
--- a/src/main/java/com/example/nto/dto/entity/employee/EmployeeDTO.java
+++ b/src/main/java/com/example/nto/dto/entity/employee/EmployeeDTO.java
@@ -27,6 +27,7 @@ public class EmployeeDTO {
private String role; // строка либо ROLE_USER, либо ROLE_ADMIN
private String profileImageUrl;
+ private boolean isBlocked;
// Текущее состояние входа: false - visit (посещение) ещё не началось, true - visit идёт
private boolean visitStatus;
diff --git a/src/main/java/com/example/nto/dto/entity/employee/EmployeeItemDTO.java b/src/main/java/com/example/nto/dto/entity/employee/EmployeeItemDTO.java
index ca0fdd4..5b9518f 100644
--- a/src/main/java/com/example/nto/dto/entity/employee/EmployeeItemDTO.java
+++ b/src/main/java/com/example/nto/dto/entity/employee/EmployeeItemDTO.java
@@ -16,6 +16,7 @@ public class EmployeeItemDTO {
private String surname;
private String patronymic;
private String profileImageUrl;
+ private boolean isBlocked;
private String officeName;
private String position; // Название должности