package com.example.pap_teste; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import java.util.ArrayList; import java.util.List; public class GestaoStaffActivity extends AppCompatActivity { private final List staffAssignments = new ArrayList<>(); private ArrayAdapter staffAdapter; private ListView listStaffMesas; private EditText inputNomeStaff; private Spinner spinnerMesaStaff; private TextView txtMensagemStaff; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_gestao_staff); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.gestaoStaffRoot), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); Button back = findViewById(R.id.btnVoltar); if (back != null) { back.setOnClickListener(v -> finish()); } bindViews(); setupMesaSpinner(); setupList(); setupFormActions(); } private void bindViews() { listStaffMesas = findViewById(R.id.listStaffMesas); inputNomeStaff = findViewById(R.id.inputNomeStaff); spinnerMesaStaff = findViewById(R.id.spinnerMesaStaff); txtMensagemStaff = findViewById(R.id.txtMensagemStaff); } /** * Preenche o spinner com uma lista simples de mesas (1–20). * Mais tarde isto pode ser ligado às mesas reais configuradas em "Gerir Mesas". */ private void setupMesaSpinner() { ArrayAdapter mesaAdapter = new ArrayAdapter<>( this, android.R.layout.simple_spinner_dropdown_item ); for (int i = 1; i <= 20; i++) { mesaAdapter.add(String.format("Mesa %02d", i)); } spinnerMesaStaff.setAdapter(mesaAdapter); } private void setupList() { staffAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_activated_1); listStaffMesas.setAdapter(staffAdapter); refreshList(); listStaffMesas.setOnItemClickListener((parent, view, position, id) -> { StaffAssignment item = staffAssignments.get(position); inputNomeStaff.setText(item.nome); 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)); }); } private void setupFormActions() { Button btnAtribuir = findViewById(R.id.btnAtribuirStaff); if (btnAtribuir != null) { btnAtribuir.setOnClickListener(v -> guardarAtribuicao()); } } private void guardarAtribuicao() { String nome = inputNomeStaff != null ? inputNomeStaff.getText().toString().trim() : ""; if (nome.isEmpty()) { Toast.makeText(this, "Indique o nome do funcionário.", Toast.LENGTH_SHORT).show(); return; } if (spinnerMesaStaff == null || spinnerMesaStaff.getSelectedItem() == null) { Toast.makeText(this, "Selecione uma mesa.", Toast.LENGTH_SHORT).show(); return; } int mesaNumero = spinnerMesaStaff.getSelectedItemPosition() + 1; StaffAssignment existente = findByNome(nome); if (existente == null) { staffAssignments.add(new StaffAssignment(nome, mesaNumero)); txtMensagemStaff.setText(String.format("%s atribuído à mesa %02d.", nome, mesaNumero)); } else { existente.mesaNumero = mesaNumero; txtMensagemStaff.setText(String.format("Mesa de %s atualizada para %02d.", nome, mesaNumero)); } refreshList(); } private StaffAssignment findByNome(String nome) { for (StaffAssignment item : staffAssignments) { if (item.nome.equalsIgnoreCase(nome)) { return item; } } return null; } private void refreshList() { if (staffAdapter == null) return; staffAdapter.clear(); for (StaffAssignment item : staffAssignments) { String resumo = String.format("%s • Mesa %02d", item.nome, item.mesaNumero); staffAdapter.add(resumo); } staffAdapter.notifyDataSetChanged(); } private static class StaffAssignment { String nome; int mesaNumero; StaffAssignment(String nome, int mesaNumero) { this.nome = nome; this.mesaNumero = mesaNumero; } } }