Files
NaMesa/app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java
2026-01-21 10:20:06 +00:00

158 lines
5.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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<StaffAssignment> staffAssignments = new ArrayList<>();
private ArrayAdapter<String> 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 (120).
* Mais tarde isto pode ser ligado às mesas reais configuradas em "Gerir Mesas".
*/
private void setupMesaSpinner() {
ArrayAdapter<String> 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;
}
}
}