-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEventsService
More file actions
116 lines (95 loc) · 3.23 KB
/
EventsService
File metadata and controls
116 lines (95 loc) · 3.23 KB
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
var _$http, _SERVER, _app, _confirm;
class EventsService {
constructor($http, SERVER, appService, confirm) {
"ngInlect";
_$http = $http;
_SERVER = SERVER;
_app = appService;
_confirm = confirm;
}
getNewEventData() {
function round(date, duration, method) {
return moment(Math[method]((+date) / (+duration)) * (+duration));
}
let m_start = round(moment(), moment.duration(15, "minutes"), "ceil");
return {
allDay: false,
start: m_start.format(),
end: angular.copy(m_start).add(30, 'minutes').format(),
status: 'DRAFT',
visible: true
}
}
getEvents({start: start, end: end}) {
let url = _SERVER.URL + 'api/events/agenda';
return _$http.get(url, {
params: {
// fullcalendar removes minutes and seconds from date objects.
// That's why we need to transform date in full format for our server api this way:
start: moment(start.toDate()).format(),
end: moment(end.toDate()).format(),
masterId: _app.getMasterId()
}
}).then((resp) => {
let embedded = resp.data._embedded,
events = embedded ? embedded.events : [];
return events;
});
}
getEventById(eventId) {
let url = _SERVER.URL + 'api/events/' + eventId;
return _$http.get(url).then((resp) => resp.data);
}
activateEvent(event) {
// TODO temp update event. Change to special API for activating
event.status = 'ACTIVE';
return _app.updatePartially(event._links.self.href, event, ['status']).then((resp) => resp.data);
}
addRecurrenceRule(event) {
event.recurrenceRule = {
freq: 'DAILY',
until: angular.copy(event).end,
interval: 1
}
}
submitEvent(event) {
let url = _SERVER.URL + 'api/events',
masterId = _app.getMasterId();
event.start = event.start.format();
event.end = event.end.format();
if (event.recurrenceRule && moment.isMoment(event.recurrenceRule.until)) {
event.recurrenceRule.until = event.recurrenceRule.until.format();
}
event.master = _SERVER.URL + 'api/masters/' + masterId;
if (event.serviceJson && event.serviceJson.resourceId) {
event.service = _SERVER.URL + 'api/services/' + event.serviceJson.resourceId;
}
return _$http.post(url, event).then((resp) => resp.data);
}
updateEvent(event) {
if (event.serviceJson && event.serviceJson.resourceId) {
event.service = _SERVER.URL + 'api/services/' + event.serviceJson.resourceId;
}
return _$http.patch(event._links.self.href, event)
}
cancelEvent(event) {
return _$http.patch(event._links.self.href, {
status: "CANCELED",
visible: false
})
}
removeDraft() {
// confirm window
return _confirm.show('Запись сохранена не будет. Вы уверены, что хотите уйти?').then((resp) => {
return this.deleteEvent(this.currentEvent);
});
}
deleteEvent(event) {
return _$http.delete(event._links.self.href)
}
updateRecurrenceRuleUntilStartDate(event){
event.recurrenceRule.until = moment(angular.copy(event.start).subtract(1, 'day').toDate()).endOf('day').format();
return _app.updatePartially(event._links.self.href, event, ['recurrenceRule']);
}
}
export default EventsService;