commit
						58d0d4fe91
					
				
					 7 changed files with 75 additions and 10 deletions
				
			
		|  | @ -0,0 +1,10 @@ | |||
| package be.ugent.sel.studeez.data.local.models | ||||
| 
 | ||||
| import com.google.firebase.Timestamp | ||||
| import com.google.firebase.firestore.DocumentId | ||||
| 
 | ||||
| data class SessionReport( | ||||
|     @DocumentId val id: String = "", | ||||
|     val studyTime: Int = 0, | ||||
|     val endTime: Timestamp = Timestamp(0, 0) | ||||
|     ) | ||||
|  | @ -19,4 +19,6 @@ abstract class DatabaseModule { | |||
|     @Binds abstract fun provideLogService(impl: LogServiceImpl): LogService | ||||
| 
 | ||||
|     @Binds abstract fun provideConfigurationService(impl: FirebaseConfigurationService): ConfigurationService | ||||
| 
 | ||||
|     @Binds abstract fun provideSessionDAO(impl: FireBaseSessionDAO): SessionDAO | ||||
| } | ||||
							
								
								
									
										15
									
								
								app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| package be.ugent.sel.studeez.domain | ||||
| 
 | ||||
| import be.ugent.sel.studeez.data.local.models.SessionReport | ||||
| import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo | ||||
| import kotlinx.coroutines.flow.Flow | ||||
| 
 | ||||
| interface SessionDAO { | ||||
| 
 | ||||
|     fun getSessions(): Flow<List<SessionReport>> | ||||
| 
 | ||||
|     fun saveSession(newSessionReport: SessionReport) | ||||
| 
 | ||||
|     fun deleteSession(newTimer: TimerInfo) | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,38 @@ | |||
| package be.ugent.sel.studeez.domain.implementation | ||||
| 
 | ||||
| import be.ugent.sel.studeez.data.local.models.SessionReport | ||||
| import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo | ||||
| import be.ugent.sel.studeez.domain.AccountDAO | ||||
| import be.ugent.sel.studeez.domain.SessionDAO | ||||
| import com.google.firebase.firestore.CollectionReference | ||||
| import com.google.firebase.firestore.FirebaseFirestore | ||||
| import com.google.firebase.firestore.ktx.snapshots | ||||
| import kotlinx.coroutines.flow.Flow | ||||
| import kotlinx.coroutines.flow.map | ||||
| import javax.inject.Inject | ||||
| 
 | ||||
| class FireBaseSessionDAO @Inject constructor( | ||||
|     private val firestore: FirebaseFirestore, | ||||
|     private val auth: AccountDAO | ||||
| ) : SessionDAO { | ||||
| 
 | ||||
|     override fun getSessions(): Flow<List<SessionReport>> { | ||||
|         return currentUserSessionsCollection() | ||||
|             .snapshots() | ||||
|             .map { it.toObjects(SessionReport::class.java) } | ||||
|     } | ||||
| 
 | ||||
|     override fun saveSession(newSessionReport: SessionReport) { | ||||
|         currentUserSessionsCollection().add(newSessionReport) | ||||
|     } | ||||
| 
 | ||||
|     override fun deleteSession(newTimer: TimerInfo) { | ||||
|         currentUserSessionsCollection().document(newTimer.id).delete() | ||||
|     } | ||||
| 
 | ||||
|     private fun currentUserSessionsCollection(): CollectionReference = | ||||
|         firestore.collection(FirebaseCollectionRoutes.USER_COLLECTION) | ||||
|             .document(auth.currentUserId) | ||||
|             .collection(FirebaseCollectionRoutes.SESSION_COLLECTION) | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,8 @@ | |||
| package be.ugent.sel.studeez.domain.implementation | ||||
| 
 | ||||
| object FirebaseCollectionRoutes { | ||||
|     const val SESSION_COLLECTION = "sessions" | ||||
|     const val USER_COLLECTION = "users" | ||||
|     const val TIMER_COLLECTION = "timers" | ||||
| 
 | ||||
| } | ||||
|  | @ -50,14 +50,8 @@ class FirebaseTimerDAO @Inject constructor( | |||
|     } | ||||
| 
 | ||||
|     private fun currentUserTimersCollection(): CollectionReference = | ||||
|         firestore.collection(USER_COLLECTION) | ||||
|         firestore.collection(FirebaseCollectionRoutes.USER_COLLECTION) | ||||
|             .document(auth.currentUserId) | ||||
|             .collection(TIMER_COLLECTION) | ||||
| 
 | ||||
| 
 | ||||
|     companion object { | ||||
|         private const val TIMER_COLLECTION = "timers" | ||||
|         private const val USER_COLLECTION = "users" | ||||
|     } | ||||
|             .collection(FirebaseCollectionRoutes.TIMER_COLLECTION) | ||||
| 
 | ||||
| } | ||||
|  | @ -3,8 +3,6 @@ package be.ugent.sel.studeez.screens.home | |||
| import be.ugent.sel.studeez.domain.AccountDAO | ||||
| import be.ugent.sel.studeez.domain.LogService | ||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations | ||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations.HOME_SCREEN | ||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations.LOGIN_SCREEN | ||||
| import be.ugent.sel.studeez.screens.StudeezViewModel | ||||
| import dagger.hilt.android.lifecycle.HiltViewModel | ||||
| import javax.inject.Inject | ||||
|  |  | |||
		Reference in a new issue
	
	 lbarraga
						lbarraga