-
Notifications
You must be signed in to change notification settings - Fork 70
/
calendar-event.service.ts
94 lines (87 loc) · 2.21 KB
/
calendar-event.service.ts
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Copyright (c) 2023 Sourcefuse Technologies
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
import {bind, BindingScope} from '@loopback/core';
import {Where, Filter, repository} from '@loopback/repository';
import {SubscriptionRepository} from '../repositories';
import {EventAttendeeView} from '../models';
@bind({scope: BindingScope.TRANSIENT})
export class CalendarEventService {
constructor(
@repository(SubscriptionRepository)
public subscriptionRepository: SubscriptionRepository,
) {}
async primarySubscription(calendarId: string) {
return this.subscriptionRepository.findOne({
where: {
and: [{calendarId: calendarId}, {isPrimary: true}],
},
});
}
getWhereClause(timeMin?: Date, timeMax?: Date): Where {
let whereClause = {};
if (timeMin && timeMax) {
whereClause = {
or: [
{startDateTime: {between: [timeMin, timeMax]}},
{endDateTime: {between: [timeMin, timeMax]}},
{
and: [
{startDateTime: {lte: timeMin}},
{endDateTime: {gte: timeMax}},
],
},
],
};
} else {
if (timeMin) {
whereClause = {endDateTime: {gte: timeMin}};
}
if (timeMax) {
whereClause = {startDateTime: {lte: timeMax}};
}
}
return whereClause;
}
getFilter(
identifier: string,
whereClause: Where,
filter?: Filter<EventAttendeeView>,
) {
if (filter) {
if (filter.where) {
filter.where = {
and: [
whereClause,
filter.where,
{
or: [{identifier: identifier}, {attendeeIdentifier: identifier}],
},
],
};
} else {
filter.where = {
and: [
whereClause,
{
or: [{identifier: identifier}, {attendeeIdentifier: identifier}],
},
],
};
}
} else {
filter = {
where: {
and: [
whereClause,
{
or: [{identifier: identifier}, {attendeeIdentifier: identifier}],
},
],
},
};
}
return filter;
}
}