0% found this document useful (0 votes)
12 views13 pages

Message

The MainActivity class in this Android application manages the user interface for a point-of-sale system, allowing employees to finalize sales and access various functionalities. It includes methods for setting up tabs, handling user interactions, managing sessions, and connecting to a server. The activity also features dialogs for user input and error handling, ensuring a smooth user experience while interacting with the application.

Uploaded by

Tainã Lisboa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views13 pages

Message

The MainActivity class in this Android application manages the user interface for a point-of-sale system, allowing employees to finalize sales and access various functionalities. It includes methods for setting up tabs, handling user interactions, managing sessions, and connecting to a server. The activity also features dialogs for user input and error handling, ensuring a smooth user experience while interacting with the application.

Uploaded by

Tainã Lisboa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

package [Link].

controllers;

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];
import [Link];

import [Link];

import [Link];
import [Link];

import [Link];
import [Link].R;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class MainActivity extends BaseActivity {


private TextView tvFuncionarioNome, tvTotal;
private Button btnFinalizar;
private ImageView menuIcon;
View viewCardFuncionario;
private BroadcastReceiver broadcastReceiver;
TabLayout tabLayout;
private RecyclerView recyclerItensVendaProdutos;
private List<ItemVendaModel> listaProdutos = new ArrayList<>();
private ActivityMainAdapter adapter;
private FrameLayout tabContentContainer;
[Link] vendaTab, perfilTab;
private int abaSelecionada = 0;
private Boolean pendenteHabilitacao = null;
private boolean tabsHabilitadas = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
runOnUiThread(() -> [Link]("Estabelecendo Conexão...",
this));
setContentView([Link].activity_main);

[Link]();

tabLayout = findViewById([Link]);

tvFuncionarioNome = findViewById([Link]);
tvTotal = findViewById([Link]);
menuIcon = findViewById([Link]);

btnFinalizar = findViewById([Link]);

viewCardFuncionario = findViewById([Link]);
tabContentContainer = findViewById([Link]);
setupCustomTabs(tabLayout);

FuncionarioSession session = [Link]();


String nomeFuncionario = [Link]();
[Link](nomeFuncionario != null ? nomeFuncionario :
"Nenhum funcionário selecionado");
actionsClick();

habilitaDesabilitaBotoes(false);
}

