Skip to content

Commit

Permalink
adding arralylist of event in mahasiswa classs, adding a way to get t…
Browse files Browse the repository at this point in the history
…he event arraylist method into user which then is overrided in mahasiswa mmodels class, adding a way to store mahasiswa's enrolled event into object mahasiswa and updating it in the firestore db, adding a printout to [rint event of enroolled current user into userDataMenu
  • Loading branch information
gmiiii committed Dec 29, 2024
1 parent df82338 commit a48fb43
Show file tree
Hide file tree
Showing 6 changed files with 110 additions and 30 deletions.
23 changes: 11 additions & 12 deletions imgui.ini
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ Collapsed=0
DockId=0x00000001,0

[Window][Dear ImGui Demo]
Pos=737,30
Size=220,1088
Pos=859,35
Size=220,603
Collapsed=0
DockId=0x00000002,0

Expand All @@ -21,7 +21,7 @@ Collapsed=0

[Window][Connectify]
Pos=0,0
Size=958,1120
Size=1080,640
Collapsed=0

[Window][Content]
Expand Down Expand Up @@ -65,8 +65,8 @@ Size=363,714
Collapsed=0

[Window][Community]
Pos=1,30
Size=734,1088
Pos=1,35
Size=856,603
Collapsed=0
DockId=0x0000000F,0

Expand All @@ -78,7 +78,7 @@ DockId=0x0000000B,0

[Window][Tool Bar]
Pos=1,2
Size=956,26
Size=1078,31
Collapsed=0
DockId=0x0000000D,0

Expand All @@ -100,9 +100,8 @@ DockId=0x00000001,1

[Window][Event Manager]
Pos=1,30
Size=1013,661
Size=1041,661
Collapsed=0
DockId=0x00000001,1

[Window][Create new Event]
Pos=345,129
Expand Down Expand Up @@ -193,17 +192,17 @@ Column 1 Width=69
Column 2 Width=71

