Data changed; Added visitType to Visit entity

This commit is contained in:
Universall 2025-02-20 12:57:35 +03:00
parent 6a4676ae11
commit 6aa09857f8
10 changed files with 82 additions and 55 deletions
src/main

@ -3,6 +3,7 @@ package com.displaynone.acss.components.acs;
import com.displaynone.acss.components.acs.models.gate.GateModel;
import com.displaynone.acss.components.acs.models.gate.service.GateService;
import com.displaynone.acss.components.acs.models.visit.VisitModel;
import com.displaynone.acss.components.acs.models.visit.VisitType;
import com.displaynone.acss.components.acs.models.visit.service.VisitService;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
@ -66,10 +67,11 @@ public class ACSComponent {
visitService.createVisit(visit);
}
public void createVisit(Long userId, Long gateId) {
public void createVisit(Long userId, Long gateId, VisitType visitType) {
VisitModel visit = new VisitModel();
visit.setUserId(userId);
visit.setGateId(gateId);
visit.setVisitType(visitType);
createVisit(visit);
}
}

@ -10,4 +10,5 @@ public class VisitDTO {
private Long userId;
private Long gateId;
private LocalDateTime createdAt;
private VisitType visitType;
}

@ -15,6 +15,7 @@ public class VisitMapper {
dto.setUserId(model.getUserId());
dto.setGateId(model.getGateId());
dto.setCreatedAt(model.getCreatedAt());
dto.setVisitType(model.getVisitType());
return dto;
}

@ -29,4 +29,8 @@ public class VisitModel {
@CreationTimestamp
@Column(nullable = false)
private LocalDateTime createdAt;
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private VisitType visitType;
}

@ -0,0 +1,6 @@
package com.displaynone.acss.components.acs.models.visit;
public enum VisitType {
CARD,
APP
}

