diff --git a/app/src/main/java/com/spoony/spoony/data/datasource/PlaceDataSource.kt b/app/src/main/java/com/spoony/spoony/data/datasource/PlaceDataSource.kt index e0ea8bf0..a18e4cce 100644 --- a/app/src/main/java/com/spoony/spoony/data/datasource/PlaceDataSource.kt +++ b/app/src/main/java/com/spoony/spoony/data/datasource/PlaceDataSource.kt @@ -1,8 +1,15 @@ package com.spoony.spoony.data.datasource import com.spoony.spoony.data.dto.base.BaseResponse +import com.spoony.spoony.data.dto.response.PlaceCheckResponseDto import com.spoony.spoony.data.dto.response.SearchPlaceResponseDto interface PlaceDataSource { suspend fun getPlaces(query: String, display: Int): BaseResponse + + suspend fun checkDuplicatePlace( + userId: Long, + latitude: Double, + longitude: Double + ): BaseResponse } diff --git a/app/src/main/java/com/spoony/spoony/data/datasourceimpl/PlaceDataSourceImpl.kt b/app/src/main/java/com/spoony/spoony/data/datasourceimpl/PlaceDataSourceImpl.kt index 02fabf42..53bbbdef 100644 --- a/app/src/main/java/com/spoony/spoony/data/datasourceimpl/PlaceDataSourceImpl.kt +++ b/app/src/main/java/com/spoony/spoony/data/datasourceimpl/PlaceDataSourceImpl.kt @@ -2,6 +2,8 @@ package com.spoony.spoony.data.datasourceimpl import com.spoony.spoony.data.datasource.PlaceDataSource import com.spoony.spoony.data.dto.base.BaseResponse +import com.spoony.spoony.data.dto.request.PlaceCheckRequestDto +import com.spoony.spoony.data.dto.response.PlaceCheckResponseDto import com.spoony.spoony.data.dto.response.SearchPlaceResponseDto import com.spoony.spoony.data.service.PlaceService import javax.inject.Inject @@ -14,4 +16,17 @@ class PlaceDataSourceImpl @Inject constructor( display: Int ): BaseResponse = placeService.getPlaces(query, display) + + override suspend fun checkDuplicatePlace( + userId: Long, + latitude: Double, + longitude: Double + ): BaseResponse = + placeService.postDuplicatePlace( + PlaceCheckRequestDto( + userId = userId, + latitude = latitude, + longitude = longitude + ) + ) } diff --git a/app/src/main/java/com/spoony/spoony/data/dto/request/PlaceCheckRequestDto.kt b/app/src/main/java/com/spoony/spoony/data/dto/request/PlaceCheckRequestDto.kt new file mode 100644 index 00000000..228312d7 --- /dev/null +++ b/app/src/main/java/com/spoony/spoony/data/dto/request/PlaceCheckRequestDto.kt @@ -0,0 +1,14 @@ +package com.spoony.spoony.data.dto.request + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class PlaceCheckRequestDto( + @SerialName("userId") + val userId: Long, + @SerialName("latitude") + val latitude: Double, + @SerialName("longitude") + val longitude: Double +) diff --git a/app/src/main/java/com/spoony/spoony/data/dto/response/PlaceCheckResponseDto.kt b/app/src/main/java/com/spoony/spoony/data/dto/response/PlaceCheckResponseDto.kt new file mode 100644 index 00000000..07b932d5 --- /dev/null +++ b/app/src/main/java/com/spoony/spoony/data/dto/response/PlaceCheckResponseDto.kt @@ -0,0 +1,10 @@ +package com.spoony.spoony.data.dto.response + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class PlaceCheckResponseDto( + @SerialName("duplicate") + val idDuplicated: Boolean +) diff --git a/app/src/main/java/com/spoony/spoony/data/repositoryimpl/RegisterRepositoryImpl.kt b/app/src/main/java/com/spoony/spoony/data/repositoryimpl/RegisterRepositoryImpl.kt index 85bc2689..73f2d81f 100644 --- a/app/src/main/java/com/spoony/spoony/data/repositoryimpl/RegisterRepositoryImpl.kt +++ b/app/src/main/java/com/spoony/spoony/data/repositoryimpl/RegisterRepositoryImpl.kt @@ -68,7 +68,7 @@ class RegisterRepositoryImpl @Inject constructor( latitude: Double, longitude: Double ): Result = runCatching { - latitude == 35.8703 && longitude == 128.5978 + placeDataSource.checkDuplicatePlace(userId, latitude, longitude).data!!.idDuplicated } override suspend fun registerPost( diff --git a/app/src/main/java/com/spoony/spoony/data/service/PlaceService.kt b/app/src/main/java/com/spoony/spoony/data/service/PlaceService.kt index 44bfa04c..9f3a3124 100644 --- a/app/src/main/java/com/spoony/spoony/data/service/PlaceService.kt +++ b/app/src/main/java/com/spoony/spoony/data/service/PlaceService.kt @@ -1,8 +1,12 @@ package com.spoony.spoony.data.service import com.spoony.spoony.data.dto.base.BaseResponse +import com.spoony.spoony.data.dto.request.PlaceCheckRequestDto +import com.spoony.spoony.data.dto.response.PlaceCheckResponseDto import com.spoony.spoony.data.dto.response.SearchPlaceResponseDto +import retrofit2.http.Body import retrofit2.http.GET +import retrofit2.http.POST import retrofit2.http.Query interface PlaceService { @@ -11,4 +15,9 @@ interface PlaceService { @Query("query") query: String, @Query("display") display: Int = 5 ): BaseResponse + + @POST("api/v1/place/check") + suspend fun postDuplicatePlace( + @Body request: PlaceCheckRequestDto + ): BaseResponse } diff --git a/app/src/main/java/com/spoony/spoony/presentation/register/RegisterViewModel.kt b/app/src/main/java/com/spoony/spoony/presentation/register/RegisterViewModel.kt index 3db48ecc..a71b7bbd 100644 --- a/app/src/main/java/com/spoony/spoony/presentation/register/RegisterViewModel.kt +++ b/app/src/main/java/com/spoony/spoony/presentation/register/RegisterViewModel.kt @@ -243,7 +243,7 @@ fun CategoryEntity.toPresentation(): Category = categoryId = categoryId, categoryName = categoryName, iconUrlSelected = iconUrl, - iconUrlNotSelected = unSelectedIconUrl ?: iconUrl + iconUrlNotSelected = unSelectedIconUrl ?: "" ) fun PlaceEntity.toPresentation(): Place =