Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backend for applicant creation #12

Merged
merged 8 commits into from
Jan 4, 2025
Merged
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
12 changes: 11 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
plugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsKotlinAndroid)
id("com.google.devtools.ksp") version "1.9.21-1.0.15" // Add the correct version for KSP
}

val roomVersion = "2.5.0" // Define the Room version

android {
namespace = "com.example.estiaseek"
compileSdk = 35
Expand All @@ -29,19 +32,24 @@ android {
)
}
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = "1.8"
}

buildFeatures {
compose = true
}

composeOptions {
kotlinCompilerExtensionVersion = "1.5.1"
}

packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
Expand All @@ -55,7 +63,6 @@ dependencies {
implementation("androidx.media3:media3-ui:1.5.0")
implementation("io.coil-kt:coil-compose:2.4.0")


implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
Expand All @@ -68,6 +75,9 @@ dependencies {
implementation(libs.androidx.room.ktx)
implementation(libs.androidx.navigation.compose)

implementation("androidx.room:room-runtime:$roomVersion") // Room runtime dependency
ksp("androidx.room:room-compiler:$roomVersion")

testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
Expand Down
32 changes: 15 additions & 17 deletions app/src/main/java/com/example/estiaseek/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,36 @@ import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.lifecycle.ViewModelProvider
import com.example.estiaseek.data.EstiaSeekDatabase
import com.example.estiaseek.data.OfflineUsersRepository
import com.example.estiaseek.ui.screens.CreateApplicant
import com.example.estiaseek.ui.screens.CandidateSearchScreen
import com.example.estiaseek.ui.screens.CreateApplicantViewModel
import com.example.estiaseek.ui.screens.CreateApplicantViewModelFactory
import com.example.estiaseek.ui.theme.EstiaSeekTheme

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

// Initialize the database and repository
val database = EstiaSeekDatabase.getDatabase(applicationContext)
val usersRepository = OfflineUsersRepository(database.userDao())

// Create the ViewModel using the factory
val factory = CreateApplicantViewModelFactory(usersRepository)
val viewModel: CreateApplicantViewModel = ViewModelProvider(this, factory).get(CreateApplicantViewModel::class.java)

setContent {
EstiaSeekTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
MainScreen()
CreateApplicant(viewModel)
}
}
}
}
}

@Composable
fun MainScreen() {
// Toggle between screens dynamically
val showApplicantScreen = remember { mutableStateOf(true) }

if (showApplicantScreen.value) {
CreateApplicant()
} else {
CandidateSearchScreen()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase

@Database(entities = [User::class], version = 1, exportSchema = false)
@Database(entities = [User::class], version = 2, exportSchema = false)
abstract class EstiaSeekDatabase : RoomDatabase() {
abstract fun userDao(): UserDao

Expand Down
2 changes: 0 additions & 2 deletions app/src/main/java/com/example/estiaseek/data/User.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ data class User(
val name: String,
@ColumnInfo(name = "Email")
val email: String,
@ColumnInfo(name = "Password")
val password: String,
@ColumnInfo(name = "Bio")
val bio: String,
@ColumnInfo(name = "Experience")
Expand Down
6 changes: 4 additions & 2 deletions app/src/main/java/com/example/estiaseek/ui/profile/profile.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.example.estiaseek.ui.profile

import android.content.Intent
import android.net.Uri
import androidx.annotation.OptIn
Expand Down Expand Up @@ -81,10 +83,10 @@ fun Profile() {
modifier = Modifier.fillMaxSize()
)

// Profile Picture Overlay
// com.example.estiaseek.ui.profile.Profile Picture Overlay
Image(
painter = rememberAsyncImagePainter("file:///android_asset/lilpop.jpg"), // Load from assets
contentDescription = "Profile Picture",
contentDescription = "com.example.estiaseek.ui.profile.Profile Picture",
contentScale = ContentScale.Crop,
modifier = Modifier
.align(Alignment.BottomStart)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,43 @@
package com.example.estiaseek.ui.screens

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.example.estiaseek.R
import com.example.estiaseek.ui.components.DropdownMenuField
import androidx.compose.material.icons.rounded.LocationOn
import androidx.compose.material.icons.rounded.Person
import androidx.compose.material.icons.rounded.Search
import androidx.compose.material.icons.rounded.Star
import androidx.compose.material3.Button
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.example.estiaseek.R
import com.example.estiaseek.ui.components.DropdownMenuField

@Composable
fun CandidateSearchScreen() {
Expand Down
Loading
Loading