@ -6,8 +6,10 @@ import com.displaynone.acss.components.acs.models.gate.GateMapper;
import com.displaynone.acss.components.acs.models.gate.GateModel;
import com.displaynone.acss.components.acs.models.visit.VisitDTO;
import com.displaynone.acss.components.acs.models.visit.VisitMapper;
import com.displaynone.acss.components.acs.models.visit.VisitType;
import com.displaynone.acss.components.auth.AuthComponent;
import com.displaynone.acss.components.auth.models.user.UserModel;
import com.displaynone.acss.exception.generics.BadRequestHTTPException;
import com.displaynone.acss.exception.generics.ForbiddenHTTPException;
import com.displaynone.acss.exception.generics.NotFoundHTTPException;
import com.displaynone.acss.utils.GlobalUtils;
@ -30,13 +32,18 @@ public class ACSController {
@PostMapping("/open")
public ResponseEntity<Void> open(@RequestBody OpenRQB body) {
Long code = body.getCode();
VisitType visitType = body.getVisitType();
if (code == null) throw new BadRequestHTTPException("Code not found");
if (visitType == null) throw new BadRequestHTTPException("visitType not found");
GateModel gate = acsComponent.getGateByCodeStrict(code);
if (gate.isACSBlocked()) throw new ForbiddenHTTPException("Specified gate is blocked");
UserModel user = (UserModel) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (user.isACSBlocked()) throw new ForbiddenHTTPException("User is blocked");
acsComponent.createVisit(user.getId(), gate.getId());
acsComponent.createVisit(user.getId(), gate.getId(), visitType);
return ResponseEntity.ok(null);
}
@ -70,6 +77,7 @@ public class ACSController {
) {
Pageable pageable = PageRequest.of(page, size);
if (!acsComponent.isGateExists(gateId)) throw new NotFoundHTTPException("Gate not found");
if (!acsComponent.isGateExists(gateId)) throw new NotFoundHTTPException("Gate not found");
return ResponseEntity.ok(acsComponent.getVisitsByGateIdPaginated(gateId, pageable).map(VisitMapper::convertToDTO));
}

@ -1,8 +1,10 @@
package com.displaynone.acss.controllers.acs;
import com.displaynone.acss.components.acs.models.visit.VisitType;
import lombok.Data;
@Data
public class OpenRQB {
private Long code;
private VisitType visitType;
}

@ -18,6 +18,9 @@
<column name="created_at" type="DATETIME" defaultValueDate="${now}">
<constraints nullable="false" />
</column>
<column name="visit_type" type="VARCHAR(100)">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseTableName="visits"

@ -1,6 +1,6 @@
login;name;photo;position;password;is_active;isacsblocked
user;Default User;https://wiki.i-edu.ru/mediawiki/images/thumb/1/19/Иван.png/600px-Иван.png;Software Engineer;$2a$12$CUo06gR1qTWC9JB2o1HnXuTK2U5yLIdCPprVWgY8jdB9l.xhbAoQK;1;0
admin;Admin User;https://app2.elevate-holistics.com/assets/no-profile/no-profile-0.jpg;Product Manager;$2a$12$e0djVwP9MBeFd9aZia33W.u1Yiq3gDpVNECXn7I.KgvjPr0eoeWwS;1;0
user;Default User;https://wiki.i-edu.ru/mediawiki/images/thumb/1/19/Иван.png/600px-Иван.png;Software Engineer;$2a$12$GYcNHy6K8OGPQgM/sof9JOiKB9rjIIzf5fQIqYUAtAmu5ARd9dypG;1;0
admin;Admin User;https://app2.elevate-holistics.com/assets/no-profile/no-profile-0.jpg;Product Manager;$2a$12$AJaVAsSLFtmdsZbgeJLko.y.SW6EQR3K9Lf9QOWYtJcTsIt4Nn8jK;1;0
bob_jones;Bob Jones;https://png.klev.club/uploads/posts/2024-06/thumbs/png-klev-club-sy5u-p-znachok-devushka-png-20.png;QA Engineer;$2a$12$b//P422i15PDoij6g4SOluIUol7X3E0eFttGMGlGCJuBmZFE6nMw.;1;0
alice_johnson;Alice Johnson;https://wiki.i-edu.ru/mediawiki/images/thumb/1/19/Иван.png/600px-Иван.png;UX Designer;$2a$12$b//P422i15PDoij6g4SOluIUol7X3E0eFttGMGlGCJuBmZFE6nMw.;1;0
charlie_brown;Charlie Brown;https://png.klev.club/uploads/posts/2024-06/thumbs/png-klev-club-sy5u-p-znachok-devushka-png-20.png;DevOps Engineer;$2a$12$b//P422i15PDoij6g4SOluIUol7X3E0eFttGMGlGCJuBmZFE6nMw.;1;0

1 login name photo position password is_active isacsblocked
2 user Default User https://wiki.i-edu.ru/mediawiki/images/thumb/1/19/Иван.png/600px-Иван.png Software Engineer $2a$12$CUo06gR1qTWC9JB2o1HnXuTK2U5yLIdCPprVWgY8jdB9l.xhbAoQK $2a$12$GYcNHy6K8OGPQgM/sof9JOiKB9rjIIzf5fQIqYUAtAmu5ARd9dypG 1 0
3 admin Admin User https://app2.elevate-holistics.com/assets/no-profile/no-profile-0.jpg Product Manager $2a$12$e0djVwP9MBeFd9aZia33W.u1Yiq3gDpVNECXn7I.KgvjPr0eoeWwS $2a$12$AJaVAsSLFtmdsZbgeJLko.y.SW6EQR3K9Lf9QOWYtJcTsIt4Nn8jK 1 0
4 bob_jones Bob Jones https://png.klev.club/uploads/posts/2024-06/thumbs/png-klev-club-sy5u-p-znachok-devushka-png-20.png QA Engineer $2a$12$b//P422i15PDoij6g4SOluIUol7X3E0eFttGMGlGCJuBmZFE6nMw. 1 0
5 alice_johnson Alice Johnson https://wiki.i-edu.ru/mediawiki/images/thumb/1/19/Иван.png/600px-Иван.png UX Designer $2a$12$b//P422i15PDoij6g4SOluIUol7X3E0eFttGMGlGCJuBmZFE6nMw. 1 0
6 charlie_brown Charlie Brown https://png.klev.club/uploads/posts/2024-06/thumbs/png-klev-club-sy5u-p-znachok-devushka-png-20.png DevOps Engineer $2a$12$b//P422i15PDoij6g4SOluIUol7X3E0eFttGMGlGCJuBmZFE6nMw. 1 0

@ -1,51 +1,51 @@
user_id;gate_id;created_at
1;1;2023-10-01 08:00:00
2;2;2023-10-01 09:15:00
3;3;2023-10-01 10:30:00
4;4;2023-10-01 11:45:00
5;5;2023-10-01 12:00:00
1;2;2023-10-01 13:15:00
2;3;2023-10-01 14:30:00
3;4;2023-10-01 15:45:00
4;5;2023-10-01 16:00:00
5;1;2023-10-01 17:15:00
1;3;2023-10-02 08:30:00
2;4;2023-10-02 09:45:00
3;5;2023-10-02 10:00:00
4;1;2023-10-02 11:15:00
5;2;2023-10-02 12:30:00
1;4;2023-10-02 13:45:00
2;5;2023-10-02 14:00:00
3;1;2023-10-02 15:15:00
4;2;2023-10-02 16:30:00
5;3;2023-10-02 17:45:00
1;5;2023-10-03 08:00:00
2;1;2023-10-03 09:15:00
3;2;2023-10-03 10:30:00
4;3;2023-10-03 11:45:00
5;4;2023-10-03 12:00:00
1;1;2023-10-03 13:15:00
2;2;2023-10-03 14:30:00
3;3;2023-10-03 15:45:00
4;4;2023-10-03 16:00:00
5;5;2023-10-03 17:15:00
1;2;2023-10-04 08:30:00
2;3;2023-10-04 09:45:00
3;4;2023-10-04 10:00:00
4;5;2023-10-04 11:15:00
5;1;2023-10-04 12:30:00
1;3;2023-10-04 13:45:00
2;4;2023-10-04 14:00:00
3;5;2023-10-04 15:15:00
4;1;2023-10-04 16:30:00
5;2;2023-10-04 17:45:00
1;4;2023-10-05 08:00:00
2;5;2023-10-05 09:15:00
3;1;2023-10-05 10:30:00
4;2;2023-10-05 11:45:00
5;3;2023-10-05 12:00:00
1;5;2023-10-05 13:15:00
2;1;2023-10-05 14:30:00
3;2;2023-10-05 15:45:00
4;3;2023-10-05 16:00:00
5;4;2023-10-05 17:15:00
user_id;gate_id;created_at;visit_type
1;1;2023-10-01 08:00:00;APP
2;2;2023-10-01 09:15:00;CARD
3;3;2023-10-01 10:30:00;APP
4;4;2023-10-01 11:45:00;CARD
5;5;2023-10-01 12:00:00;CARD
1;2;2023-10-01 13:15:00;APP
2;3;2023-10-01 14:30:00;APP
3;4;2023-10-01 15:45:00;CARD
4;5;2023-10-01 16:00:00;CARD
5;1;2023-10-01 17:15:00;APP
1;3;2023-10-02 08:30:00;CARD
2;4;2023-10-02 09:45:00;CARD
3;5;2023-10-02 10:00:00;APP
4;1;2023-10-02 11:15:00;APP
5;2;2023-10-02 12:30:00;CARD
1;4;2023-10-02 13:45:00;CARD
2;5;2023-10-02 14:00:00;APP
3;1;2023-10-02 15:15:00;APP
4;2;2023-10-02 16:30:00;APP
5;3;2023-10-02 17:45:00;CARD
1;5;2023-10-03 08:00:00;CARD
2;1;2023-10-03 09:15:00;CARD
3;2;2023-10-03 10:30:00;CARD
4;3;2023-10-03 11:45:00;CARD
5;4;2023-10-03 12:00:00;CARD
1;1;2023-10-03 13:15:00;APP
2;2;2023-10-03 14:30:00;APP
3;3;2023-10-03 15:45:00;APP
4;4;2023-10-03 16:00:00;APP
5;5;2023-10-03 17:15:00;APP
1;2;2023-10-04 08:30:00;CARD
2;3;2023-10-04 09:45:00;CARD
3;4;2023-10-04 10:00:00;CARD
4;5;2023-10-04 11:15:00;CARD
5;1;2023-10-04 12:30:00;APP
1;3;2023-10-04 13:45:00;APP
2;4;2023-10-04 14:00:00;APP
3;5;2023-10-04 15:15:00;APP
4;1;2023-10-04 16:30:00;CARD
5;2;2023-10-04 17:45:00;CARD
1;4;2023-10-05 08:00:00;APP
2;5;2023-10-05 09:15:00;APP
3;1;2023-10-05 10:30:00;APP
4;2;2023-10-05 11:45:00;CARD
5;3;2023-10-05 12:00:00;CARD
1;5;2023-10-05 13:15:00;CARD
2;1;2023-10-05 14:30:00;APP
3;2;2023-10-05 15:45:00;APP
4;3;2023-10-05 16:00:00;APP
5;4;2023-10-05 17:15:00;APP
1 user_id gate_id created_at visit_type
2 1 1 2023-10-01 08:00:00 APP
3 2 2 2023-10-01 09:15:00 CARD
4 3 3 2023-10-01 10:30:00 APP
5 4 4 2023-10-01 11:45:00 CARD
6 5 5 2023-10-01 12:00:00 CARD
7 1 2 2023-10-01 13:15:00 APP
8 2 3 2023-10-01 14:30:00 APP
9 3 4 2023-10-01 15:45:00 CARD
10 4 5 2023-10-01 16:00:00 CARD
11 5 1 2023-10-01 17:15:00 APP
12 1 3 2023-10-02 08:30:00 CARD
13 2 4 2023-10-02 09:45:00 CARD
14 3 5 2023-10-02 10:00:00 APP
15 4 1 2023-10-02 11:15:00 APP
16 5 2 2023-10-02 12:30:00 CARD
17 1 4 2023-10-02 13:45:00 CARD
18 2 5 2023-10-02 14:00:00 APP
19 3 1 2023-10-02 15:15:00 APP
20 4 2 2023-10-02 16:30:00 APP
21 5 3 2023-10-02 17:45:00 CARD
22 1 5 2023-10-03 08:00:00 CARD
23 2 1 2023-10-03 09:15:00 CARD
24 3 2 2023-10-03 10:30:00 CARD
25 4 3 2023-10-03 11:45:00 CARD
26 5 4 2023-10-03 12:00:00 CARD
27 1 1 2023-10-03 13:15:00 APP
28 2 2 2023-10-03 14:30:00 APP
29 3 3 2023-10-03 15:45:00 APP
30 4 4 2023-10-03 16:00:00 APP
31 5 5 2023-10-03 17:15:00 APP
32 1 2 2023-10-04 08:30:00 CARD
33 2 3 2023-10-04 09:45:00 CARD
34 3 4 2023-10-04 10:00:00 CARD
35 4 5 2023-10-04 11:15:00 CARD
36 5 1 2023-10-04 12:30:00 APP
37 1 3 2023-10-04 13:45:00 APP
38 2 4 2023-10-04 14:00:00 APP
39 3 5 2023-10-04 15:15:00 APP
40 4 1 2023-10-04 16:30:00 CARD
41 5 2 2023-10-04 17:45:00 CARD
42 1 4 2023-10-05 08:00:00 APP
43 2 5 2023-10-05 09:15:00 APP
44 3 1 2023-10-05 10:30:00 APP
45 4 2 2023-10-05 11:45:00 CARD
46 5 3 2023-10-05 12:00:00 CARD
47 1 5 2023-10-05 13:15:00 CARD
48 2 1 2023-10-05 14:30:00 APP
49 3 2 2023-10-05 15:45:00 APP
50 4 3 2023-10-05 16:00:00 APP
51 5 4 2023-10-05 17:15:00 APP