Skip to content
This repository was archived by the owner on Sep 22, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,15 @@ dependencies {
implementation "androidx.camera:camera-video:${camerax_version}"
implementation "androidx.camera:camera-view:${camerax_version}"
implementation "androidx.camera:camera-extensions:${camerax_version}"


implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3'
implementation 'com.github.bumptech.glide:glide:4.16.0'



}

apply plugin: 'com.google.gms.google-services'
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@
<activity
android:name=".view.general.Homepage4nurse"
android:exported="false" />
<activity
android:name=".view.general.Homepage4doctor"
android:exported="false" />
<activity
android:name=".view.general.TaskDetailActivity"
android:exported="false" />
Expand All @@ -85,6 +88,11 @@
<activity
android:name=".view.caretaker.CaretakerProfileActivity"
android:exported="false" />
<activity android:name=".view.prescription.PrescriptionActivity"
android:exported="false" />
<activity android:name=".view.prescription.IssuePrescriptionActivity"
android:exported="false"/>

<activity
android:name=".view.caretaker.EditCaretakerProfileActivity"
android:exported="false" />
Expand Down
20 changes: 20 additions & 0 deletions app/src/main/java/deakin/gopher/guardian/api/CaretakerApi.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
@file:Suppress("ktlint:standard:no-wildcard-imports")

package deakin.gopher.guardian.network

import deakin.gopher.guardian.model.login.Role.Caretaker
import retrofit2.Response
import retrofit2.http.*

interface CaretakerApi {
@GET("caretaker/profile")
suspend fun getProfile(
@Query("caretakerId") caretakerId: String? = null,
@Query("email") email: String? = null,
): Response<Caretaker>

@PUT("caretaker/profile")
suspend fun updateProfile(
@Body caretaker: deakin.gopher.guardian.model.Caretaker,
): Response<Caretaker>
}
75 changes: 75 additions & 0 deletions app/src/main/java/deakin/gopher/guardian/model/Caretaker.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
@file:Suppress("ktlint:standard:no-wildcard-imports")

package deakin.gopher.guardian.model

import com.google.gson.annotations.SerializedName
import java.io.Serializable

//
// data class Caretaker(
// @SerializedName("_id")
// val id: String?,
//
// @SerializedName("fullname")
// var fullName: String?,
//
// @SerializedName("email")
// val email: String?,
//
// @SerializedName("assignedPatients")
// val assignedPatients: List<String>? = emptyList(),
//
// @SerializedName("failedLoginAttempts")
// val failedLoginAttempts: Int? = 0,
//
// @SerializedName("lastPasswordChange")
// val lastPasswordChange: String? = null,
//
// @SerializedName("created_at")
// val createdAt: String? = null,
//
// @SerializedName("updated_at")
// val updatedAt: String? = null,
//
// @SerializedName("role")
// val role: Role? = null
// ) : Serializable
//
// data class Role(
// @SerializedName("_id")
// val id: String?,
//
// @SerializedName("name")
// val name: String?
// ) : Serializable
//
data class Caretaker(
@SerializedName("_id")
val id: String?,
@SerializedName("fullname")
var fullName: String?,
@SerializedName("address")
var address: String? = null,
@SerializedName("dob")
var dob: String? = null,
@SerializedName("phone")
var phone: String? = null,
@SerializedName("ward")
var ward: String? = null,
@SerializedName("medicareNumber")
var medicareNumber: String? = null,
@SerializedName("emergencyContact")
var emergencyContact: String? = null,
@SerializedName("email")
var email: String?,
@SerializedName("assignedPatients")
val assignedPatients: List<String>? = emptyList(),
@SerializedName("failedLoginAttempts")
val failedLoginAttempts: Int? = 0,
@SerializedName("lastPasswordChange")
val lastPasswordChange: String? = null,
@SerializedName("created_at")
val createdAt: String? = null,
@SerializedName("updated_at")
val updatedAt: String? = null,
) : Serializable
13 changes: 13 additions & 0 deletions app/src/main/java/deakin/gopher/guardian/model/Doctor.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package deakin.gopher.guardian.model

import java.io.Serializable

