package handlers import ( "net/http" "github.com/breakpilot/school-service/internal/models" "github.com/gin-gonic/gin" ) // ---------- Curriculum ---------- func (h *Handler) CreateTimetableCurriculum(c *gin.Context) { uid := getUserID(c) if uid == "" { respondError(c, http.StatusUnauthorized, "User not authenticated") return } var req models.CreateTimetableCurriculumRequest if err := c.ShouldBindJSON(&req); err != nil { respondError(c, http.StatusBadRequest, "Invalid request: "+err.Error()) return } out, err := h.timetableService.CreateCurriculum(c.Request.Context(), uid, &req) if err != nil { respondError(c, http.StatusInternalServerError, "Failed to create curriculum: "+err.Error()) return } respondCreated(c, out) } func (h *Handler) ListTimetableCurriculum(c *gin.Context) { uid := getUserID(c) if uid == "" { respondError(c, http.StatusUnauthorized, "User not authenticated") return } out, err := h.timetableService.ListCurriculum(c.Request.Context(), uid) if err != nil { respondError(c, http.StatusInternalServerError, "Failed to list curriculum: "+err.Error()) return } respondSuccess(c, out) } func (h *Handler) DeleteTimetableCurriculum(c *gin.Context) { uid := getUserID(c) if uid == "" { respondError(c, http.StatusUnauthorized, "User not authenticated") return } if err := h.timetableService.DeleteCurriculum(c.Request.Context(), c.Param("id"), uid); err != nil { respondError(c, http.StatusInternalServerError, "Failed to delete curriculum: "+err.Error()) return } c.JSON(http.StatusOK, gin.H{"message": "Curriculum entry deleted"}) } // ---------- Assignment ---------- func (h *Handler) CreateTimetableAssignment(c *gin.Context) { uid := getUserID(c) if uid == "" { respondError(c, http.StatusUnauthorized, "User not authenticated") return } var req models.CreateTimetableAssignmentRequest if err := c.ShouldBindJSON(&req); err != nil { respondError(c, http.StatusBadRequest, "Invalid request: "+err.Error()) return } out, err := h.timetableService.CreateAssignment(c.Request.Context(), uid, &req) if err != nil { respondError(c, http.StatusInternalServerError, "Failed to create assignment: "+err.Error()) return } respondCreated(c, out) } func (h *Handler) ListTimetableAssignments(c *gin.Context) { uid := getUserID(c) if uid == "" { respondError(c, http.StatusUnauthorized, "User not authenticated") return } out, err := h.timetableService.ListAssignments(c.Request.Context(), uid) if err != nil { respondError(c, http.StatusInternalServerError, "Failed to list assignments: "+err.Error()) return } respondSuccess(c, out) } func (h *Handler) DeleteTimetableAssignment(c *gin.Context) { uid := getUserID(c) if uid == "" { respondError(c, http.StatusUnauthorized, "User not authenticated") return } if err := h.timetableService.DeleteAssignment(c.Request.Context(), c.Param("id"), uid); err != nil { respondError(c, http.StatusInternalServerError, "Failed to delete assignment: "+err.Error()) return } c.JSON(http.StatusOK, gin.H{"message": "Assignment deleted"}) }