diff --git a/app/src/main/java/com/msg/dotori/module/RemoteDataSourceModule.kt b/app/src/main/java/com/msg/dotori/module/RemoteDataSourceModule.kt index 4c4c5a7a..b6ecbce9 100644 --- a/app/src/main/java/com/msg/dotori/module/RemoteDataSourceModule.kt +++ b/app/src/main/java/com/msg/dotori/module/RemoteDataSourceModule.kt @@ -4,6 +4,10 @@ import com.msg.data.remote.datasource.auth.AuthDataSourceImpl import com.msg.data.remote.datasource.auth.AuthDataSource import com.msg.data.remote.datasource.music.MusicDataSource import com.msg.data.remote.datasource.music.MusicDataSourceImpl +import com.msg.data.remote.datasource.self_study.SelfStudyDataSource +import com.msg.data.remote.datasource.self_study.SelfStudyDataSourceImpl +import com.msg.data.remote.datasource.student_info.StudentInfoDataSource +import com.msg.data.remote.datasource.student_info.StudentInfoDataSourceImpl import dagger.Binds import dagger.Module import dagger.hilt.InstallIn @@ -17,4 +21,10 @@ interface RemoteDataSourceModule { @Binds fun bindsMusicDataSource(musicDataSourceImpl: MusicDataSourceImpl): MusicDataSource + + @Binds + fun bindsStudentInfoDataSource(studentInfoDataSourceImpl: StudentInfoDataSourceImpl): StudentInfoDataSource + + @Binds + fun bindsSelfStudyDataSource(selfStudyDataSourceImpl: SelfStudyDataSourceImpl): SelfStudyDataSource } \ No newline at end of file diff --git a/data/src/main/java/com/msg/data/remote/datasource/self_study/SelfStudyDataSource.kt b/data/src/main/java/com/msg/data/remote/datasource/self_study/SelfStudyDataSource.kt new file mode 100644 index 00000000..ed3e883b --- /dev/null +++ b/data/src/main/java/com/msg/data/remote/datasource/self_study/SelfStudyDataSource.kt @@ -0,0 +1,13 @@ +package com.msg.data.remote.datasource.self_study + +interface SelfStudyDataSource { + suspend fun banSelfStudy( + role: String, + userId: Long + ) + + suspend fun banCancelSelfStudy( + role: String, + userId: Long + ) +} \ No newline at end of file diff --git a/data/src/main/java/com/msg/data/remote/datasource/self_study/SelfStudyDataSourceImpl.kt b/data/src/main/java/com/msg/data/remote/datasource/self_study/SelfStudyDataSourceImpl.kt new file mode 100644 index 00000000..9f8bbb40 --- /dev/null +++ b/data/src/main/java/com/msg/data/remote/datasource/self_study/SelfStudyDataSourceImpl.kt @@ -0,0 +1,23 @@ +package com.msg.data.remote.datasource.self_study + +import com.msg.data.remote.network.SelfStudyApi +import com.msg.data.remote.util.safeApiCall +import javax.inject.Inject + +class SelfStudyDataSourceImpl @Inject constructor( + private val selfStudyApi: SelfStudyApi +): SelfStudyDataSource { + override suspend fun banSelfStudy(role: String, userId: Long) = safeApiCall { + selfStudyApi.banSelfStudy( + role = role, + userId = userId + ) + } + + override suspend fun banCancelSelfStudy(role: String, userId: Long) = safeApiCall { + selfStudyApi.banCancelSelfStudy( + role = role, + userId = userId + ) + } +} \ No newline at end of file diff --git a/data/src/main/java/com/msg/data/remote/datasource/student_info/StudentInfoDataSource.kt b/data/src/main/java/com/msg/data/remote/datasource/student_info/StudentInfoDataSource.kt new file mode 100644 index 00000000..ab0c2e3b --- /dev/null +++ b/data/src/main/java/com/msg/data/remote/datasource/student_info/StudentInfoDataSource.kt @@ -0,0 +1,20 @@ +package com.msg.data.remote.datasource.student_info + +import com.msg.data.remote.dto.student_info.SearchStudentInfoResponse +import com.msg.data.remote.dto.student_info.StudentInfoRequest +import com.msg.data.remote.dto.student_info.StudentInfoResponse + +interface StudentInfoDataSource { + suspend fun getAllStudentInfo(): List + + suspend fun getSearchStudentInfo( + name: String?, + gender: String?, + classNum: String?, + grade: String?, + role: String?, + selfStudy: Boolean?, + ): List + + suspend fun modifyStudentInfo(body: StudentInfoRequest) +} \ No newline at end of file diff --git a/data/src/main/java/com/msg/data/remote/datasource/student_info/StudentInfoDataSourceImpl.kt b/data/src/main/java/com/msg/data/remote/datasource/student_info/StudentInfoDataSourceImpl.kt new file mode 100644 index 00000000..a1ef89bf --- /dev/null +++ b/data/src/main/java/com/msg/data/remote/datasource/student_info/StudentInfoDataSourceImpl.kt @@ -0,0 +1,38 @@ +package com.msg.data.remote.datasource.student_info + +import com.msg.data.remote.dto.student_info.SearchStudentInfoResponse +import com.msg.data.remote.dto.student_info.StudentInfoRequest +import com.msg.data.remote.dto.student_info.StudentInfoResponse +import com.msg.data.remote.network.StudentInfoApi +import com.msg.data.remote.util.safeApiCall +import javax.inject.Inject + +class StudentInfoDataSourceImpl @Inject constructor( + private val studentInfoApi: StudentInfoApi +): StudentInfoDataSource { + override suspend fun getAllStudentInfo(): List = safeApiCall { + studentInfoApi.getAllStudentInfo() + } + + override suspend fun getSearchStudentInfo( + name: String?, + gender: String?, + classNum: String?, + grade: String?, + role: String?, + selfStudy: Boolean?, + ): List = safeApiCall { + studentInfoApi.getSearchStudentInfo( + name = name, + gender = gender, + classNum = classNum, + grade = grade, + role = role, + selfStudy = selfStudy + ) + } + + override suspend fun modifyStudentInfo(body: StudentInfoRequest) = safeApiCall { + studentInfoApi.modifyStudentInfo(body) + } +} \ No newline at end of file diff --git a/data/src/main/java/com/msg/data/remote/dto/student_info/SelfStudyStatus.kt b/data/src/main/java/com/msg/data/remote/dto/student_info/SelfStudyStatus.kt new file mode 100644 index 00000000..af5ee0e8 --- /dev/null +++ b/data/src/main/java/com/msg/data/remote/dto/student_info/SelfStudyStatus.kt @@ -0,0 +1,8 @@ +package com.msg.data.remote.dto.student_info + +enum class SelfStudyStatus { + CAN, + APPLIED, + CANT, + IMPOSSIBLE +} \ No newline at end of file diff --git a/data/src/main/java/com/msg/data/remote/dto/student_info/StudentInfoResponse.kt b/data/src/main/java/com/msg/data/remote/dto/student_info/StudentInfoResponse.kt index 318d6874..8c9cc823 100644 --- a/data/src/main/java/com/msg/data/remote/dto/student_info/StudentInfoResponse.kt +++ b/data/src/main/java/com/msg/data/remote/dto/student_info/StudentInfoResponse.kt @@ -6,5 +6,5 @@ data class StudentInfoResponse( val memberName: String, val stuNum: String, val role: String, - val selfStudyStatus: String + val selfStudyStatus: SelfStudyStatus ) diff --git a/data/src/main/java/com/msg/data/remote/network/StudentInfoApi.kt b/data/src/main/java/com/msg/data/remote/network/StudentInfoApi.kt index 2f564fa7..03880d3e 100644 --- a/data/src/main/java/com/msg/data/remote/network/StudentInfoApi.kt +++ b/data/src/main/java/com/msg/data/remote/network/StudentInfoApi.kt @@ -14,12 +14,12 @@ interface StudentInfoApi { @GET("/student-info/search") suspend fun getSearchStudentInfo( - @Query("name") name: String, - @Query("gender") gender: String, - @Query("classNum") classNum: String, - @Query("grade") grade: Long, - @Query("role") role: String, - @Query("selfStudyCheck") selfStudyCheck: Boolean, + @Query("name") name: String? = null, + @Query("gender") gender: String? = null, + @Query("classNum") classNum: String? = null, + @Query("grade") grade: String? = null, + @Query("role") role: String? = null, + @Query("selfStudy") selfStudy: Boolean? = null, ): List @PUT("/student-info/modify")