forked from Elevationacademy/full-stack-project-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathActivityController.js
101 lines (87 loc) · 3.41 KB
/
ActivityController.js
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
class ActivityController {
constructor(model, view) {
this.model = model
this.view = view
}
async filterActivities(filtered = false) {
try {
const to = $('#toSchoolFilter')
const from = $('#fromSchoolFilter')
const location= $('#locationFilter').val()
let activityType = undefined
if (location != "" && to.is(":checked")) {
activityType = "toSchool"
} else if(location != "" && from.is(":checked") ){
activityType = "fromSchool"
}
const universityName = await this.model.getUserUniversity(USER_ID)
const filterData = {
transportationType: $('#transportationTypeFilter').val(),
specificGender: $('#genderFilter').is(':checked'),
date: $('#dateFilter').val(),
location:location,
activityType: activityType,
}
filterData.universityName = universityName
const allActivities = await this.model.getAllActivities(USER_ID, filtered,filterData)
const activities = allActivities.map(activityData => new Activity(activityData))
const modalData = {transportation:["Bus","Car"], university:universityName}
this.view.renderPage(activities,modalData)
} catch (error) {
console.error('Error filtering or fetching activities:', error)
}
}
async addActivity() {
try {
const to = $('#toSchool')
let activityType = undefined
if ( to.is(":checked")) {
activityType = "toSchool"
} else {
activityType = "fromSchool"
}
const activityData = {
date: $('#date').val(),
location: $('#location').val(),
transportationType: $('#transportationType').val(),
capacity: $('#capacity').val(),
gender: $('#gender').is(':checked'),
activityType: activityType,
}
console.log(activityData.location)
await this.model.addActivity(USER_ID, activityData)
this.view.handleSuccess(SUCCESS)
} catch (error) {
this.view.handleError(error)
console.error('Error adding activity:', error)
}
}
async showMyActivities() {
try {
const universityName = await this.model.getUserUniversity(USER_ID)
const myActivities = await this.model.showMyActivities(USER_ID)
const activities = myActivities.map(activityData => new Activity(activityData))
console.log(universityName)
const modalData = {transportation:["Bus","Car"], university:universityName}
this.view.renderMyPage(activities,modalData)
} catch (error) {
console.error('Error fetching user activities:', error)
}
}
async deleteMyActivity(activityId) {
try {
await this.model.deleteMyActivity(USER_ID, activityId)
this.showMyActivities()
} catch (error) {
console.error('Error removing activity:', error)
}
}
async editCapacity(activityId, newCapacity) {
try {
await this.model.editCapacity(USER_ID, activityId, newCapacity)
this.showMyActivities()
} catch (error) {
console.error('Error editing capacity:', error)
}
}
}