diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/academic/AcademicRecord.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/academic/AcademicRecord.kt new file mode 100644 index 00000000..51f4478c --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/academic/AcademicRecord.kt @@ -0,0 +1,56 @@ +package com.chukchukhaksa.mobile.common.model.academic + +data class AcademicRecord( + val courses: AcademicRecordCourses, + val semesterGrade: SemesterGrade +) + +data class AcademicRecordCourses( + val liberal: List, + val major: List +) + +data class SemesterGrade( + val attemptedCredits: Int, + val classRank: Int, + val earnedCredits: Int, + val percentile: Double, + val semester: Int, + val semesterGpa: Double, + val totalStudents: Int, + val year: Int +) + +data class Major( + val areaType: String, + val courseCode: String, + val courseName: String, + val credits: Int, + val grade: String, + val id: String, + val isOnline: Boolean, + val isRetake: Boolean, + val isRetakeDelete: Boolean, + val originalScore: Int, + val professor: String, + val score: Int, + val semester: Int, + val year: Int +) + +data class Liberal( + val areaType: String, + val courseCode: String, + val courseName: String, + val credits: Int, + val grade: String, + val id: String, + val isOnline: Boolean, + val isRetake: Boolean, + val isRetakeDelete: Boolean, + val originalScore: Int, + val professor: String, + val score: Int, + val semester: Int, + val year: Int +) diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/academic/AcademicSummary.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/academic/AcademicSummary.kt new file mode 100644 index 00000000..39295a6c --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/academic/AcademicSummary.kt @@ -0,0 +1,9 @@ +package com.chukchukhaksa.mobile.common.model.academic + +data class AcademicSummary( + val cumulativeGpa: Double, + val percentile: Double, + val requiredCredits: Int, + val totalEarnedCredits: Int +) + diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/graduation/GraduationProcess.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/graduation/GraduationProcess.kt new file mode 100644 index 00000000..ebc85c39 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/graduation/GraduationProcess.kt @@ -0,0 +1,19 @@ +package com.chukchukhaksa.mobile.common.model.graduation + +data class GraduationProcess( + val areaType: String, + val completedElectiveCourses: Int, + val courses: List, + val earnedCredits: Int, + val requiredCredits: Int, + val requiredElectiveCourses: Int, + val totalElectiveCourses: Int +) + +data class GraduationProcessCourse( + val courseName: String, + val credits: Int, + val grade: String, + val semester: Int, + val year: Int +) diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/profile/Profile.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/profile/Profile.kt new file mode 100644 index 00000000..03b0a4fa --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/profile/Profile.kt @@ -0,0 +1,11 @@ +package com.chukchukhaksa.mobile.common.model.profile + +data class Profile( + val name: String, + val studentCode: String, + val departmentName: String, + val majorName: String, + val gradeLevel: Int, + val currentSemester: Int, + val status : String, +) diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/academic/AcademicRecordResponse.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/academic/AcademicRecordResponse.kt new file mode 100644 index 00000000..590c6e65 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/academic/AcademicRecordResponse.kt @@ -0,0 +1,124 @@ +package com.chukchukhaksa.mobile.common.model.response.academic + +import com.chukchukhaksa.mobile.common.model.academic.AcademicRecord +import com.chukchukhaksa.mobile.common.model.academic.AcademicRecordCourses +import com.chukchukhaksa.mobile.common.model.academic.Liberal +import com.chukchukhaksa.mobile.common.model.academic.Major +import com.chukchukhaksa.mobile.common.model.academic.SemesterGrade + +data class AcademicRecordResponse( + val data: AcademicRecordResponseData, + val message: String, + val success: Boolean +) + +data class AcademicRecordResponseData( + val courses: AcademicRecordCoursesData, + val semesterGrade: SemesterGradeData +) { + fun toAcademicRecord() = AcademicRecord( + courses = courses.toAcademicRecordCourses(), + semesterGrade = semesterGrade.toSemesterGrade() + ) +} + +data class AcademicRecordCoursesData( + val liberal: List, + val major: List +) { + fun toAcademicRecordCourses() = AcademicRecordCourses( + liberal = liberal.map { it.toLiberal() }, + major = major.map { it.toMajor() } + ) +} + + +data class SemesterGradeData( + val attemptedCredits: Int, + val classRank: Int, + val earnedCredits: Int, + val percentile: Double, + val semester: Int, + val semesterGpa: Double, + val totalStudents: Int, + val year: Int +) { + fun toSemesterGrade() = SemesterGrade( + attemptedCredits = attemptedCredits, + classRank = classRank, + earnedCredits = earnedCredits, + percentile = percentile, + semester = semester, + semesterGpa = semesterGpa, + totalStudents = totalStudents, + year = year, + ) +} + +data class MajorData( + val areaType: String, + val courseCode: String, + val courseName: String, + val credits: Int, + val grade: String, + val id: String, + val isOnline: Boolean, + val isRetake: Boolean, + val isRetakeDelete: Boolean, + val originalScore: Int, + val professor: String, + val score: Int, + val semester: Int, + val year: Int +) { + fun toMajor() = Major( + areaType = areaType, + courseCode = courseCode, + courseName = courseName, + credits = credits, + grade = grade, + id = id, + isOnline = isOnline, + isRetake = isRetake, + isRetakeDelete = isRetakeDelete, + originalScore = originalScore, + professor = professor, + score = score, + semester = semester, + year = year, + ) +} + +data class LiberalData( + val areaType: String, + val courseCode: String, + val courseName: String, + val credits: Int, + val grade: String, + val id: String, + val isOnline: Boolean, + val isRetake: Boolean, + val isRetakeDelete: Boolean, + val originalScore: Int, + val professor: String, + val score: Int, + val semester: Int, + val year: Int +) { + fun toLiberal() = Liberal( + areaType = areaType, + courseCode = courseCode, + courseName = courseName, + credits = credits, + grade = grade, + id = id, + isOnline = isOnline, + isRetake = isRetake, + isRetakeDelete = isRetakeDelete, + originalScore = originalScore, + professor = professor, + score = score, + semester = semester, + year = year, + ) +} diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/academic/AcademicSummaryResponse.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/academic/AcademicSummaryResponse.kt new file mode 100644 index 00000000..71689446 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/academic/AcademicSummaryResponse.kt @@ -0,0 +1,24 @@ +package com.chukchukhaksa.mobile.common.model.response.academic + +import com.chukchukhaksa.mobile.common.model.academic.AcademicSummary + +data class AcademicSummaryResponse( + val data: AcademicSummaryResponseData, + val message: String, + val success: Boolean +) + +data class AcademicSummaryResponseData( + val cumulativeGpa: Double, + val percentile: Double, + val requiredCredits: Int, + val totalEarnedCredits: Int +) { + fun toAcademicSummary() = AcademicSummary( + cumulativeGpa = cumulativeGpa, + percentile = percentile, + requiredCredits = requiredCredits, + totalEarnedCredits = totalEarnedCredits, + ) +} + diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/graduation/GraduationProcessResponse.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/graduation/GraduationProcessResponse.kt new file mode 100644 index 00000000..a9761b75 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/graduation/GraduationProcessResponse.kt @@ -0,0 +1,51 @@ +package com.chukchukhaksa.mobile.common.model.response.graduation + +import com.chukchukhaksa.mobile.common.model.graduation.GraduationProcess +import com.chukchukhaksa.mobile.common.model.graduation.GraduationProcessCourse + +data class GraduationProcessResponse( + val data: GraduationProcessResponseData, + val message: String, + val success: Boolean +) + +data class GraduationProcessResponseData( + val graduationProgress: List, + val hasDifferentGraduationRequirement: Boolean +) + +data class GraduationProgressData( + val areaType: String, + val completedElectiveCourses: Int, + val courses: List, + val earnedCredits: Int, + val requiredCredits: Int, + val requiredElectiveCourses: Int, + val totalElectiveCourses: Int +) { + fun toGraduationProcess() = GraduationProcess( + areaType = areaType, + completedElectiveCourses = completedElectiveCourses, + courses = courses.map { it.toGraduationProcessCourse() }, + earnedCredits = earnedCredits, + requiredCredits = requiredCredits, + requiredElectiveCourses = requiredElectiveCourses, + totalElectiveCourses = totalElectiveCourses, + ) +} + +data class GraduationProcessCourseData( + val courseName: String, + val credits: Int, + val grade: String, + val semester: Int, + val year: Int +) { + fun toGraduationProcessCourse() = GraduationProcessCourse( + courseName = courseName, + credits = credits, + grade = grade, + semester = semester, + year = year, + ) +} diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/profile/ProfileResponse.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/profile/ProfileResponse.kt new file mode 100644 index 00000000..7e0fdf34 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/profile/ProfileResponse.kt @@ -0,0 +1,32 @@ +package com.chukchukhaksa.mobile.common.model.response.profile + +import com.chukchukhaksa.mobile.common.model.profile.Profile + +data class ProfileResponse( + val success: Boolean, + val data: ProfileResponseData, + val message: String, +) + +data class ProfileResponseData( + val name: String, + val studentCode: String, + val departmentName: String, + val majorName: String, + val gradeLevel: Int, + val currentSemester: Int, + val status : String, + val lastUpdatedAt: String, + val lastSyncedAt : String, + val reconnectionRequired: Boolean +) { + fun toProfile() = Profile( + name = name, + studentCode = studentCode, + departmentName = departmentName, + majorName = majorName, + gradeLevel = gradeLevel, + currentSemester = currentSemester, + status = status + ) +} diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/semester/SemesterGradesListResponse.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/semester/SemesterGradesListResponse.kt new file mode 100644 index 00000000..1014d86d --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/semester/SemesterGradesListResponse.kt @@ -0,0 +1,36 @@ +package com.chukchukhaksa.mobile.common.model.response.semester + +import com.chukchukhaksa.mobile.common.model.semester.SemesterGrades +import com.chukchukhaksa.mobile.common.model.semester.SemesterGradesList + +data class SemesterGradesListResponse( + val data: List, + val message: String, + val success: Boolean +) { + fun toSemesterGradesList() = SemesterGradesList( + semesterGradesList = data.map { it.toSemesterGrades() } + ) +} + +data class SemesterGradesData( + val attemptedCredits: Int, + val classRank: Int, + val earnedCredits: Int, + val percentile: Double, + val semester: Int, + val semesterGpa: Double, + val totalStudents: Int, + val year: Int +) { + fun toSemesterGrades() = SemesterGrades( + attemptedCredits = attemptedCredits, + classRank = classRank, + earnedCredits = earnedCredits, + percentile = percentile, + semester = semester, + semesterGpa = semesterGpa, + totalStudents = totalStudents, + year = year, + ) +} diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/semester/SemesterListResponse.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/semester/SemesterListResponse.kt new file mode 100644 index 00000000..144e7d0f --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/response/semester/SemesterListResponse.kt @@ -0,0 +1,24 @@ +package com.chukchukhaksa.mobile.common.model.response.semester + +import com.chukchukhaksa.mobile.common.model.semester.SemesterList +import com.chukchukhaksa.mobile.presentation.timetable.semesterselect.Semester + +data class SemesterListResponse( + val data: List, + val message: String, + val success: Boolean +) { + fun toSemesterList() = SemesterList( + semesterList = data.map { it.toSemester() } + ) +} + +data class SemesterData( + val semester: Int, + val year: Int +) { + fun toSemester() = Semester( + semester = semester.toString(), + year = year.toString(), + ) +} diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/semester/SemesterGradesList.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/semester/SemesterGradesList.kt new file mode 100644 index 00000000..cc5c51ce --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/semester/SemesterGradesList.kt @@ -0,0 +1,16 @@ +package com.chukchukhaksa.mobile.common.model.semester + +data class SemesterGradesList( + val semesterGradesList: List, +) + +data class SemesterGrades( + val attemptedCredits: Int, + val classRank: Int, + val earnedCredits: Int, + val percentile: Double, + val semester: Int, + val semesterGpa: Double, + val totalStudents: Int, + val year: Int +) diff --git a/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/semester/SemesterList.kt b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/semester/SemesterList.kt new file mode 100644 index 00000000..35f2c4c6 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/com/chukchukhaksa/mobile/common/model/semester/SemesterList.kt @@ -0,0 +1,8 @@ +package com.chukchukhaksa.mobile.common.model.semester + +import com.chukchukhaksa.mobile.presentation.timetable.semesterselect.Semester + +data class SemesterList( + val semesterList: List +) +