Skip to content
Snippets Groups Projects
Commit f6c4f253 authored by scimmiamorta's avatar scimmiamorta
Browse files

First Commit

parent 06ad0ae6
No related branches found
No related tags found
No related merge requests found
...@@ -53,6 +53,7 @@ dependencies { ...@@ -53,6 +53,7 @@ dependencies {
implementation(libs.androidx.navigation.fragment.ktx) implementation(libs.androidx.navigation.fragment.ktx)
implementation(libs.androidx.navigation.ui.ktx) implementation(libs.androidx.navigation.ui.ktx)
implementation(libs.androidx.swiperefreshlayout) implementation(libs.androidx.swiperefreshlayout)
implementation(libs.androidx.media3.common.ktx)
testImplementation(libs.junit) testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(libs.androidx.espresso.core)
......
...@@ -21,13 +21,12 @@ class EditProfileFragment : Fragment() { ...@@ -21,13 +21,12 @@ class EditProfileFragment : Fragment() {
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View {
binding = FragmentEditProfileBinding.inflate(inflater, container, false) binding = FragmentEditProfileBinding.inflate(inflater, container, false)
firebaseAuth = FirebaseAuth.getInstance() firebaseAuth = FirebaseAuth.getInstance()
firestore = FirebaseFirestore.getInstance() firestore = FirebaseFirestore.getInstance()
loadUserProfile() loadUserProfile()
binding.buttonSaveProfile.setOnClickListener { binding.buttonSaveProfile.setOnClickListener {
...@@ -60,7 +59,12 @@ class EditProfileFragment : Fragment() { ...@@ -60,7 +59,12 @@ class EditProfileFragment : Fragment() {
} }
} }
?.addOnFailureListener { ?.addOnFailureListener {
Toast.makeText(context, "Errore nel caricamento dei dati", Toast.LENGTH_SHORT).show() Toast.makeText(
context,
getString(R.string.error_fetching_data),
Toast.LENGTH_SHORT
)
.show()
} }
} }
} }
...@@ -74,7 +78,7 @@ class EditProfileFragment : Fragment() { ...@@ -74,7 +78,7 @@ class EditProfileFragment : Fragment() {
val skills = binding.editTextSkills.text.toString().trim() val skills = binding.editTextSkills.text.toString().trim()
if (firstName.isEmpty() || lastName.isEmpty() || street.isEmpty() || skills.isEmpty()) { if (firstName.isEmpty() || lastName.isEmpty() || street.isEmpty() || skills.isEmpty()) {
Toast.makeText(context, "Compila tutti i campi", Toast.LENGTH_SHORT).show() Toast.makeText(context, getString(R.string.fill_all_field), Toast.LENGTH_SHORT).show()
return return
} }
...@@ -91,10 +95,14 @@ class EditProfileFragment : Fragment() { ...@@ -91,10 +95,14 @@ class EditProfileFragment : Fragment() {
?.document(it) ?.document(it)
?.set(userData) ?.set(userData)
?.addOnSuccessListener { ?.addOnSuccessListener {
Toast.makeText(context, "Profilo aggiornato", Toast.LENGTH_SHORT).show() Toast.makeText(context, getString(R.string.profile_updated), Toast.LENGTH_SHORT).show()
} }
?.addOnFailureListener { ?.addOnFailureListener {
Toast.makeText(context, "Errore nell'aggiornamento del profilo", Toast.LENGTH_SHORT).show() Toast.makeText(
context,
getString((R.string.error_updating_profile)),
Toast.LENGTH_SHORT
).show()
} }
} }
} }
......
...@@ -62,10 +62,8 @@ class LoginFragment : Fragment() { ...@@ -62,10 +62,8 @@ class LoginFragment : Fragment() {
binding.username.setOnEditorActionListener { _, actionId, _ -> binding.username.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) { if (actionId == EditorInfo.IME_ACTION_DONE) {
val email = binding.username.text.toString() val email = binding.username.text.toString()
val pass = binding.password.text.toString() val pass = binding.password.text.toString()
when { when {
email.isEmpty() || pass.isEmpty() -> { email.isEmpty() || pass.isEmpty() -> {
Toast.makeText( Toast.makeText(
...@@ -73,7 +71,6 @@ class LoginFragment : Fragment() { ...@@ -73,7 +71,6 @@ class LoginFragment : Fragment() {
Toast.LENGTH_SHORT Toast.LENGTH_SHORT
).show() ).show()
} }
else -> { else -> {
loginUser(email, pass) loginUser(email, pass)
} }
...@@ -95,7 +92,6 @@ class LoginFragment : Fragment() { ...@@ -95,7 +92,6 @@ class LoginFragment : Fragment() {
Toast.LENGTH_SHORT Toast.LENGTH_SHORT
).show() ).show()
} }
else -> { else -> {
loginUser(email, pass) loginUser(email, pass)
} }
...@@ -161,6 +157,7 @@ class LoginFragment : Fragment() { ...@@ -161,6 +157,7 @@ class LoginFragment : Fragment() {
editor.putString("user", userJson) editor.putString("user", userJson)
editor.apply() editor.apply()
} }
private fun saveUserRoleLocally(role: String?) { private fun saveUserRoleLocally(role: String?) {
val sharedPreferences = val sharedPreferences =
requireContext().getSharedPreferences("TaskManagerPrefs", Context.MODE_PRIVATE) requireContext().getSharedPreferences("TaskManagerPrefs", Context.MODE_PRIVATE)
......
...@@ -2,7 +2,6 @@ package com.example.taskmanagement.auth ...@@ -2,7 +2,6 @@ package com.example.taskmanagement.auth
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -55,20 +54,32 @@ class RegisterFragment : Fragment() { ...@@ -55,20 +54,32 @@ class RegisterFragment : Fragment() {
private fun validateInputs(email: String, pass: String, verifyPass: String): Boolean { private fun validateInputs(email: String, pass: String, verifyPass: String): Boolean {
return when { return when {
email.isEmpty() || pass.isEmpty() || verifyPass.isEmpty() -> { email.isEmpty() || pass.isEmpty() || verifyPass.isEmpty() -> {
showToast("Per favore, completa tutti i campi.") Toast.makeText(
requireContext(),
getString(R.string.fill_all_field),
Toast.LENGTH_SHORT
).show()
false false
} }
!isPasswordStrong(pass) -> { !isPasswordStrong(pass) -> {
showToast(getString(R.string.password_not_strong_enough)) Toast.makeText(
requireContext(),
getString(R.string.password_not_strong_enough),
Toast.LENGTH_SHORT
).show()
false false
} }
pass != verifyPass -> { pass != verifyPass -> {
showToast(getString(R.string.passwords_do_not_match)) Toast.makeText(
requireContext(),
getString(R.string.passwords_do_not_match),
Toast.LENGTH_SHORT
).show()
false false
} }
else -> true else -> true
} }
} }
...@@ -82,25 +93,23 @@ class RegisterFragment : Fragment() { ...@@ -82,25 +93,23 @@ class RegisterFragment : Fragment() {
private fun registerUser(email: String, pass: String) { private fun registerUser(email: String, pass: String) {
mAuth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener { task -> mAuth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener { task ->
if (task.isSuccessful) { if (task.isSuccessful) {
Log.d("RegisterFragment", "SONO in registerUser")
val userId = mAuth.currentUser?.uid val userId = mAuth.currentUser?.uid
val user = User(email = email, password = pass) val user = User(email = email, password = pass)
userId?.let { userId?.let {
FirebaseFirestore.getInstance().collection("users") FirebaseFirestore.getInstance().collection("users")
.document(it) .document(it)
.set(user) .set(user)
.addOnSuccessListener { .addOnSuccessListener {
saveUserLocally(user) saveUserLocally(user)
showToast(getString(R.string.registration_success)) Toast.makeText(requireContext(), getString(R.string.registration_success), Toast.LENGTH_SHORT).show()
findNavController().navigate(R.id.action_registerFragment_to_loginFragment) findNavController().navigate(R.id.action_registerFragment_to_loginFragment)
} }
.addOnFailureListener { e -> .addOnFailureListener {
showToast("Errore nel salvataggio dei dati: ${e.message}") Toast.makeText(requireContext(), getString(R.string.error_fetching_data), Toast.LENGTH_SHORT).show()
} }
} }
} else { } else {
showToast(task.exception?.message ?: "Errore sconosciuto.") Toast.makeText(requireContext(), getString(R.string.error_fetching_data), Toast.LENGTH_SHORT).show()
} }
} }
} }
...@@ -115,7 +124,4 @@ class RegisterFragment : Fragment() { ...@@ -115,7 +124,4 @@ class RegisterFragment : Fragment() {
editor.apply() editor.apply()
} }
private fun showToast(message: String) {
Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
}
} }
package com.example.taskmanagement.auth package com.example.taskmanagement.auth
data class User(val email: String = "", val password: String = "", val role: String="Dev") data class User(val email: String = "", val password: String = "", val role: String = "Dev")
\ No newline at end of file \ No newline at end of file
package com.example.taskmanagement.auth package com.example.taskmanagement.auth
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -40,7 +41,7 @@ class WelcomeFragment : Fragment() { ...@@ -40,7 +41,7 @@ class WelcomeFragment : Fragment() {
try { try {
findNavController().navigate(R.id.action_welcomeFragment_to_loginFragment) findNavController().navigate(R.id.action_welcomeFragment_to_loginFragment)
} catch (e: Exception) { } catch (e: Exception) {
android.util.Log.e("WelcomeFragment", "Errore durante la navigazione", e) Log.e("WelcomeFragment", "Errore durante la navigazione", e)
} }
} }
...@@ -48,7 +49,7 @@ class WelcomeFragment : Fragment() { ...@@ -48,7 +49,7 @@ class WelcomeFragment : Fragment() {
try { try {
findNavController().navigate(R.id.action_welcomeFragment_to_registerFragment) findNavController().navigate(R.id.action_welcomeFragment_to_registerFragment)
} catch (e: Exception) { } catch (e: Exception) {
android.util.Log.e("WelcomeFragment", "Errore durante la navigazione", e) Log.e("WelcomeFragment", "Errore durante la navigazione", e)
} }
} }
} }
......
...@@ -167,4 +167,7 @@ ...@@ -167,4 +167,7 @@
<string name="only_pm_can_edit_tasks">Solo i PM possono modificare i task!</string> <string name="only_pm_can_edit_tasks">Solo i PM possono modificare i task!</string>
<string name="assigned_tasks">Tasks assegnati</string> <string name="assigned_tasks">Tasks assegnati</string>
<string name="statistics">Statistiche</string> <string name="statistics">Statistiche</string>
<string name="fill_all_field">Completa tutti i campi</string>
<string name="profile_updated">Profilo aggiornato con successo</string>
<string name="error_updating_profile">Errore aggiornamento profilo</string>
</resources> </resources>
\ No newline at end of file
...@@ -188,6 +188,8 @@ ...@@ -188,6 +188,8 @@
<string name="number" translatable="false">0</string> <string name="number" translatable="false">0</string>
<string name="assigned_tasks">Assigned Tasks</string> <string name="assigned_tasks">Assigned Tasks</string>
<string name="statistics">Statics</string> <string name="statistics">Statics</string>
<string name="fill_all_field">Fill in all fields</string>
<string name="profile_updated">Profile updated successfully</string>
<string name="error_updating_profile">Error updating profile</string>
</resources> </resources>
\ No newline at end of file
...@@ -16,6 +16,7 @@ firebaseAuthKtx = "23.1.0" ...@@ -16,6 +16,7 @@ firebaseAuthKtx = "23.1.0"
navigationFragmentKtx = "2.8.5" navigationFragmentKtx = "2.8.5"
navigationUiKtx = "2.8.5" navigationUiKtx = "2.8.5"
swiperefreshlayout = "1.1.0" swiperefreshlayout = "1.1.0"
media3CommonKtx = "1.5.1"
[libraries] [libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
...@@ -32,6 +33,7 @@ firebase-auth-ktx = { group = "com.google.firebase", name = "firebase-auth-ktx", ...@@ -32,6 +33,7 @@ firebase-auth-ktx = { group = "com.google.firebase", name = "firebase-auth-ktx",
androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigationFragmentKtx" } androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigationFragmentKtx" }
androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" } androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" }
androidx-swiperefreshlayout = { group = "androidx.swiperefreshlayout", name = "swiperefreshlayout", version.ref = "swiperefreshlayout" } androidx-swiperefreshlayout = { group = "androidx.swiperefreshlayout", name = "swiperefreshlayout", version.ref = "swiperefreshlayout" }
androidx-media3-common-ktx = { group = "androidx.media3", name = "media3-common-ktx", version.ref = "media3CommonKtx" }
[plugins] [plugins]
android-application = { id = "com.android.application", version.ref = "agp" } android-application = { id = "com.android.application", version.ref = "agp" }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment