From 1e767d22a4272e67a5dbcb7525f539c680f49903 Mon Sep 17 00:00:00 2001 From: Lukas Barragan Torres Date: Tue, 18 Apr 2023 15:34:41 +0200 Subject: [PATCH 1/5] #76 added sessionDAO --- .../data/local/models/SessionReport.kt | 4 ++ .../be/ugent/sel/studeez/domain/SessionDAO.kt | 4 ++ .../implementation/FireBaseSessionDAO.kt | 43 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 app/src/main/java/be/ugent/sel/studeez/data/local/models/SessionReport.kt create mode 100644 app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt create mode 100644 app/src/main/java/be/ugent/sel/studeez/domain/implementation/FireBaseSessionDAO.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/SessionReport.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/SessionReport.kt new file mode 100644 index 0000000..ae6ec4e --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/SessionReport.kt @@ -0,0 +1,4 @@ +package be.ugent.sel.studeez.data.local.models + +class SessionReport { +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt new file mode 100644 index 0000000..59faa6b --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt @@ -0,0 +1,4 @@ +package be.ugent.sel.studeez.domain + +interface SessionDAO { +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FireBaseSessionDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FireBaseSessionDAO.kt new file mode 100644 index 0000000..1fbe2cb --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FireBaseSessionDAO.kt @@ -0,0 +1,43 @@ +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> { + 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(USER_COLLECTION) + .document(auth.currentUserId) + .collection(SESSION_COLLECTION) + + companion object { + private const val SESSION_COLLECTION = "sessions" + private const val USER_COLLECTION = "users" + } + +} \ No newline at end of file From 8a7e1e4c2ca9b5e131b008c05f58bb390cbb84b4 Mon Sep 17 00:00:00 2001 From: Lukas Barragan Torres Date: Tue, 18 Apr 2023 15:37:07 +0200 Subject: [PATCH 2/5] #76 added sessionDAO --- .../java/be/ugent/sel/studeez/domain/SessionDAO.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt index 59faa6b..77087d2 100644 --- a/app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt +++ b/app/src/main/java/be/ugent/sel/studeez/domain/SessionDAO.kt @@ -1,4 +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> + + fun saveSession(newSessionReport: SessionReport) + + fun deleteSession(newTimer: TimerInfo) + } \ No newline at end of file From 31e07d2784f78d6fe3005613be5b94ed6ed62d51 Mon Sep 17 00:00:00 2001 From: Lukas Barragan Torres Date: Tue, 18 Apr 2023 15:38:19 +0200 Subject: [PATCH 3/5] #76 added sessionReport --- .../sel/studeez/data/local/models/SessionReport.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/SessionReport.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/SessionReport.kt index ae6ec4e..af6b1c0 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/SessionReport.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/SessionReport.kt @@ -1,4 +1,10 @@ package be.ugent.sel.studeez.data.local.models -class SessionReport { -} \ No newline at end of file +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) + ) \ No newline at end of file From 447cae266299c393dd15bef2e2f946779c9e499f Mon Sep 17 00:00:00 2001 From: Lukas Barragan Torres Date: Tue, 18 Apr 2023 15:38:43 +0200 Subject: [PATCH 4/5] #76 added sessionDAO to binds --- app/src/main/java/be/ugent/sel/studeez/di/DatabaseModule.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/be/ugent/sel/studeez/di/DatabaseModule.kt b/app/src/main/java/be/ugent/sel/studeez/di/DatabaseModule.kt index e3c466c..1b696fe 100644 --- a/app/src/main/java/be/ugent/sel/studeez/di/DatabaseModule.kt +++ b/app/src/main/java/be/ugent/sel/studeez/di/DatabaseModule.kt @@ -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 } \ No newline at end of file From 7c42f2fbd1361fa4b6c02b3e34943f2041931321 Mon Sep 17 00:00:00 2001 From: Lukas Barragan Torres Date: Tue, 18 Apr 2023 16:03:22 +0200 Subject: [PATCH 5/5] added firebase collection routes to object --- .../domain/implementation/FireBaseSessionDAO.kt | 9 ++------- .../domain/implementation/FirebaseCollectionRoutes.kt | 8 ++++++++ .../studeez/domain/implementation/FirebaseTimerDAO.kt | 10 ++-------- .../be/ugent/sel/studeez/screens/home/HomeViewModel.kt | 2 -- 4 files changed, 12 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseCollectionRoutes.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FireBaseSessionDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FireBaseSessionDAO.kt index 1fbe2cb..07afdda 100644 --- a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FireBaseSessionDAO.kt +++ b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FireBaseSessionDAO.kt @@ -31,13 +31,8 @@ class FireBaseSessionDAO @Inject constructor( } private fun currentUserSessionsCollection(): CollectionReference = - firestore.collection(USER_COLLECTION) + firestore.collection(FirebaseCollectionRoutes.USER_COLLECTION) .document(auth.currentUserId) - .collection(SESSION_COLLECTION) - - companion object { - private const val SESSION_COLLECTION = "sessions" - private const val USER_COLLECTION = "users" - } + .collection(FirebaseCollectionRoutes.SESSION_COLLECTION) } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseCollectionRoutes.kt b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseCollectionRoutes.kt new file mode 100644 index 0000000..2471301 --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseCollectionRoutes.kt @@ -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" + +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseTimerDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseTimerDAO.kt index a25c37c..901f9d6 100644 --- a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseTimerDAO.kt +++ b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseTimerDAO.kt @@ -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) } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/home/HomeViewModel.kt b/app/src/main/java/be/ugent/sel/studeez/screens/home/HomeViewModel.kt index 7db6f8d..b27f995 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/home/HomeViewModel.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/home/HomeViewModel.kt @@ -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