-
Notifications
You must be signed in to change notification settings - Fork 26
/
QueueDetailsResponse.java
73 lines (66 loc) · 2.17 KB
/
QueueDetailsResponse.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package me.simplq.controller.model.queue;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import lombok.Data;
import me.simplq.constants.QueueStatus;
import me.simplq.constants.TokenStatus;
import me.simplq.dao.Queue;
@Data
public class QueueDetailsResponse {
@Data
public static class Token {
private final String name;
private final String contactNumber;
private final String tokenId;
private final Integer tokenNumber;
private final Date tokenCreationTimestamp;
private final Date tokenDeletionTimestamp;
private final TokenStatus tokenStatus;
private final Boolean notifiable;
}
private final String queueId;
private final String queueName;
final Date queueCreationTimestamp;
private final QueueStatus status;
private final Long maxQueueCapacity;
private final Long slotsLeft;
private final boolean isSelfJoinAllowed;
private final boolean notifyByEmail;
private final List<Token> tokens = new ArrayList<>();
private final List<Token> removedTokens = new ArrayList<>();
public void addToken(me.simplq.dao.Token token) {
Token newToken =
new Token(
token.getName(),
token.getContactNumber(),
token.getTokenId(),
token.getTokenNumber(),
token.getTokenCreationTimestamp(),
token.getTokenDeletionTimestamp(),
token.getStatus(),
token.isNotifiable());
if (TokenStatus.REMOVED.equals(token.getStatus())) {
this.removedTokens.add(newToken);
} else {
this.tokens.add(newToken);
}
}
public static QueueDetailsResponse fromEntity(Queue queue) {
var response =
new QueueDetailsResponse(
queue.getQueueId(),
queue.getQueueName(),
queue.getQueueCreationTimestamp(),
queue.getStatus(),
queue.getMaxQueueCapacity(),
queue.getSlotsLeft(),
queue.isSelfJoinAllowed(),
queue.isNotifyByEmail());
queue.getTokens().stream()
.sorted(Comparator.comparing(me.simplq.dao.Token::getQueueJoiningTimestamp))
.forEach(response::addToken);
return response;
}
}