[Docking][Data]
DockSpace ID=0xD9228505 Window=0x34BB4E38 Pos=1,2 Size=956,1116 Split=Y Selected=0x76E46F41
DockNode ID=0x0000000D Parent=0xD9228505 SizeRef=1078,26 HiddenTabBar=1 Selected=0xDFE559BD
DockNode ID=0x0000000E Parent=0xD9228505 SizeRef=1078,608 Split=Y
DockSpace ID=0xD9228505 Window=0x34BB4E38 Pos=1,2 Size=1078,636 Split=Y Selected=0x76E46F41
DockNode ID=0x0000000D Parent=0xD9228505 SizeRef=1078,31 HiddenTabBar=1 Selected=0xDFE559BD
DockNode ID=0x0000000E Parent=0xD9228505 SizeRef=1078,603 Split=Y
DockNode ID=0x0000000B Parent=0x0000000E SizeRef=1918,26 HiddenTabBar=1 Selected=0x0CD52F5F
DockNode ID=0x0000000C Parent=0x0000000E SizeRef=1918,688 Split=X
DockNode ID=0x00000003 Parent=0x0000000C SizeRef=220,716 Split=X Selected=0xE1584999
DockNode ID=0x00000005 Parent=0x00000003 SizeRef=220,716 Split=X Selected=0xE1584999
DockNode ID=0x00000007 Parent=0x00000005 SizeRef=220,716 Split=X Selected=0xE1584999
DockNode ID=0x00000009 Parent=0x00000007 SizeRef=220,716 Split=X Selected=0x47243469
DockNode ID=0x00000001 Parent=0x00000009 SizeRef=856,1125 Split=X Selected=0x47243469
DockNode ID=0x0000000F Parent=0x00000001 SizeRef=1043,1097 CentralNode=1 Selected=0x47243469
DockNode ID=0x0000000F Parent=0x00000001 SizeRef=1043,1097 CentralNode=1 HiddenTabBar=1 Selected=0x47243469
DockNode ID=0x00000010 Parent=0x00000001 SizeRef=651,1097 Selected=0x2ED208CF
DockNode ID=0x00000002 Parent=0x00000009 SizeRef=220,1125 Selected=0xE87781F4
DockNode ID=0x0000000A Parent=0x00000007 SizeRef=540,716 Selected=0x717E0576
Expand Down
59 changes: 48 additions & 11 deletions src/main/java/core/AppManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ public static QuerySnapshot getQueryByFieldValue(String path, String fieldName,
/// User section
/// ------------------------------------




public static User createUserFromDoc(QueryDocumentSnapshot doc) {
try {
String displayName = doc.getString("displayname");
Expand Down Expand Up @@ -141,6 +144,34 @@ public static User getUserById(String userId) {
}
}

public static void storeEventToUser(Event event, User user) {
try {
if (user.isMahasiswa()) {
Mahasiswa mhs = (Mahasiswa) user;
mhs.addEvent(event); // Add the event to the mahasiswa's list of events

// Optionally, update the Firestore record for the mahasiswa
Map<String, Object> updateData = new HashMap<>();
List<String> eventIds = new ArrayList<>();
for (Event e : mhs.getEvents()) {
eventIds.add(e.getId()); // Manually collect the event IDs
}
updateData.put("eventIds", eventIds);

firestore.collection("users")
.document(user.getId())
.update(updateData);
} else {
System.err.println("[ERROR] User is not a mahasiswa.");
}
} catch (Exception e) {
System.err.println("[ERROR] Failed to add event to user: " + e.getMessage());
}
}




/// ------------------------------------
/// Chat section
/// ------------------------------------
Expand Down Expand Up @@ -295,22 +326,27 @@ public static void storeQuestToEvent(Quest quest, Event event) {
}

public static void storeMahasiswaToEvent(Mahasiswa mhs, Event event) {
try {
// add quests first
event.getQuests().forEach(mhs::addQuest);
event.addMahasiswa(mhs);
if (mhs instanceof Mahasiswa) {
try {
// add quests first
event.getQuests().forEach(mhs::addQuest);
event.addMahasiswa(mhs);

Map<String, Object> updateData = new HashMap<>();
updateData.put("mahasiswaIds", event.getMahasiswaIds());
Map<String, Object> updateData = new HashMap<>();
updateData.put("mahasiswaIds", event.getMahasiswaIds());

firestore.collection("events")
.document(event.getId())
.update(updateData);
} catch (Exception e) {
System.err.println("[ERROR] Failed to add mahasiswa to event!");
firestore.collection("events")
.document(event.getId())
.update(updateData);
} catch (Exception e) {
System.err.println("[ERROR] Failed to add mahasiswa to event!");
}
} else {
System.out.println("Only Mahasiswa can be added to events.");
}
}


public static void storeEventToDatabase(Event event) {
try {
Map<String, Object> comData = event.getStringObjectMap();
Expand Down Expand Up @@ -361,6 +397,7 @@ public static void updateEvent(Event event) {
}
}


/// ------------------------------------
/// Achievement section
/// ------------------------------------
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/models/Community.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,21 @@ public void addMahasiswa(Mahasiswa mhs) {
}
}

public void addUser(User user) {
if (user instanceof Mahasiswa) {
Mahasiswa mahasiswa = (Mahasiswa) user;
if (!mahasiswaIds.contains(mahasiswa.getId())) {
addMahasiswa(mahasiswa); // Use the existing addMahasiswa method
System.out.println("User berhasil ditambahkan ke komunitas.");
} else {
System.out.println("User sudah menjadi bagian dari komunitas ini.");
}
} else {
System.out.println("Hanya mahasiswa yang dapat bergabung ke komunitas ini.");
}
}


public final List<Mahasiswa> getMahasiswa() {
return mahasiswa;
}
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/models/Mahasiswa.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,30 @@
package models;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Mahasiswa extends User {
private final Map<Quest, Boolean> quests;
private List<Achievement> achievements;
private List<Event> events;

public Mahasiswa(String name, String username, String company) {
super(name, username, "MAHASISWA", company);
quests = new HashMap<>();
events = new ArrayList<>();
}

public void addEvent(Event event) {
if (!events.contains(event)) {
events.add(event); // Add the event if it's not already added
}
}

@Override
public List<Event> getEvents() {
return events;
}

public void addQuest(Quest q) {
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/models/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import core.EncryptionUtils;
import org.jetbrains.annotations.NotNull;

import java.util.List;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Map;

public class User extends ModelBase {
Expand All @@ -19,6 +21,7 @@ public User(String name, String username, String type, String company) {
this.username = username;
this.type = type;
this.company = company;

}

public User(String name, String username, String type, String company, String password) {
Expand Down Expand Up @@ -62,6 +65,11 @@ public String getType() {
return type;
}

public List<Event> getEvents() {
return new ArrayList<>();
}


@NotNull
public Map<String, Object> getStringObjectMap() {
Map<String, Object> userData = new HashMap<>();
Expand Down
21 changes: 14 additions & 7 deletions src/main/java/tests/UnitTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,15 +145,14 @@ private void communityMenu(Scanner scanner) {

Event selectedEvent = AppManager.getEventByTitle(eventTitle);
if (selectedEvent != null) {

// INFO: Currently only working without communities
AppManager.storeMahasiswaToEvent((Mahasiswa)AppManager.currentUser, selectedEvent);
AppManager.storeMahasiswaToEvent((Mahasiswa) AppManager.currentUser, selectedEvent);
System.out.printf("Mahasiswa %s berhasil mengikuti event %s\n",
AppManager.currentUser.getName(), selectedEvent.getTitle());

} else {
System.out.println("Event dengan judul tersebut tidak ditemukan.");
}
AppManager.storeEventToUser(selectedEvent, AppManager.currentUser);
} else {
System.out.println("Hanya mahasiswa yang bisa mendaftar ke event.");
}
Expand Down Expand Up @@ -234,7 +233,7 @@ private void communityMenu(Scanner scanner) {
if (communityIndex >= 1 && communityIndex <= AppManager.communities.size()) {
Community selectedCommunity = AppManager.communities.get(communityIndex - 1);
if (!selectedCommunity.getMahasiswaIds().contains(AppManager.currentUser.getId())) {
selectedCommunity.addMahasiswa((Mahasiswa) AppManager.currentUser);
selectedCommunity.addUser(AppManager.currentUser);
System.out.println("Anda berhasil bergabung ke komunitas " + selectedCommunity.getName());
} else {
System.out.println("Anda sudah menjadi bagian dari komunitas ini.");
Expand Down Expand Up @@ -273,10 +272,18 @@ private void dataUserMenu() {
System.out.println("Username : " + currentUser.getUsername());
System.out.println("Role : " + currentUser.getType());
System.out.println("Password : " + currentUser.getPassword());
System.out.println("============================================");

if (AppManager.currentUser.isMahasiswa()) {
System.out.println("Event : ");
for (Event event : currentUser.getEvents()) {
System.out.println(" - " + event.getTitle());
}
System.out.println("============================================");
}
}
}


private void dataCommunityMenu() {
System.out.println("=======================================");
System.out.println("-------- Daftar Komunitas --------");
Expand All @@ -298,9 +305,9 @@ private void dataCommunityMenu() {

System.out.println("Pilih event :");


List<Quest> quests = event.getQuests();
if (AppManager.currentUser != null) {
for (int i = 0; i < event.getQuests(); i++) {
for (int i = 0; i < quests.size(); i++) {
System.out.println("Daftar quest dalam event: " + community.getEvents());
}
}
Expand Down

0 comments on commit a48fb43

Please sign in to comment.