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

Update main activity

parent e3c02909
......@@ -7,12 +7,15 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
......@@ -36,6 +39,7 @@ import com.yono.messeripos.databinding.ActivityMainBinding;
import com.yono.messeripos.models.CategoryModels;
import com.yono.messeripos.models.MainViewModels;
import com.yono.messeripos.models.MainViewModelsCart;
import com.yono.messeripos.models.PaymentsModels;
import com.yono.messeripos.models.ProductCartModels;
import com.yono.messeripos.models.ProductModels;
import com.yono.messeripos.response.DataResponse;
......@@ -52,6 +56,7 @@ public class MainActivity extends AppCompatActivity {
ProductAdapter productAdapter;
CartAdapter cartAdapter;
TextView txtBadge;
EditText etSearch;
Utils utils = new Utils();
public static Boolean status_update = false;
MainViewModelsCart mainViewModelsCart;
......@@ -87,6 +92,23 @@ public class MainActivity extends AppCompatActivity {
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() {
@Override
public boolean onMenuItemClick(MenuItem item) {
......@@ -112,6 +134,11 @@ public class MainActivity extends AppCompatActivity {
productAdapter.notifyDataSetChanged();
}else if (id == R.id.create) {
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;
}
......@@ -259,34 +286,43 @@ public class MainActivity extends AppCompatActivity {
binding.rvProduct.setVisibility(View.GONE);
if (categoryModels.getIdCategory() == 0){
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();
}
}
}
});
if (mainViewModels.getProduct().getValue().getData().size() != 0){
progressDialog.dismiss();
selectCategory = false;
}else{
binding.rvProduct.setVisibility(View.GONE);
binding.imgEmpty.setVisibility(View.VISIBLE);
binding.imgEmpty.bringToFront();
selectCategory = false;
}
// 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;
}else{
mainViewModels.getProductByCategory(categoryModels.getIdCategory()).observe(MainActivity.this, new Observer<DataResponse<List<ProductModels>>>() {
......
......@@ -2,42 +2,31 @@ package com.yono.messeripos.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import android.widget.Filter;
import android.widget.Filterable;
import androidx.annotation.NonNull;
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.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.RecyclerView;
import com.google.gson.Gson;
import com.yono.messeripos.MainActivity;
import com.yono.messeripos.R;
import com.yono.messeripos.databinding.ItemListBinding;
import com.yono.messeripos.models.CartModels;
import com.yono.messeripos.models.MainViewModelsCart;
import com.yono.messeripos.models.ProductCartModels;
import com.yono.messeripos.models.ProductModels;
import com.yono.messeripos.utils.Utils;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
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> productModelsFiltered = new ArrayList<>();
Context context;
MainViewModelsCart mainViewModelsCart;
Utils utils = new Utils();
public interface ProductListener {
......@@ -58,10 +47,42 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
public void setProduct(Context context, ArrayList<ProductModels> productModels) {
this.productModels = productModels;
this.context = context;
mainViewModelsCart = ViewModelProviders.of((FragmentActivity) context).get(MainViewModelsCart.class);
this.productModelsFiltered = productModels;
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
@Override
public ProductAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
......@@ -77,12 +98,12 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
@Override
public void onBindViewHolder(@NonNull ProductAdapter.MyViewHolder holder, int position) {
holder.bindData(productModels.get(position));
holder.bindData(productModelsFiltered.get(position));
}
@Override
public int getItemCount() {
return productModels.size();
return productModelsFiltered.size();
}
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;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Transformations;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import com.google.gson.Gson;
import com.yono.messeripos.api.client.Client;
import com.yono.messeripos.api.service.CategoryServise;
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.response.DataResponse;
import com.yono.messeripos.utils.Utils;
import java.util.ArrayList;
import java.util.List;
......@@ -25,13 +29,19 @@ public class MainViewModels extends ViewModel {
MutableLiveData<DataResponse<List<ProductModels>>> productByCategory;
MutableLiveData<DataResponse<List<CategoryModels>>> categoryList;
MutableLiveData<DataResponse<UsersModels>> usersLogin;
MutableLiveData<DataResponse<List<PaymentsModels>>> transactions;
private MainViewModels mainViewModels;
Client client = new Client();
Utils utils = new Utils();
public MainViewModels(){
productList = new MutableLiveData<>();
categoryList = new MutableLiveData<>();
productByCategory = new MutableLiveData<>();
transactions = new MutableLiveData<>();
}
public LiveData<DataResponse<List<ProductModels<CategoryModels>>>> getProduct(){
......@@ -49,6 +59,34 @@ public class MainViewModels extends ViewModel {
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) {
CategoryServise categoryServise = client.Client(CategoryServise.class);
......
......@@ -15,6 +15,15 @@ public class PaymentsModels {
@SerializedName("gross_amount")
private long grossAmount;
@SerializedName("transaction_status")
private String transactionStatus;
@SerializedName("created_at")
private String createdAt;
@SerializedName("updated_at")
private String updatedAt;
public PaymentsModels() {
}
......@@ -56,4 +65,28 @@ public class PaymentsModels {
public void setGrossAmount(long 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 @@
>
<EditText
android:id="@+id/etSearchProduct"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#fff"
......
......@@ -20,4 +20,10 @@
android:title="Create Product"
app:showAsAction="never" />
<item
android:id="@+id/allTransaction"
android:orderInCategory="100"
android:title="All Transaction"
app:showAsAction="never" />
</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