Skip to content

Instantly share code, notes, and snippets.

@elcioabrahao
Created December 8, 2015 17:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elcioabrahao/0f5e2b5c0d0b264c481f to your computer and use it in GitHub Desktop.
Save elcioabrahao/0f5e2b5c0d0b264c481f to your computer and use it in GitHub Desktop.
MainActivity do projeto PDV com a implementação do código para leitura do REST com a APIClient.java
package br.com.trainning.pdv.ui.activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.Toast;
import com.baoyz.swipemenulistview.SwipeMenu;
import com.baoyz.swipemenulistview.SwipeMenuCreator;
import com.baoyz.swipemenulistview.SwipeMenuItem;
import com.baoyz.swipemenulistview.SwipeMenuListView;
import java.util.ArrayList;
import java.util.List;
import br.com.trainning.pdv.R;
import br.com.trainning.pdv.domain.model.Carrinho;
import br.com.trainning.pdv.domain.model.Item;
import br.com.trainning.pdv.domain.model.ItemProduto;
import br.com.trainning.pdv.domain.model.ListaProdutos;
import br.com.trainning.pdv.domain.model.Produto;
import br.com.trainning.pdv.domain.network.APIClient;
import br.com.trainning.pdv.domain.util.Util;
import br.com.trainning.pdv.ui.adapter.CustomArrayAdapter;
import butterknife.Bind;
import jim.h.common.android.lib.zxing.config.ZXingLibConfig;
import jim.h.common.android.lib.zxing.integrator.IntentIntegrator;
import jim.h.common.android.lib.zxing.integrator.IntentResult;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import se.emilsjolander.sprinkles.CursorList;
import se.emilsjolander.sprinkles.Query;
public class MainActivity extends BaseActivity {
@Bind(R.id.toolbar)
Toolbar toolbar;
@Bind(R.id.fab)
FloatingActionButton fab;
@Bind(R.id.listView)
SwipeMenuListView listView;
@Bind(R.id.coodenator1)
CoordinatorLayout coordinatorLayout;
private ZXingLibConfig zxingLibConfig;
private Carrinho carrinho;
private Item item;
private List<ItemProduto> list;
private CustomArrayAdapter adapter;
double valorTotal;
private Callback<List<Produto>> callbackProdutos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setSupportActionBar(toolbar);
configureProdutoCallback();
zxingLibConfig = new ZXingLibConfig();
zxingLibConfig.useFrontLight = true;
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
IntentIntegrator.initiateScan(MainActivity.this, zxingLibConfig);
}
});
CursorList li = Query.all(Carrinho.class).get();
List<Carrinho> i = li.asList();
for(Carrinho it: i){
Log.d("Carrinho", ""+it.toString());
}
carrinho = Query.one(Carrinho.class, "select * from carrinho where id = (select max(id) from carrinho)").get();
if(carrinho == null){
criaCarrinho();
}else{
if(carrinho.getEncerrada()==1){
criaCarrinho();
}
}
Log.d("IDCOMPRA",""+carrinho.toString());
popularLista();
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
//create an action that will be showed on swiping an item in the list
SwipeMenuItem item1 = new SwipeMenuItem(
getApplicationContext());
item1.setBackground(R.color.colorAccent);
item1.setWidth(120);
item1.setIcon(R.drawable.ic_add_shopping_cart_white_36dp);
menu.addMenuItem(item1);
SwipeMenuItem item2 = new SwipeMenuItem(
getApplicationContext());
item2.setBackground(R.color.colorDelete);
item2.setWidth(120);
item2.setIcon(R.drawable.ic_delete_white_36dp);
menu.addMenuItem(item2);
}
};
//set MenuCreator
listView.setMenuCreator(creator);
// set SwipeListener
listView.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() {
@Override
public void onSwipeStart(int position) {
// swipe start
}
@Override
public void onSwipeEnd(int position) {
// swipe end
}
});
listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
ItemProduto itemProduto = adapter.getItem(position);
Item item = Query.one(Item.class,"select * from item where id = ?", itemProduto.getIdItem()).get();
switch (index) {
case 0:
//Toast.makeText(getApplicationContext(), "Action 1 for " + itemProduto.getDescricao(), Toast.LENGTH_SHORT).show();
item.setQuantidade(item.getQuantidade()+1);
item.save();
list.clear();
popularLista();
break;
case 1:
//Toast.makeText(getApplicationContext(), "Action 2 for " + itemProduto.getDescricao(), Toast.LENGTH_SHORT).show();
item.delete();
list.clear();
popularLista();
break;
}
return false;
}
});
}
public void criaCarrinho(){
carrinho = new Carrinho();
carrinho.setId(0L);
carrinho.setEnviada(0);
carrinho.setEncerrada(0);
carrinho.setIdCompra(Util.getUniqueId(this));
Log.d("IDCOMPRA", "NULLO: " + carrinho.getIdCompra());
carrinho.save();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_cadastro) {
Intent intent = new Intent(this,IncluirNovo.class);
startActivity(intent);
return true;
}
if (id == R.id.action_editar) {
Intent intent = new Intent(this,Editar.class);
startActivity(intent);
return true;
}
if (id == R.id.action_finalizar) {
// Intent intent = new Intent(this,Editar.class);
// startActivity(intent);
return true;
}
if (id == R.id.action_sincronizar) {
new APIClient().getRestService().getAllProdutos(callbackProdutos);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case IntentIntegrator.REQUEST_CODE:
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode,
resultCode, data);
if (scanResult == null) {
return;
}
String result = scanResult.getContents();
if (result != null) {
Produto produto = Query.one(Produto.class, "select * from produto where codigo_barras = ?",result).get();
if(produto !=null) {
Item item = new Item();
item.setId(0L);
item.setIdCompra(carrinho.getIdCompra());
item.setQuantidade(1);
item.setIdProduto(produto.getCodigoBarras());
item.save();
ItemProduto itemProduto = new ItemProduto();
itemProduto.setQuantidade(1);
itemProduto.setIdCompra(carrinho.getIdCompra());
Log.d("IDCOMPRA", "na adicao: " + carrinho.getIdCompra());
itemProduto.setIdItem(item.getId());
itemProduto.setDescricao(produto.getDescricao());
itemProduto.setFoto(produto.getFoto());
itemProduto.setPreco(produto.getPreco());
list.add(itemProduto);
valorTotal += item.getQuantidade() * produto.getPreco();
getSupportActionBar().setTitle("PDV" + Util.getCurrencyValue(valorTotal));
adapter.notifyDataSetChanged();
}else{
Snackbar.make(coordinatorLayout, "Produto não cadastrado!", Snackbar.LENGTH_LONG);
}
}
break;
default:
}
}
@Override
public void onDestroy() {
super.onDestroy();
}
public void popularLista(){
CursorList cursor = Query.many(Item.class, "select * from Item where id_compra = ? order by id", carrinho.getIdCompra()).get();
List<Item> listaItem = cursor.asList();
Log.d("TAMANHOLISTA",""+ listaItem.size());
ItemProduto itemProduto;
Produto produto;
list = new ArrayList<>();
valorTotal=0.0d;
for(Item item:listaItem){
produto = Query.one(Produto.class,"select * from Produto where codigo_barras = ?", item.getIdProduto()).get();
itemProduto = new ItemProduto();
itemProduto.setIdCompra(carrinho.getIdCompra());
itemProduto.setIdItem(item.getId());
itemProduto.setFoto(produto.getFoto());
itemProduto.setDescricao(produto.getDescricao());
itemProduto.setQuantidade(item.getQuantidade());
itemProduto.setPreco(produto.getPreco());
list.add(itemProduto);
valorTotal+=item.getQuantidade()*produto.getPreco();
}
getSupportActionBar().setTitle("PDV"+Util.getCurrencyValue(valorTotal));
adapter = new CustomArrayAdapter(this, R.layout.list_item, list);
listView.setAdapter(adapter);
}
private void configureProdutoCallback() {
callbackProdutos = new Callback<List<Produto>>() {
@Override public void success(List<Produto> resultado, Response response) {
CursorList cursorList = Query.all(Produto.class).get();
List<Produto> lp = cursorList.asList();
for(Produto p:lp){
p.delete();
}
for(Produto produto:resultado){
produto.setId(0L);
produto.save();
}
}
@Override public void failure(RetrofitError error) {
Log.e("RETROFIT", "Error:"+error.getMessage());
}
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment