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 provideLogService(impl: LogServiceImpl): LogService | ||||||
| 
 | 
 | ||||||
|     @Binds abstract fun provideConfigurationService(impl: FirebaseConfigurationService): ConfigurationService |     @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 = |     private fun currentUserTimersCollection(): CollectionReference = | ||||||
|         firestore.collection(USER_COLLECTION) |         firestore.collection(FirebaseCollectionRoutes.USER_COLLECTION) | ||||||
|             .document(auth.currentUserId) |             .document(auth.currentUserId) | ||||||
|             .collection(TIMER_COLLECTION) |             .collection(FirebaseCollectionRoutes.TIMER_COLLECTION) | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     companion object { |  | ||||||
|         private const val TIMER_COLLECTION = "timers" |  | ||||||
|         private const val USER_COLLECTION = "users" |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | @ -3,8 +3,6 @@ package be.ugent.sel.studeez.screens.home | ||||||
| import be.ugent.sel.studeez.domain.AccountDAO | import be.ugent.sel.studeez.domain.AccountDAO | ||||||
| import be.ugent.sel.studeez.domain.LogService | import be.ugent.sel.studeez.domain.LogService | ||||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations | 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 be.ugent.sel.studeez.screens.StudeezViewModel | ||||||
| import dagger.hilt.android.lifecycle.HiltViewModel | import dagger.hilt.android.lifecycle.HiltViewModel | ||||||
| import javax.inject.Inject | import javax.inject.Inject | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 lbarraga
						lbarraga