@Override
protected void onResume() {
[Link]();
registerReceiver(socketReceiver, new IntentFilter("SOCKET_RECONNECTED"));

if(![Link]() &&
[Link]().getConnectionId() != 0){
new Handler([Link]()).post(() -> {
execute();
});
habilitaDesabilitaBotoes(false);
}

FuncionarioSession session = [Link]();


if ([Link]() != null && ![Link]().isEmpty()) {
[Link]();
}
String nomeFuncionario = [Link]();

TextView tvNomeFuncionario = findViewById([Link]);


if (nomeFuncionario != null && ![Link]()) {
[Link](nomeFuncionario);
} else {
[Link]("Nenhum funcionário selecionado");
}
existeTurnosAtivos();
}
@Override
protected void execute() {
[Link]();

[Link]().setCurrentActivity(this);

loadServerConfig(() ->
login(() -> {
obterFuncionarios(() -> {
[Link]();
loadTerminalConfig(() -> {
[Link]();
broadcastReceiver = new
BroadcastReceiver() {
@Override
public void onReceive(Context arg0,
Intent intent) {

[Link](broadcastReceiver);
if
([Link]().equals(Constants.INTENT_ACTION_LOGIN_SUCCESS_MESSAGE)) {
finish();
}
}
};

[Link]([Link], broadcastReceiver, new


IntentFilter(Constants.INTENT_ACTION_LOGIN_SUCCESS_MESSAGE),
ContextCompat.RECEIVER_NOT_EXPORTED);
});

}
);
}
)
);
}
private void actionsClick() {
// Clique para selecionar funcionário
[Link](v -> {
Intent intent = new Intent(this, [Link]);
startActivity(intent);
});

// Clique no menu
[Link](v -> showCustomMenuDialog());

[Link](v -> [Link](this, "Venda


finalizada", Toast.LENGTH_SHORT).show());
}
private void setupCustomTabs(TabLayout tabLayout) {
// Primeira aba
LinearLayout tab1 = (LinearLayout)
getLayoutInflater().inflate([Link].tab_item, null);
ImageView tab1Icon = [Link]([Link]);
[Link]([Link].ic_cart);
[Link]([Link](this,
[Link].tab_icon_color));
((TextView) [Link]([Link])).setText("VENDA");
vendaTab = [Link]().setCustomView(tab1);
[Link](vendaTab);

// Segunda aba
LinearLayout tab2 = (LinearLayout)
getLayoutInflater().inflate([Link].tab_item, null);
ImageView tab2Icon = [Link]([Link]);
[Link]([Link].ic_cart_gray);
[Link]([Link](this,
[Link].tab_icon_color));
((TextView) [Link]([Link])).setText("VENDA");
perfilTab = [Link]().setCustomView(tab2);
[Link](perfilTab);

// Forçar atualização de cor quando trocar de aba


[Link](new [Link]() {
@Override
public void onTabSelected([Link] tab) {
if (!tabsHabilitadas) {
// Voltar à aba anterior
[Link]([Link](abaSelecionada));
[Link]([Link], "Selecione um funcionário com
turno ativo.", Toast.LENGTH_SHORT).show();
return;
}

View view = [Link]();


if (view != null) {
ImageView icon = [Link]([Link]);
if (icon != null) [Link](true);
}
abaSelecionada = [Link]();
carregarLayoutTab(abaSelecionada);
}

@Override
public void onTabUnselected([Link] tab) {
View view = [Link]();
if (view != null) {
ImageView icon = [Link]([Link]);
if (icon != null) [Link](false);
}
}

@Override
public void onTabReselected([Link] tab) {}
});
carregarLayoutTab(0); // Tab padrão: VENDA
}
private void showCustomMenuDialog() {
Dialog dialog = new Dialog(this);
[Link](Window.FEATURE_NO_TITLE);
[Link]([Link].dialog_menu_opcoes);
[Link](true);

SessionModel session = [Link]().getSession();

// Adiciona os itens manualmente


LinearLayout menuContainer = [Link]([Link]);

if(![Link]().isEmpty()) {
addMenuItem(menuContainer, [Link].ic_clock, "Histórico de Vendas",
() -> {
Intent intent = new Intent(this, [Link]);
startActivity(intent);
});
}

addMenuItem(menuContainer, [Link].ic_wifi, "Conexão de rede", () -> {


Intent intent = new Intent(this, [Link]);
startActivity(intent);
[Link]();
});

addMenuItem(menuContainer, [Link].ic_settings, "Adm Getnet", () -> {


[Link](this, "Adm Getnet", Toast.LENGTH_SHORT).show();
[Link]();
});

PlataformaIpirangaHandler kmv = [Link]();


if (kmv != null && [Link]() != null &&
[Link]().getCodigoVIP() > 0) {
addMenuItem(menuContainer, [Link].ic_card, "KMV - Resgate avulso",
() -> {
showDialogKMV();
[Link]();
});
}

[Link]();
}

private void addMenuItem(LinearLayout container, int iconRes, String text,


Runnable onClick) {
LinearLayout item = new LinearLayout(this);
[Link]([Link]);
[Link](8, 16, 8, 16);
[Link](Gravity.CENTER_VERTICAL);
[Link](new
[Link]([Link].MATCH_PARENT,
[Link].WRAP_CONTENT));

TextView label = new TextView(this);


[Link](text);
[Link](16);
[Link]([Link]);
[Link](new [Link](0,
[Link].WRAP_CONTENT, 1f)); // Ocupa tudo até o ícone

ImageView icon = new ImageView(this);


[Link](iconRes);
[Link]([Link]("#757575"));
[Link] iconParams = new [Link](48,
48);
[Link](iconParams);

Space spacer = new Space(this);


[Link](new [Link](80,
[Link].WRAP_CONTENT));
[Link](label);
[Link](spacer);
[Link](icon);

[Link](v -> [Link]());

[Link](item);
}
private void showDialogKMV() {
Dialog dialog = new Dialog(this);
[Link]([Link].dialog_resgate_kmv);
[Link](false);

EditText etKm = [Link]([Link]);


EditText etCpf = [Link]([Link]);
EditText etSenha = [Link]([Link]);
EditText etVipCodigo = [Link]([Link]);
EditText etVipSenha = [Link]([Link]);

[Link]([Link]).setOnClickListener(v ->
[Link]());
[Link]([Link]).setOnClickListener(v ->
[Link]());

[Link]([Link]).setOnClickListener(v -> {
boolean valido = true;

// Resetando erros visuais


[Link]([Link].bg_edittext);
[Link]([Link].bg_edittext);
[Link]([Link].bg_edittext);
[Link]([Link].bg_edittext);
[Link]([Link].bg_edittext);

// Validação individual
if ([Link]().toString().trim().isEmpty()) {
[Link]([Link].bg_edittext_error);
[Link]();
valido = false;
} else if ([Link]().toString().trim().isEmpty()) {
[Link]([Link].bg_edittext_error);
[Link]();
valido = false;
} else if ([Link]().toString().trim().isEmpty()) {
[Link]([Link].bg_edittext_error);
[Link]();
valido = false;
} else if ([Link]().toString().trim().isEmpty()) {
[Link]([Link].bg_edittext_error);
[Link]();
valido = false;
} else if ([Link]().toString().trim().isEmpty()) {
[Link]([Link].bg_edittext_error);
[Link]();
valido = false;
}

if (!valido) {
[Link](this, "Preencha todos os campos corretamente.",
Toast.LENGTH_LONG).show();
return;
}

// Grava os dados na sessão


KMVSession session = [Link]();
[Link]([Link]().toString().trim());
[Link]([Link]().toString().trim());
[Link]([Link]().toString().trim());
[Link]([Link]().toString().trim());
[Link]([Link]().toString().trim());

[Link](this, "Dados salvos com sucesso!",


Toast.LENGTH_SHORT).show();
[Link]();
});

[Link]();
Window window = [Link]();
if (window != null) {
[Link]((int) (getResources().getDisplayMetrics().widthPixels
* 0.95), // 95% da largura da tela
(int) (getResources().getDisplayMetrics().heightPixels *
0.85) // 85% da altura da tela
);
[Link]([Link]);
[Link]([Link]);
}

private void login(Runnable onSuccess) {


[Link]().login([Link],
() -> {
if (onSuccess != null) {
if (![Link]()) {
Intent serviceIntent = new Intent(this,
[Link]);
startService(serviceIntent);
}
[Link]();
}
;
});
}
private void showConnectionFailure(String message) {
(new [Link]())
.setMessage(message)
.setSenderActivity([Link])
.show();
}
private void loadServerConfig(Runnable onSuccess) {
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent intent) {
[Link](broadcastReceiver);
if
([Link]().equals(Constants.INTENT_ACTION_CONFIG_SERVER_RETURN)
||
[Link]().equals(Constants.INTENT_ACTION_CONFIG_SERVER_PWD_RETURN)) {
execute();
}
}
};

[Link](broadcastReceiver, new
IntentFilter(Constants.INTENT_ACTION_CONFIG_SERVER_RETURN));
[Link](broadcastReceiver, new
IntentFilter(Constants.INTENT_ACTION_CONFIG_SERVER_PWD_RETURN));

[Link]().loadConfigServer([Link],
new ServerConfigCallbackInterface() {
@Override
public void onSuccess() {
ConfigServerModel config =
[Link]().getSession().getConfigServer();
if (config != null) {
String serverAddress =
[Link]([Link](),
[Link]().toString());

[Link]().getSession().setServerAddress(serverAddress);
}

if
([Link]().getSession().getServerAddress().isEmpty()) {
showConnectionFailure("Nenhuma configuração
encontrada");
return;
}
if (onSuccess != null) {
[Link]();
}
}

@Override
public void onFailure(String message) {
[Link]();
showConnectionFailure(message);
}
});
}
private void loadTerminalConfig(Runnable onSuccess) {
broadcastReceiver = null;
[Link]().loadConfigTerminal([Link],
() -> {
if (onSuccess != null) {
[Link]();
}
});
}

private void obterFuncionarios(Runnable onComplete) {


if ([Link]() && [Link]()) {
runOnUiThread(() -> [Link]("Buscando
Funcionários...", this));
[Link]([Link])
.thenAccept(funcionarios -> {
runOnUiThread(() -> {
if ([Link]()) {
new [Link]()
.setSenderActivity([Link])
.setSuccess(false)
.setCanReturn(true)
.setDuration(Constants.FAILURE_MESSAGE_SHOW
_SECONDS)
.setTitle("Nenhum funcionário encontrado")
.setMessage("Não foram encontrados
funcionários vinculados à filial.")
.show();
} else {
// Se houver funcionários mas nenhum foi
selecionado ainda
FuncionarioSession session =
[Link]();
if ([Link]() == null ||
[Link]().isEmpty()) {
Animation blinkAnimation =
[Link]([Link], [Link]);

[Link]([Link].bg_card_funcionario_alert);

[Link](blinkAnimation);
[Link]();
}
}

[Link]();
if (onComplete != null) [Link]();
});
})
.exceptionally(ex -> {
runOnUiThread(() -> {
[Link]();
new [Link]()
.setSenderActivity([Link])
.setSuccess(false)
.setCanReturn(true)
.setDuration(Constants.FAILURE_MESSAGE_SHOW_SEC
ONDS)
.setTitle("Erro ao consultar funcionários")
.setMessage("Falha ao obter funcionários: " +
[Link]())
.show();
if (onComplete != null) {
[Link]();
[Link]();
}
});
return null;
});
} else {
if (onComplete != null) {
[Link]();
[Link]();
}
}
}
public void habilitaDesabilitaBotoes(boolean habilita) {
[Link](habilita);
[Link](habilita ? 1.0f : 0.5f);
[Link](habilita ? 1.0f : 0.5f);
tabsHabilitadas = habilita;

if (abaSelecionada == 0) {
View abaVenda = ([Link]() > 0)
? [Link](0)
: null;
pendenteHabilitacao = habilita;
if (abaVenda != null) {
aplicarEstadoBotoesVenda(abaVenda, habilita);
}
}
}
private void existeTurnosAtivos(){
if([Link]()){
buscaVendaAberta();
if([Link]())
habilitaDesabilitaBotoes(true);
} else {
[Link]();
habilitaDesabilitaBotoes(false);
}
}

private final BroadcastReceiver socketReceiver = new BroadcastReceiver() {


@Override
public void onReceive(Context context, Intent intent) {
if ("SOCKET_RECONNECTED".equals([Link]())) {
existeTurnosAtivos();
}
}
};

private void carregarLayoutTab(int position) {


runOnUiThread(() -> {
[Link]();
});
View layout;
if (position == 0) {
layout = getLayoutInflater().inflate([Link].layout_tab_venda,
tabContentContainer, false);

Button btnAbastecidas = [Link]([Link]);


Button btnProdutos = [Link]([Link]);
Button btnComandas = [Link]([Link]);

//listaProdutos = buscaItemVendaAberta();
recyclerItensVendaProdutos =
[Link]([Link]);
[Link](new
LinearLayoutManager(this));
adapter = new ActivityMainAdapter(listaProdutos, new
[Link]() {
@Override
public void onItemRemovido(boolean removido, String message) {
[Link]([Link], message,
Toast.LENGTH_SHORT).show();
buscaVendaAberta();
}
});

[Link](adapter);

[Link](v -> {
Intent intent = new Intent(this, [Link]);
startActivity(intent);
});

[Link](v -> {
Intent intent = new Intent(this, [Link]);
startActivity(intent);
});

[Link](v -> {
Intent intent = new Intent(this, [Link]);
startActivity(intent);
});

}
else {
layout = getLayoutInflater().inflate([Link].layout_tab_perfil,
tabContentContainer, false);
}

runOnUiThread(() -> {
[Link](layout);
});

if (position == 0 && pendenteHabilitacao != null) {


aplicarEstadoBotoesVenda(layout, pendenteHabilitacao);
pendenteHabilitacao = null;
}

}
private void aplicarEstadoBotoesVenda(View abaVenda, boolean habilita) {
Button btnAbastecidas = [Link]([Link]);
Button btnProdutos = [Link]([Link]);
Button btnComandas = [Link]([Link]);

if (btnAbastecidas != null) {
[Link](habilita);
[Link](habilita ? 1.0f : 0.5f);
}
if (btnProdutos != null) {
[Link](habilita);
[Link](habilita ? 1.0f : 0.5f);
}
if (btnComandas != null) {
[Link](habilita);
[Link](habilita ? 1.0f : 0.5f);
}
}

private void buscaVendaAberta(){


Integer idCfgTerminal =
[Link]().getConfigTerminal().getIdCfgTerminal();
[Link]([Link], idCfgTerminal, new
[Link]() {
@Override
public void onSuccess(ItemVendaModel itemVenda) {
listaProdutos = buscaItemVendaAberta();
carregarLayoutTab(0);
// Venda aberta encontrada, não precisa iniciar uma nova
[Link]();
if([Link]()) {
habilitaDesabilitaBotoes(true);
}
}
@Override
public void onNotFound() {
runOnUiThread(() -> [Link]("iniciando venda...",
[Link]));
[Link](
() -> {
[Link]();
},
() -> {
[Link]();
[Link]();
},
[Link]
);
}

@Override
public void onFailure(String errorMessage) {
(new [Link]())
.setSenderActivity([Link])
.setSuccess(false)
.setCanReturn(true)
.setDuration(Constants.FAILURE_MESSAGE_SHOW_SECONDS)
.setTitle("Erro ao processar retorno da venda aberta")
.setMessage(errorMessage)
.show();
}

@Override
public void onFailure(String errorMessage, String title) {
(new [Link]())
.setSenderActivity([Link])
.setSuccess(false)
.setCanReturn(true)
.setDuration(Constants.FAILURE_MESSAGE_SHOW_SECONDS)
.setTitle(title)
.setMessage(errorMessage)
.show();
}
});
}

private List<ItemVendaModel> buscaItemVendaAberta() {


List<ItemVendaModel> listaItemVenda = new ArrayList<>();
if (![Link]()) {
ArrayList<ItemVendaComandaModel> listadeItensVendaAberta =
[Link]().getVenda().getComandas().getItems();

[Link](itemVendaComandaModel -> {
[Link]([Link]());
});
totalDeVenda(listadeItensVendaAberta);
}
return listaItemVenda;
}

private void totalDeVenda(ArrayList<ItemVendaComandaModel>


listadeItensVendaAberta) {
final double[] total = {0};
double subtotal = 0.0;

[Link](itemVendaComandaModel -> {
total[0] = total[0] + [Link]().getTotal();
// subtotal = [Link]().getDesconto();
});
runOnUiThread(new Runnable() {
@Override
public void run() {
[Link]([Link](total[0]));
}
});

You might also like