assignment mark format

This commit is contained in:
RIT Services
2026-08-21 06:08:27 +00:00
parent 6e52735484
commit d3be597489
8 changed files with 423 additions and 54 deletions

View File

@@ -7,6 +7,8 @@ import com.rit.whatsapp.service.WhatsAppMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.context.annotation.Lazy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -18,11 +20,13 @@ public class GrievanceHandler {
private final WhatsAppMessageService messageService;
private final SessionService sessionService;
private final StudentMenuHandler studentMenuHandler;
@Autowired
public GrievanceHandler(WhatsAppMessageService messageService, SessionService sessionService) {
public GrievanceHandler(WhatsAppMessageService messageService, SessionService sessionService, @Lazy StudentMenuHandler studentMenuHandler) {
this.messageService = messageService;
this.sessionService = sessionService;
this.studentMenuHandler = studentMenuHandler;
}
public void startGrievanceFlow(String phoneNumber) {
@@ -39,6 +43,7 @@ public class GrievanceHandler {
);
messageService.sendInteractiveMessage(phoneNumber, buttonMessage);
studentMenuHandler.sendStudentMenuDirectly(phoneNumber);
}
public void handleCategorySelection(String phoneNumber, String selectedCategory) {
@@ -60,6 +65,9 @@ public class GrievanceHandler {
// Reset state back to main menu
sessionService.resetState(phoneNumber);
// Display student menu
studentMenuHandler.sendStudentMenuDirectly(phoneNumber);
}
private Map<String, String> createButton(String id, String title) {

View File

@@ -81,22 +81,43 @@ public class StudentMenuHandler {
weeklyBtn.put("id", "student_weekly_timetable");
weeklyBtn.put("title", "Weekly Timetable");
buttons.add(weeklyBtn);
Map<String, String> menuBtn = new HashMap<>();
menuBtn.put("id", "student_show_menu");
menuBtn.put("title", "Student Menu");
buttons.add(menuBtn);
System.out.println("FINAL TODAY TIMETABLE MESSAGE:\n" + todaySchedule);
Map<String, Object> buttonMessage = WhatsAppMessageBuilder.buildButtonMessage(todaySchedule, buttons);
messageService.sendInteractiveMessage(phoneNumber, buttonMessage);
sendStudentMenuDirectly(phoneNumber);
break;
case "student_internal_marks":
sendInternalMarksMenu(phoneNumber);
break;
case "student_internal_marks":
String rawCatMarks = imsApiService.getCatMarks(token);
String rawAssignmentMarks = imsApiService.getAssignmentMarks(token);
sendResponseWithMenu(phoneNumber, MessageFormatter.formatInternalMarks(rawCatMarks, rawAssignmentMarks));
case "student_cat1_marks":
handleCat1Marks(phoneNumber);
break;
case "student_cat2_marks":
handleCat2Marks(phoneNumber);
break;
case "student_cat3_marks":
handleCat3Marks(phoneNumber);
break;
case "student_assignment_marks":
handleAssignmentMarks(phoneNumber);
break;
case "student_semester_results":
sendSemesterSelection(phoneNumber, token);
break;
case "student_fee_details": {
String rawFees = imsApiService.getFees(token);
String bodyText = MessageFormatter.formatAcademicFeesOnly(rawFees);
@@ -118,6 +139,7 @@ public class StudentMenuHandler {
Map<String, Object> feeButtonMessage = WhatsAppMessageBuilder.buildButtonMessage(bodyText, feeButtons);
messageService.sendInteractiveMessage(phoneNumber, feeButtonMessage);
sendStudentMenuDirectly(phoneNumber);
break;
}
@@ -166,6 +188,7 @@ public class StudentMenuHandler {
);
messageService.sendInteractiveMessage(phoneNumber, interactiveList);
sendStudentMenuDirectly(phoneNumber);
}
public void handleSemesterSelection(String phoneNumber, String selectedOptionId) {
@@ -312,6 +335,7 @@ public class StudentMenuHandler {
"Receipts", formattedHistory, "Download Receipt", receiptRows
);
messageService.sendInteractiveMessage(phoneNumber, listMessage);
sendStudentMenuDirectly(phoneNumber);
} else {
sendResponseWithMenu(phoneNumber, formattedHistory);
}
@@ -344,6 +368,80 @@ public class StudentMenuHandler {
rows
);
messageService.sendInteractiveMessage(phoneNumber, interactiveList);
sendStudentMenuDirectly(phoneNumber);
}
public void sendStudentMenuDirectly(String phoneNumber) {
sessionService.setUserState(phoneNumber, UserState.MAIN_MENU);
Map<String, Object> interactiveList = WhatsAppMessageBuilder.buildListMessage(
null,
"Select an option from the menu below",
"Student Menu",
getStudentMenuRows()
);
messageService.sendInteractiveMessage(phoneNumber, interactiveList);
}
public void sendInternalMarksMenu(String phoneNumber) {
List<Map<String, String>> rows = new ArrayList<>();
rows.add(createRow("student_cat1_marks", "CAT 1 Marks", "View CAT 1 (CO1) marks"));
rows.add(createRow("student_cat2_marks", "CAT 2 Marks", "View CAT 2 (CO2) marks"));
rows.add(createRow("student_cat3_marks", "CAT 3 Marks", "View CAT 3 (CO3) marks"));
rows.add(createRow("student_assignment_marks", "Assignment Marks", "View assignments 1-5 marks"));
Map<String, Object> interactiveList = WhatsAppMessageBuilder.buildListMessage(
"Internal Marks",
"Select which internal marks you want to view:",
"Select Option",
rows
);
messageService.sendInteractiveMessage(phoneNumber, interactiveList);
sendStudentMenuDirectly(phoneNumber);
}
public void handleCat1Marks(String phoneNumber) {
String token = sessionService.getImsToken(phoneNumber);
if (token == null) {
messageService.sendMessage(phoneNumber, "Your session has expired. Please type 'Reset' to login again.");
return;
}
String rawCatMarks = imsApiService.getCatMarks(token);
String formatted = com.rit.whatsapp.util.MessageFormatter.formatCat1Marks(rawCatMarks);
sendResponseWithMenu(phoneNumber, formatted);
}
public void handleCat2Marks(String phoneNumber) {
String token = sessionService.getImsToken(phoneNumber);
if (token == null) {
messageService.sendMessage(phoneNumber, "Your session has expired. Please type 'Reset' to login again.");
return;
}
String rawCatMarks = imsApiService.getCatMarks(token);
String formatted = com.rit.whatsapp.util.MessageFormatter.formatCat2Marks(rawCatMarks);
sendResponseWithMenu(phoneNumber, formatted);
}
public void handleCat3Marks(String phoneNumber) {
String token = sessionService.getImsToken(phoneNumber);
if (token == null) {
messageService.sendMessage(phoneNumber, "Your session has expired. Please type 'Reset' to login again.");
return;
}
String rawCatMarks = imsApiService.getCatMarks(token);
String formatted = com.rit.whatsapp.util.MessageFormatter.formatCat3Marks(rawCatMarks);
sendResponseWithMenu(phoneNumber, formatted);
}
public void handleAssignmentMarks(String phoneNumber) {
String token = sessionService.getImsToken(phoneNumber);
if (token == null) {
messageService.sendMessage(phoneNumber, "Your session has expired. Please type 'Reset' to login again.");
return;
}
String rawAssignmentMarks = imsApiService.getAssignmentMarks(token);
String formatted = com.rit.whatsapp.util.MessageFormatter.formatAssignmentMarks(rawAssignmentMarks);
sendResponseWithMenu(phoneNumber, formatted);
}
private List<Map<String, String>> getStudentMenuRows() {