Commit 471fa5d8 authored by Muhammad Suryono's avatar Muhammad Suryono

Update main activity

parent e3c02909
...@@ -7,12 +7,15 @@ import android.content.Intent; ...@@ -7,12 +7,15 @@ import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
...@@ -36,6 +39,7 @@ import com.yono.messeripos.databinding.ActivityMainBinding; ...@@ -36,6 +39,7 @@ import com.yono.messeripos.databinding.ActivityMainBinding;
import com.yono.messeripos.models.CategoryModels; import com.yono.messeripos.models.CategoryModels;
import com.yono.messeripos.models.MainViewModels; import com.yono.messeripos.models.MainViewModels;
import com.yono.messeripos.models.MainViewModelsCart; import com.yono.messeripos.models.MainViewModelsCart;
import com.yono.messeripos.models.PaymentsModels;
import com.yono.messeripos.models.ProductCartModels; import com.yono.messeripos.models.ProductCartModels;
import com.yono.messeripos.models.ProductModels; import com.yono.messeripos.models.ProductModels;
import com.yono.messeripos.response.DataResponse; import com.yono.messeripos.response.DataResponse;
...@@ -52,6 +56,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -52,6 +56,7 @@ public class MainActivity extends AppCompatActivity {
ProductAdapter productAdapter; ProductAdapter productAdapter;
CartAdapter cartAdapter; CartAdapter cartAdapter;
TextView txtBadge; TextView txtBadge;
EditText etSearch;
Utils utils = new Utils(); Utils utils = new Utils();
public static Boolean status_update = false; public static Boolean status_update = false;
MainViewModelsCart mainViewModelsCart; MainViewModelsCart mainViewModelsCart;
...@@ -87,6 +92,23 @@ public class MainActivity extends AppCompatActivity { ...@@ -87,6 +92,23 @@ public class MainActivity extends AppCompatActivity {
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} }
binding.etSearchProduct.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
productAdapter.getFilter().filter(charSequence);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
...@@ -112,6 +134,11 @@ public class MainActivity extends AppCompatActivity { ...@@ -112,6 +134,11 @@ public class MainActivity extends AppCompatActivity {
productAdapter.notifyDataSetChanged(); productAdapter.notifyDataSetChanged();
}else if (id == R.id.create) { }else if (id == R.id.create) {
startActivity(new Intent(getApplicationContext(), FormProductActivity.class)); startActivity(new Intent(getApplicationContext(), FormProductActivity.class));
}else if (id == R.id.allTransaction){
Log.i("get transaction main", "onMenuItemClick: "+utils.convertGson(mainViewModels.getAllTransactions().getValue().getData()));
List<PaymentsModels> data = mainViewModels.getAllTransactions().getValue().getData();
ArrayList<PaymentsModels> newData = new ArrayList<>();
newData.addAll(data);
} }
return true; return true;
} }
...@@ -259,34 +286,43 @@ public class MainActivity extends AppCompatActivity { ...@@ -259,34 +286,43 @@ public class MainActivity extends AppCompatActivity {
binding.rvProduct.setVisibility(View.GONE); binding.rvProduct.setVisibility(View.GONE);
if (categoryModels.getIdCategory() == 0){ if (categoryModels.getIdCategory() == 0){
mainViewModels.getProduct().observe(MainActivity.this, new Observer<DataResponse<List<ProductModels<CategoryModels>>>>() { if (mainViewModels.getProduct().getValue().getData().size() != 0){
@Override
public void onChanged(DataResponse<List<ProductModels<CategoryModels>>> listDataResponse) {
if (listDataResponse != null) {
ArrayList<ProductModels> productModelsArrayList = new ArrayList<>();
productModelsArrayList.addAll(listDataResponse.getData());
progressDialog.dismiss(); progressDialog.dismiss();
showLoading(false); selectCategory = false;
if (productModelsArrayList.isEmpty()) { }else{
binding.rvProduct.setVisibility(View.GONE); binding.rvProduct.setVisibility(View.GONE);
binding.imgEmpty.setVisibility(View.VISIBLE); binding.imgEmpty.setVisibility(View.VISIBLE);
binding.imgEmpty.bringToFront(); binding.imgEmpty.bringToFront();
selectCategory = false; selectCategory = false;
Log.i("daidalam get if", "onGetProduct: "+selectCategory);
} else {
binding.rvProduct.setVisibility(View.VISIBLE);
binding.imgEmpty.setVisibility(View.GONE);
productAdapter.setProduct(MainActivity.this, productModelsArrayList);
binding.rvProduct.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
binding.rvProduct.setAdapter(productAdapter);
selectCategory = false;
Log.i("daidalam get else", "onGetProduct: "+selectCategory);
// productAdapter.notifyDataSetChanged();
}
} }
} // mainViewModels.getProduct().observe(MainActivity.this, new Observer<DataResponse<List<ProductModels<CategoryModels>>>>() {
}); // @Override
// public void onChanged(DataResponse<List<ProductModels<CategoryModels>>> listDataResponse) {
// if (listDataResponse != null) {
// ArrayList<ProductModels> productModelsArrayList = new ArrayList<>();
//
// productModelsArrayList.addAll(listDataResponse.getData());
// progressDialog.dismiss();
// showLoading(false);
// if (productModelsArrayList.isEmpty()) {
// binding.rvProduct.setVisibility(View.GONE);
// binding.imgEmpty.setVisibility(View.VISIBLE);
// binding.imgEmpty.bringToFront();
// selectCategory = false;
// Log.i("daidalam get if", "onGetProduct: "+selectCategory);
// } else {
// binding.rvProduct.setVisibility(View.VISIBLE);
// binding.imgEmpty.setVisibility(View.GONE);
// productAdapter.setProduct(MainActivity.this, productModelsArrayList);
// binding.rvProduct.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
// binding.rvProduct.setAdapter(productAdapter);
// selectCategory = false;
// Log.i("daidalam get else", "onGetProduct: "+selectCategory);
//// productAdapter.notifyDataSetChanged();
// }
// }
// }
// });
selectCategory = false; selectCategory = false;
}else{ }else{
mainViewModels.getProductByCategory(categoryModels.getIdCategory()).observe(MainActivity.this, new Observer<DataResponse<List<ProductModels>>>() { mainViewModels.getProductByCategory(categoryModels.getIdCategory()).observe(MainActivity.this, new Observer<DataResponse<List<ProductModels>>>() {
......
...@@ -2,42 +2,31 @@ package com.yono.messeripos.adapter; ...@@ -2,42 +2,31 @@ package com.yono.messeripos.adapter;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast; import android.widget.Filter;
import android.widget.Filterable;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.RecyclerView;
import com.yono.messeripos.MainActivity;
import com.yono.messeripos.R;
import com.yono.messeripos.databinding.ItemListBinding;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelProviders; import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.google.gson.Gson; import com.yono.messeripos.MainActivity;
import com.yono.messeripos.R; import com.yono.messeripos.R;
import com.yono.messeripos.databinding.ItemListBinding; import com.yono.messeripos.databinding.ItemListBinding;
import com.yono.messeripos.models.CartModels;
import com.yono.messeripos.models.MainViewModelsCart; import com.yono.messeripos.models.MainViewModelsCart;
import com.yono.messeripos.models.ProductCartModels;
import com.yono.messeripos.models.ProductModels; import com.yono.messeripos.models.ProductModels;
import com.yono.messeripos.utils.Utils; import com.yono.messeripos.utils.Utils;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList; import java.util.ArrayList;
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder> { public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder> implements Filterable {
private ArrayList<ProductModels> productModels = new ArrayList<>(); private ArrayList<ProductModels> productModels = new ArrayList<>();
private ArrayList<ProductModels> productModelsFiltered = new ArrayList<>();
Context context; Context context;
MainViewModelsCart mainViewModelsCart;
Utils utils = new Utils(); Utils utils = new Utils();
public interface ProductListener { public interface ProductListener {
...@@ -58,10 +47,42 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo ...@@ -58,10 +47,42 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
public void setProduct(Context context, ArrayList<ProductModels> productModels) { public void setProduct(Context context, ArrayList<ProductModels> productModels) {
this.productModels = productModels; this.productModels = productModels;
this.context = context; this.context = context;
mainViewModelsCart = ViewModelProviders.of((FragmentActivity) context).get(MainViewModelsCart.class); this.productModelsFiltered = productModels;
notifyDataSetChanged(); notifyDataSetChanged();
} }
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
productModelsFiltered = productModels;
} else {
ArrayList<ProductModels> filteredList = new ArrayList<>();
for (ProductModels prdk : productModels) {
if (prdk.getProductName().toLowerCase().contains(charString.toLowerCase())) {
filteredList.add(prdk);
}
}
productModelsFiltered = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = productModelsFiltered;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
productModelsFiltered = (ArrayList<ProductModels>) filterResults.values;
notifyDataSetChanged();
}
};
}
@NonNull @NonNull
@Override @Override
public ProductAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public ProductAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
...@@ -77,12 +98,12 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo ...@@ -77,12 +98,12 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
@Override @Override
public void onBindViewHolder(@NonNull ProductAdapter.MyViewHolder holder, int position) { public void onBindViewHolder(@NonNull ProductAdapter.MyViewHolder holder, int position) {
holder.bindData(productModels.get(position)); holder.bindData(productModelsFiltered.get(position));
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return productModels.size(); return productModelsFiltered.size();
} }
public class MyViewHolder extends RecyclerView.ViewHolder { public class MyViewHolder extends RecyclerView.ViewHolder {
......
package com.yono.messeripos.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yono.messeripos.models.PaymentsModels;
import com.yono.messeripos.utils.Utils;
import java.util.ArrayList;
public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter.MyViewHolder> {
private ArrayList<PaymentsModels> paymentsModels = new ArrayList<>();
Context context;
Utils utils = new Utils();
public void setTransactionAdapter(Context context, ArrayList<PaymentsModels> paymentsModels){
this.paymentsModels = paymentsModels;
this.context = context;
notifyDataSetChanged();
}
@NonNull
@Override
public TransactionAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(@NonNull TransactionAdapter.MyViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(@NonNull View itemView) {
super(itemView);
}
}
}
package com.yono.messeripos.api.service;
import com.yono.messeripos.api.ApiHelper;
import com.yono.messeripos.models.PaymentsModels;
import com.yono.messeripos.response.DataResponse;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;
public interface TransactionService {
@GET(ApiHelper.VERSI_API_1+"payments")
Call<DataResponse<List<PaymentsModels>>> getAllTransaction();
}
...@@ -4,14 +4,18 @@ import android.util.Log; ...@@ -4,14 +4,18 @@ import android.util.Log;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Transformations;
import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.yono.messeripos.api.client.Client; import com.yono.messeripos.api.client.Client;
import com.yono.messeripos.api.service.CategoryServise; import com.yono.messeripos.api.service.CategoryServise;
import com.yono.messeripos.api.service.ProductService; import com.yono.messeripos.api.service.ProductService;
import com.yono.messeripos.api.service.TransactionService;
import com.yono.messeripos.api.service.UsersService; import com.yono.messeripos.api.service.UsersService;
import com.yono.messeripos.response.DataResponse; import com.yono.messeripos.response.DataResponse;
import com.yono.messeripos.utils.Utils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -25,13 +29,19 @@ public class MainViewModels extends ViewModel { ...@@ -25,13 +29,19 @@ public class MainViewModels extends ViewModel {
MutableLiveData<DataResponse<List<ProductModels>>> productByCategory; MutableLiveData<DataResponse<List<ProductModels>>> productByCategory;
MutableLiveData<DataResponse<List<CategoryModels>>> categoryList; MutableLiveData<DataResponse<List<CategoryModels>>> categoryList;
MutableLiveData<DataResponse<UsersModels>> usersLogin; MutableLiveData<DataResponse<UsersModels>> usersLogin;
MutableLiveData<DataResponse<List<PaymentsModels>>> transactions;
private MainViewModels mainViewModels;
Client client = new Client(); Client client = new Client();
Utils utils = new Utils();
public MainViewModels(){ public MainViewModels(){
productList = new MutableLiveData<>(); productList = new MutableLiveData<>();
categoryList = new MutableLiveData<>(); categoryList = new MutableLiveData<>();
productByCategory = new MutableLiveData<>(); productByCategory = new MutableLiveData<>();
transactions = new MutableLiveData<>();
} }
public LiveData<DataResponse<List<ProductModels<CategoryModels>>>> getProduct(){ public LiveData<DataResponse<List<ProductModels<CategoryModels>>>> getProduct(){
...@@ -49,6 +59,34 @@ public class MainViewModels extends ViewModel { ...@@ -49,6 +59,34 @@ public class MainViewModels extends ViewModel {
return productByCategory; return productByCategory;
} }
public LiveData<DataResponse<List<PaymentsModels>>> getAllTransactions(){
getDataTransaction();
return transactions;
}
private void getDataTransaction() {
TransactionService transactionService = client.Client(TransactionService.class);
transactionService.getAllTransaction().enqueue(new Callback<DataResponse<List<PaymentsModels>>>() {
@Override
public void onResponse(Call<DataResponse<List<PaymentsModels>>> call,
Response<DataResponse<List<PaymentsModels>>> response) {
Log.i("Get all transaction", "onResponse: "+utils.convertGson(response.body()));
if (response.body() != null){
transactions.setValue(response.body());
}else{
transactions = null;
}
}
@Override
public void onFailure(Call<DataResponse<List<PaymentsModels>>> call, Throwable t) {
Log.e("Error get transaction", "onFailure: ",t );
transactions = null;
}
});
}
private void getDataProductByCategory(int id) { private void getDataProductByCategory(int id) {
CategoryServise categoryServise = client.Client(CategoryServise.class); CategoryServise categoryServise = client.Client(CategoryServise.class);
......
...@@ -15,6 +15,15 @@ public class PaymentsModels { ...@@ -15,6 +15,15 @@ public class PaymentsModels {
@SerializedName("gross_amount") @SerializedName("gross_amount")
private long grossAmount; private long grossAmount;
@SerializedName("transaction_status")
private String transactionStatus;
@SerializedName("created_at")
private String createdAt;
@SerializedName("updated_at")
private String updatedAt;
public PaymentsModels() { public PaymentsModels() {
} }
...@@ -56,4 +65,28 @@ public class PaymentsModels { ...@@ -56,4 +65,28 @@ public class PaymentsModels {
public void setGrossAmount(long grossAmount) { public void setGrossAmount(long grossAmount) {
this.grossAmount = grossAmount; this.grossAmount = grossAmount;
} }
public String getTransactionStatus() {
return transactionStatus;
}
public void setTransactionStatus(String transactionStatus) {
this.transactionStatus = transactionStatus;
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public String getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(String updatedAt) {
this.updatedAt = updatedAt;
}
} }
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
> >
<EditText <EditText
android:id="@+id/etSearchProduct"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#fff" android:textColor="#fff"
......
...@@ -20,4 +20,10 @@ ...@@ -20,4 +20,10 @@
android:title="Create Product" android:title="Create Product"
app:showAsAction="never" /> app:showAsAction="never" />
<item
android:id="@+id/allTransaction"
android:orderInCategory="100"
android:title="All Transaction"
app:showAsAction="never" />
</menu> </menu>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment