From 1c68112436d61c2d9e86178a4ebc446658b89eba Mon Sep 17 00:00:00 2001 From: 230409 <230409@epvc.pt> Date: Thu, 29 Jan 2026 10:40:21 +0000 Subject: [PATCH] ecra principal --- app/build.gradle.kts | 1 + app/src/main/AndroidManifest.xml | 3 + .../example/pap_teste/AddStaffActivity.java | 60 +++++++++++++++ .../pap_teste/GestaoStaffActivity.java | 77 +++++++++++++++---- .../com/example/pap_teste/MainActivity.java | 11 +++ .../com/example/pap_teste/models/Client.java | 4 + .../com/example/pap_teste/models/Mesa.java | 4 + .../com/example/pap_teste/models/Staff.java | 40 ++++++++++ .../main/res/layout/activity_add_staff.xml | 27 +++++++ .../main/res/layout/activity_gestao_staff.xml | 24 ++++-- gradle/libs.versions.toml | 2 + 11 files changed, 234 insertions(+), 19 deletions(-) create mode 100644 app/src/main/java/com/example/pap_teste/AddStaffActivity.java create mode 100644 app/src/main/java/com/example/pap_teste/models/Client.java create mode 100644 app/src/main/java/com/example/pap_teste/models/Mesa.java create mode 100644 app/src/main/java/com/example/pap_teste/models/Staff.java create mode 100644 app/src/main/res/layout/activity_add_staff.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index be8bd3c..ed1e5f2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -41,6 +41,7 @@ dependencies { implementation(platform(libs.firebase.bom)) implementation("com.google.firebase:firebase-firestore") implementation("com.google.firebase:firebase-auth") + implementation(libs.firebase.database) testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7d9def5..d92e637 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,9 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Pap_teste"> + { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + addButton = findViewById(R.id.addButton); + nameEditText = findViewById(R.id.nammeEditText); + + + addButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String name = nameEditText.getText().toString(); + //String zona = zonaSpinner.getSelectedItem().toString(); + + if (!name.isEmpty()) { + DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Staff"); + String uuid = java.util.UUID.randomUUID().toString(); + Staff staff = new Staff(name, "Zona 1",uuid); + databaseReference.child(uuid).setValue(staff); + + //mensagem de sucesso + finish(); + } + else{ + //colocar mensagem de error tem que estar tudo preenchido + } + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java b/app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java index 357d53b..10f7153 100644 --- a/app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java +++ b/app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java @@ -1,6 +1,12 @@ package com.example.pap_teste; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.firebase.firestore.FirebaseFirestore; +import com.google.firebase.firestore.QueryDocumentSnapshot; + +import android.content.Intent; import android.os.Bundle; +import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; @@ -23,9 +29,15 @@ public class GestaoStaffActivity extends AppCompatActivity { private final List staffAssignments = new ArrayList<>(); private ArrayAdapter staffAdapter; private ListView listStaffMesas; - private EditText inputNomeStaff; + + private Spinner spinnerNomeStaff; private Spinner spinnerMesaStaff; private TextView txtMensagemStaff; + private FirebaseFirestore firestore; + private List staffNames = new ArrayList<>(); + private ArrayAdapter staffNameAdapter; + + private FloatingActionButton floatingActionButton; @Override protected void onCreate(Bundle savedInstanceState) { @@ -38,6 +50,8 @@ public class GestaoStaffActivity extends AppCompatActivity { return insets; }); + firestore = FirebaseFirestore.getInstance(); + Button back = findViewById(R.id.btnVoltar); if (back != null) { back.setOnClickListener(v -> finish()); @@ -51,9 +65,10 @@ public class GestaoStaffActivity extends AppCompatActivity { private void bindViews() { listStaffMesas = findViewById(R.id.listStaffMesas); - inputNomeStaff = findViewById(R.id.inputNomeStaff); + spinnerNomeStaff = findViewById(R.id.spinnerNomeStaff); spinnerMesaStaff = findViewById(R.id.spinnerMesaStaff); txtMensagemStaff = findViewById(R.id.txtMensagemStaff); + floatingActionButton = findViewById(R.id.floatingActionButton); } /** @@ -63,8 +78,14 @@ public class GestaoStaffActivity extends AppCompatActivity { private void setupMesaSpinner() { ArrayAdapter mesaAdapter = new ArrayAdapter<>( this, - android.R.layout.simple_spinner_dropdown_item - ); + android.R.layout.simple_spinner_dropdown_item); + + staffNameAdapter = new ArrayAdapter<>( + this, + android.R.layout.simple_spinner_dropdown_item, + staffNames); + spinnerNomeStaff.setAdapter(staffNameAdapter); + loadStaffMembers(); for (int i = 1; i <= 20; i++) { mesaAdapter.add(String.format("Mesa %02d", i)); @@ -80,7 +101,7 @@ public class GestaoStaffActivity extends AppCompatActivity { listStaffMesas.setOnItemClickListener((parent, view, position, id) -> { StaffAssignment item = staffAssignments.get(position); - inputNomeStaff.setText(item.nome); + // inputNomeStaff.setText(item.nome); // Removed int index = Math.max(0, Math.min(spinnerMesaStaff.getCount() - 1, item.mesaNumero - 1)); spinnerMesaStaff.setSelection(index); txtMensagemStaff.setText(String.format("A editar: %s (Mesa %02d)", item.nome, item.mesaNumero)); @@ -92,12 +113,24 @@ public class GestaoStaffActivity extends AppCompatActivity { if (btnAtribuir != null) { btnAtribuir.setOnClickListener(v -> guardarAtribuicao()); } + + floatingActionButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(GestaoStaffActivity.this, AddStaffActivity.class); + startActivity(intent); + } + }); } private void guardarAtribuicao() { - String nome = inputNomeStaff != null ? inputNomeStaff.getText().toString().trim() : ""; + String nome = ""; + if (spinnerNomeStaff.getSelectedItem() != null) { + nome = spinnerNomeStaff.getSelectedItem().toString(); + } + if (nome.isEmpty()) { - Toast.makeText(this, "Indique o nome do funcionário.", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Selecione um funcionário.", Toast.LENGTH_SHORT).show(); return; } @@ -130,7 +163,8 @@ public class GestaoStaffActivity extends AppCompatActivity { } private void refreshList() { - if (staffAdapter == null) return; + if (staffAdapter == null) + return; staffAdapter.clear(); for (StaffAssignment item : staffAssignments) { @@ -140,6 +174,28 @@ public class GestaoStaffActivity extends AppCompatActivity { staffAdapter.notifyDataSetChanged(); } + private void loadStaffMembers() { + firestore.collection("users") + .whereEqualTo("role", "STAFF") + .get() + .addOnSuccessListener(queryDocumentSnapshots -> { + staffNames.clear(); + for (QueryDocumentSnapshot document : queryDocumentSnapshots) { + String name = document.getString("displayName"); + if (name != null && !name.isEmpty()) { + staffNames.add(name); + } + } + if (staffNames.isEmpty()) { + staffNames.add("Nenhum staff encontrado"); + } + staffNameAdapter.notifyDataSetChanged(); + }) + .addOnFailureListener(e -> { + Toast.makeText(this, "Erro ao carregar staff: " + e.getMessage(), Toast.LENGTH_SHORT).show(); + }); + } + private static class StaffAssignment { String nome; int mesaNumero; @@ -150,8 +206,3 @@ public class GestaoStaffActivity extends AppCompatActivity { } } } - - - - - diff --git a/app/src/main/java/com/example/pap_teste/MainActivity.java b/app/src/main/java/com/example/pap_teste/MainActivity.java index 74ab0d9..9f24ad5 100644 --- a/app/src/main/java/com/example/pap_teste/MainActivity.java +++ b/app/src/main/java/com/example/pap_teste/MainActivity.java @@ -18,6 +18,7 @@ import androidx.core.view.WindowInsetsCompat; import com.google.firebase.FirebaseApp; import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; import com.google.firebase.firestore.FirebaseFirestore; import com.google.firebase.firestore.SetOptions; @@ -480,4 +481,14 @@ public class MainActivity extends AppCompatActivity { } return true; } + +// @Override +// protected void onStart() { +// super.onStart(); +// FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); +// if (firebaseUser != null) { +// startActivity(new Intent(this, MainActivity.class)); +// finish(); +// } +// } } \ No newline at end of file diff --git a/app/src/main/java/com/example/pap_teste/models/Client.java b/app/src/main/java/com/example/pap_teste/models/Client.java new file mode 100644 index 0000000..1016d37 --- /dev/null +++ b/app/src/main/java/com/example/pap_teste/models/Client.java @@ -0,0 +1,4 @@ +package com.example.pap_teste.models; + +public class Client { +} diff --git a/app/src/main/java/com/example/pap_teste/models/Mesa.java b/app/src/main/java/com/example/pap_teste/models/Mesa.java new file mode 100644 index 0000000..c159269 --- /dev/null +++ b/app/src/main/java/com/example/pap_teste/models/Mesa.java @@ -0,0 +1,4 @@ +package com.example.pap_teste.models; + +public class Mesa { +} diff --git a/app/src/main/java/com/example/pap_teste/models/Staff.java b/app/src/main/java/com/example/pap_teste/models/Staff.java new file mode 100644 index 0000000..2483143 --- /dev/null +++ b/app/src/main/java/com/example/pap_teste/models/Staff.java @@ -0,0 +1,40 @@ +package com.example.pap_teste.models; + +public class Staff { + private String name; + private String zona; + + private String id; + + public Staff(String name, String zona, String id) { + this.name = name; + this.zona = zona; + this.id = id; + } + public Staff() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getZona() { + return zona; + } + + public void setZona(String zona) { + this.zona = zona; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/app/src/main/res/layout/activity_add_staff.xml b/app/src/main/res/layout/activity_add_staff.xml new file mode 100644 index 0000000..00a11d7 --- /dev/null +++ b/app/src/main/res/layout/activity_add_staff.xml @@ -0,0 +1,27 @@ + + + + + +