data class Doctor(
var id: String? = null,
var fullName: String? = null,
var specialization: String? = null,
var phone: String? = null,
var email: String? = null,
var hospital: String? = null,
var assignedPatients: List<String>? = null,
) : Serializable
17 changes: 17 additions & 0 deletions app/src/main/java/deakin/gopher/guardian/model/Prescription.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package deakin.gopher.guardian.model

import java.io.Serializable

data class PrescriptionItem(
val name: String,
val dose: String,
val frequency: String,
val durationDays: Int,
) : Serializable

data class Prescription(
val id: String? = null,
val patientId: String,
val items: List<PrescriptionItem>,
val notes: String,
) : Serializable
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package deakin.gopher.guardian.model

data class PrescriptionResponse(
val prescriptions: List<Prescription>,
val pagination: Pagination,
)

data class Pagination(
val total: Int,
val page: Int,
val pages: Int,
val limit: Int,
)
64 changes: 56 additions & 8 deletions app/src/main/java/deakin/gopher/guardian/model/login/Role.kt
Original file line number Diff line number Diff line change
@@ -1,31 +1,79 @@
// package deakin.gopher.guardian.model.login
//
// import deakin.gopher.guardian.R
// import java.io.Serializable
//
// sealed class Role(val name: String) : Serializable {
// data object Caretaker : Role(R.string.caretaker_role_name.toString().lowercase()) {
// private fun readResolve(): Any = Caretaker
// }
//
// data object Admin : Role(R.string.company_admin_role_name.toString().lowercase()) {
// private fun readResolve(): Any = Admin
// }
//
// data object Nurse : Role(R.string.nurse_role_name.toString().lowercase()) {
// private fun readResolve(): Any = Nurse
// }
// data object Doctor : Role("Doctor".toString().lowercase()) {
// private fun readResolve(): Any = Doctor
// }
//
//
// companion object {
// private const val CARETAKER_ROLE = "caretaker"
// private const val ADMIN_ROLE = "admin"
// private const val NURSE_ROLE = "nurse"
// private const val DOCTOR_ROLE = "doctor"
//
// fun create(name: String): Role {
// return when (name.lowercase()) {
// CARETAKER_ROLE.lowercase() -> Caretaker
// ADMIN_ROLE.lowercase() -> Admin
// NURSE_ROLE.lowercase() -> Nurse
// "doctor" -> Doctor
// else -> throw IllegalArgumentException("Unknown role: $name")
// }
// }
// }
// }

package deakin.gopher.guardian.model.login

import deakin.gopher.guardian.R
import java.io.Serializable

sealed class Role(val name: String) : Serializable {
data object Caretaker : Role(R.string.caretaker_role_name.toString().lowercase()) {
data object Caretaker : Role("caretaker") {
private fun readResolve(): Any = Caretaker
}

data object Admin : Role(R.string.company_admin_role_name.toString().lowercase()) {
data object Admin : Role("admin") {
private fun readResolve(): Any = Admin
}

data object Nurse : Role(R.string.nurse_role_name.toString().lowercase()) {
data object Nurse : Role("nurse") {
private fun readResolve(): Any = Nurse
}

data object Doctor : Role("doctor") {
private fun readResolve(): Any = Doctor
}

companion object {
private const val CARETAKER_ROLE = "caretaker"
private const val ADMIN_ROLE = "admin"
private const val NURSE_ROLE = "nurse"
private const val DOCTOR_ROLE = "doctor"

fun create(name: String): Role {
return when (name.lowercase()) {
CARETAKER_ROLE.lowercase() -> Caretaker
ADMIN_ROLE.lowercase() -> Admin
NURSE_ROLE.lowercase() -> Nurse
val normalized = name.trim().lowercase()
android.util.Log.e("RoleDebug", "Received role: '$name' -> normalized: '$normalized'")

return when (normalized) {
CARETAKER_ROLE -> Caretaker
ADMIN_ROLE -> Admin
NURSE_ROLE -> Nurse
DOCTOR_ROLE -> Doctor
else -> throw IllegalArgumentException("Unknown role: $name")
}
}
Expand Down
Loading