Skip to content

Commit 04d3e1e

Browse files
committed
#135 expose audit as rest api
1 parent 993537f commit 04d3e1e

File tree

4 files changed

+52
-0
lines changed

4 files changed

+52
-0
lines changed

src/main/java/alfio/controller/api/admin/AdminReservationApiController.java

+5
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ public Result<Boolean> notifyReservation(@PathVariable("eventName") String event
8888
return adminReservationManager.notify(eventName, reservationId, arm, principal.getName());
8989
}
9090

91+
@RequestMapping(value = "/event/{eventName}/{reservationId}/audit", method = RequestMethod.GET)
92+
public Result<List<Audit>> getAudit(@PathVariable("eventName") String eventName, @PathVariable("reservationId") String reservationId, Principal principal) {
93+
return adminReservationManager.getAudit(eventName, reservationId, principal.getName());
94+
}
95+
9196
@RequestMapping(value = "/event/{eventName}/{reservationId}", method = RequestMethod.GET)
9297
public Result<TicketReservationDescriptor> loadReservation(@PathVariable("eventName") String eventName, @PathVariable("reservationId") String reservationId, Principal principal) {
9398
return adminReservationManager.loadReservation(eventName, reservationId, principal.getName())

src/main/java/alfio/manager/AdminReservationManager.java

+4
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,10 @@ public void removeTickets(String eventName, String reservationId, List<Integer>
445445
});
446446
}
447447

448+
public Result<List<Audit>> getAudit(String eventName, String reservationId, String username) {
449+
return loadReservation(eventName, reservationId, username).map((res) -> auditingRepository.findAllForReservation(reservationId));
450+
}
451+
448452
public Result<TransactionAndPaymentInfo> getPaymentInfo(String eventName, String reservationId, String username) {
449453
return loadReservation(eventName, reservationId, username)
450454
.map((res) -> paymentManager.getInfo(res.getLeft(), res.getRight()));

src/main/java/alfio/model/Audit.java

+38
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@
1616
*/
1717
package alfio.model;
1818

19+
import alfio.util.Json;
20+
import ch.digitalfondue.npjt.ConstructorAnnotationRowMapper.Column;
21+
import lombok.Getter;
22+
23+
import java.util.Date;
24+
import java.util.List;
25+
import java.util.Map;
26+
27+
@Getter
1928
public class Audit {
2029

2130
public enum EntityType {
@@ -25,4 +34,33 @@ public enum EntityType {
2534
public enum EventType {
2635
RESERVATION_CREATE, RESERVATION_COMPLETE, CANCEL_RESERVATION_EXPIRED, CANCEL_RESERVATION, UPDATE_EVENT, CANCEL_TICKET, REFUND, UPDATE_TICKET
2736
}
37+
38+
private final String reservationId;
39+
private final EventType eventType;
40+
private final Date eventTime;
41+
private final EntityType entityType;
42+
private final String entityId;
43+
private final List<Map<String, Object>> modifications;
44+
private final String username;
45+
private final String firstName;
46+
private final String lastName;
47+
private final String email;
48+
49+
50+
public Audit(@Column("reservation_id") String reservationId, @Column("event_type") EventType eventType,
51+
@Column("event_time") Date eventTime, @Column("entity_type") EntityType entityType,
52+
@Column("entity_id") String entityId, @Column("modifications") String modifications,
53+
@Column("username") String username, @Column("first_name") String firstName,
54+
@Column("last_name") String lastName, @Column("email_address") String email) {
55+
this.reservationId = reservationId;
56+
this.eventType = eventType;
57+
this.eventTime = eventTime;
58+
this.entityType = entityType;
59+
this.entityId = entityId;
60+
this.modifications = modifications == null ? null : Json.fromJson(modifications, List.class);
61+
this.username = username;
62+
this.firstName = firstName;
63+
this.lastName = lastName;
64+
this.email = email;
65+
}
2866
}

src/main/java/alfio/repository/AuditingRepository.java

+5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import ch.digitalfondue.npjt.QueryRepository;
2424

2525
import java.util.Date;
26+
import java.util.List;
2627

2728
@QueryRepository
2829
public interface AuditingRepository {
@@ -33,4 +34,8 @@ int insert(@Bind("reservationId") String reservationId, @Bind("userId") Integer
3334
@Bind("eventType") Audit.EventType eventType, @Bind("eventTime")Date eventTime,
3435
@Bind("entityType") Audit.EntityType entityType, @Bind("entityId") String entityId,
3536
@Bind("modifications") String modifications);
37+
38+
39+
@Query("select * from auditing_user where reservation_id = :reservationId order by event_time asc")
40+
List<Audit> findAllForReservation(@Bind("reservationId") String reservationId);
3641
}

0 commit comments

Comments
 (0)