blob: 8fdc8fa51aac3a636df9a165c10d24be11933db3 (
plain)
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
|
import { firestore } from '../firebase.js';
export const UPDATE_ADMIN = 'UPDATE_ADMIN';
export const UPDATE_ADMIN_REQUESTS = 'UPDATE_ADMIN_REQUESTS';
export const UPDATE_ADMIN_COMP_LIST = 'UPDATE_ADMIN_COMP_LIST';
export const updateAdmin = () => {
return {
type: UPDATE_ADMIN,
payload: true
}
}
export const updateAdminRequests = (requests) => {
return {
type: UPDATE_ADMIN_REQUESTS,
payload: requests
}
}
export const updateAdminCompList = (compList) => {
return {
type: UPDATE_ADMIN_COMP_LIST,
payload: compList
}
}
//Middleware to update dispatches
export const adminControls = () => (dispatch) => {
dispatch(updateAdmin());
dispatch(snapshotAdminRequests());
dispatch(snapshotAdminCompList());
}
export const snapshotAdminRequests = () => (dispatch) => {
var docRef = firestore.collection('requests');
docRef.onSnapshot((querySnapshot) => {
var requestList = [];
querySnapshot.forEach((doc) => {
requestList.push({
...doc.data(),
docId: doc.id
});
});
dispatch(updateAdminRequests(requestList));
});
}
export const snapshotAdminCompList = () => (dispatch) => {
var docRef = firestore.collection('competitions');
docRef.onSnapshot((querySnapshot) => {
var compList = [];
querySnapshot.forEach((doc) => {
var divisonData = [];
for(var i = 0; i < doc.data().uids.length; i++) {
var docRefDivison = firestore.collection('users').doc(doc.data().uids[i]);
docRefDivison.get().then((docUser) => {
divisonData.push(docUser.data().divison);
});
}
compList.push({
...doc.data(),
name: doc.id,
divisons: divisonData
});
});
dispatch(updateAdminCompList(compList));
});
}
export const adminRejectHours = (_id) => (dispatch) => {
dispatch(adminDeleteRequest(_id));
}
export const adminDeleteRequest = (_id) => (dispatch) => {
var docRef = firestore.collection('requests').doc(_id);
docRef.delete().then(() => {
console.log('Deleted request with id ' + _id);
});
}
//User triggered events dispatching to middleware
export const adminListener = () => (dispatch, getState) => {
document.onkeyup = function(e) {
if(e.altKey && e.which == 65) {
var docRef = firestore.collection('keys').doc('adminKey');
docRef.get().then((doc) => {
if(prompt('Enter admin password') == doc.data().password) {
dispatch(adminControls());
}
});
}
}
}
export const adminApproveHours = (_uid, _time, _id) => (dispatch) => {
var docRef = firestore.collection('users').doc(_uid);
docRef.get().then((doc) => {
if(doc.exists) {
docRef.update({
hours: (doc.data().hours + _time)
}).catch((error) => {
alert(error);
});
}
});
dispatch(adminDeleteRequest(_id));
}
|