Commit 0899a17e authored by Alfansyah Fadlian's avatar Alfansyah Fadlian

fix color all transaction

parents e2af30a2 d720eb45
......@@ -15,10 +15,14 @@ import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.lifecycle.ViewModelProvider;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.yono.messeripos.adapter.ProductAdapter;
import com.yono.messeripos.api.client.Client;
import com.yono.messeripos.api.service.PaymentService;
import com.yono.messeripos.models.PaymentsModels;
import com.yono.messeripos.models.ProductModels;
import com.yono.messeripos.response.DataResponse;
import com.yono.messeripos.utils.Utils;
......@@ -27,6 +31,9 @@ import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import static com.yono.messeripos.MainActivity.CHECKOUT;
import static com.yono.messeripos.MainActivity.orderId;
public class BottomSheets extends BottomSheetDialogFragment {
EditText inputAmount;
......@@ -42,6 +49,16 @@ public class BottomSheets extends BottomSheetDialogFragment {
this.paymentsModels = paymentsModels;
}
public interface CashListener {
void onCash(PaymentsModels paymentsModels);
}
private CashListener listener;
public void setListener(CashListener listener) {
this.listener = listener;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable Bundle savedInstanceState)
......@@ -73,7 +90,7 @@ public class BottomSheets extends BottomSheetDialogFragment {
grossAmount = paymentsModels.getGrossAmount();
long input = Long.parseLong(inputAmount.getText().toString());
long result = grossAmount - input;
long result = input-grossAmount;
hargaChange.setText(utils.convertPrice("Rp.", result));
......@@ -85,12 +102,12 @@ public class BottomSheets extends BottomSheetDialogFragment {
}
});
btnCash.setOnClickListener(view -> bayar());
btnCash.setOnClickListener(view -> bayar(view));
return v;
}
private void bayar() {
private void bayar(View view) {
// String orderId, String paymentType, String bank, long grossAmount
PaymentsModels paymentsModels = new PaymentsModels(
MainActivity.orderId,
......@@ -104,7 +121,13 @@ public class BottomSheets extends BottomSheetDialogFragment {
@Override
public void onResponse(Call<DataResponse<PaymentsModels>> call, Response<DataResponse<PaymentsModels>> response) {
if (response.body() != null){
SharedPreferences.Editor editor = PaymentActivity.sharedPreferences.edit();
editor.putBoolean(CHECKOUT, false);
editor.putString(orderId, "");
if (editor.commit()){
Intent i = new Intent(getActivity(), MainActivity.class);
view.getContext().startActivity(i);
}
}
}
......
......@@ -13,10 +13,12 @@ import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.DividerItemDecoration;
......@@ -55,20 +57,35 @@ public class CartActivity extends AppCompatActivity {
List<ProductCartModels> dataCart = null;
public static Boolean statusPost;
SharedPreferences sharedPreferences;
ImageView cartEmptyImage;
MaterialTextView cartEmptyText;
public static MaterialTextView grandToral;
Utils utils = new Utils();
public static long GrandTotal = 0;
MaterialButton btnSaveCart;
Button btnBayar;
Button btnCheckout;
CardView cardView;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
Button btnCheckout;
grandToral = findViewById(R.id.tvHarga);
btnSaveCart = findViewById(R.id.btSave);
cartEmptyImage = findViewById(R.id.cartEmpty);
cartEmptyText = findViewById(R.id.cartEmptyText);
recyclerView = findViewById(R.id.rvCart);
btnCheckout = findViewById(R.id.btCheckout);
cardView = findViewById(R.id.cardviews);
// set visibility gone for cartEmpty
cartEmptyImage.bringToFront();
cartEmptyText.bringToFront();
cartEmptyImage.setVisibility(View.GONE);
cartEmptyText.setVisibility(View.GONE);
modelsCart = new ViewModelProvider(this).get(MainViewModelsCart.class);
......@@ -82,11 +99,13 @@ public class CartActivity extends AppCompatActivity {
Log.i("Id Order on acart", "onCreate: "+orderId);
if (orderId.isEmpty()){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(ORDER_ID, "MES-ORDER"+utils.timeStamp());
editor.putString(ORDER_ID, "MES-ORDER"+orderId);
if (editor.commit()){
Toast.makeText(CartActivity.this, orderId, Toast.LENGTH_LONG).show();
}
}
// Toolbars
MaterialToolbar toolbars = findViewById(R.id.cAppBar);
setSupportActionBar(toolbars);
......@@ -95,8 +114,6 @@ public class CartActivity extends AppCompatActivity {
getSupportActionBar().setTitle("Cart");
toolbars.setNavigationOnClickListener(view -> onBackPressed());
recyclerView = findViewById(R.id.rvCart);
btnCheckout = findViewById(R.id.btCheckout);
cartAdapter = new CartAdapter();
LinearLayoutManager llm = new LinearLayoutManager(this);
......@@ -107,13 +124,19 @@ public class CartActivity extends AppCompatActivity {
modelsCart = new ViewModelProvider(this).get(MainViewModelsCart.class);
// show to cart
modelsCart.getCartById(orderId).observe(this, new Observer<List<ProductCartModels>>() {
@Override
public void onChanged(List<ProductCartModels> productCartModels) {
if (productCartModels != null) {
if (!productCartModels.isEmpty()) {
dataCart = productCartModels;
cartAdapter.setCartAdapter(CartActivity.this, productCartModels);
recyclerView.setAdapter(cartAdapter);
}else {
cartEmptyText.setVisibility(View.VISIBLE);
cartEmptyImage.setVisibility(View.VISIBLE);
cardView.setVisibility(View.GONE);
recyclerView.setVisibility(View.GONE);
}
}
});
......@@ -178,6 +201,7 @@ public class CartActivity extends AppCompatActivity {
}
private void actionSaveCart() {
Client client = new Client();
modelsCart.getCartById(orderId).observe(this, new Observer<List<ProductCartModels>>() {
@Override
......@@ -189,7 +213,7 @@ public class CartActivity extends AppCompatActivity {
grossAmount = grossAmount + (pd.getQuantity_orders()*pd.getPrice_orders());
paymentsModels.setGrossAmount(grossAmount);
}
paymentsModels.setBank("none");
paymentsModels.setBank("");
paymentsModels.setPaymentType("pending");
paymentsModels.setOrderId(orderId);
paymentsModels.setTransactionStatus("pending");
......
......@@ -10,8 +10,10 @@ import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ProgressBar;
import com.google.android.material.appbar.MaterialToolbar;
import com.yono.messeripos.adapter.TransactionAdapter;
......@@ -31,6 +33,7 @@ public class HistoryActivity extends AppCompatActivity {
MainViewModels mainViewModels;
RecyclerView recyclerView;
Utils utils = new Utils();
ProgressBar loading;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -44,6 +47,9 @@ public class HistoryActivity extends AppCompatActivity {
MaterialToolbar toolbars = findViewById(R.id.cAppBar);
recyclerView = findViewById(R.id.rvHistory);
loading = findViewById(R.id.loading);
loading.setVisibility(View.VISIBLE);
recyclerView.addItemDecoration(utils.dividerItemDecoration(HistoryActivity.this));
transactionAdapter = new TransactionAdapter();
mainViewModels = new ViewModelProvider(this).get(MainViewModels.class);
......@@ -75,6 +81,8 @@ public class HistoryActivity extends AppCompatActivity {
* SILAHKAN PINDAH KE ACTIVITY SELANJUTNYA PADA ON.....
* */
loading.setVisibility(View.GONE);
recyclerView.setLayoutManager(new LinearLayoutManager(HistoryActivity.this,RecyclerView.VERTICAL,false));
recyclerView.setAdapter(transactionAdapter);
}
......
......@@ -7,9 +7,11 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.service.controls.actions.ModeAction;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
......@@ -29,6 +31,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.appbar.MaterialToolbar;
import com.google.android.material.snackbar.Snackbar;
import com.google.gson.Gson;
import com.yono.messeripos.adapter.CategoryAdapter;
import com.yono.messeripos.adapter.ProductAdapter;
......@@ -70,6 +73,7 @@ public class MainActivity extends AppCompatActivity {
public static ArrayList<ProductModels> productModelsArrayList = new ArrayList<>();
public static final String DATA_PRODUCT = "DATA_PRODUCT";
ProgressDialog progressDialog;
public static Boolean cartOpen;
@SuppressLint("LongLogTag")
@Override
......@@ -239,6 +243,10 @@ public class MainActivity extends AppCompatActivity {
binding.rvProduct.setAdapter(productAdapter);
}
} else {
showLoading(false);
binding.imgEmpty.setVisibility(View.VISIBLE);
binding.imgEmpty.bringToFront();
}
}
});
......@@ -287,10 +295,10 @@ public class MainActivity extends AppCompatActivity {
0
));
Log.d("order_id_create", "onChanged: "+orderId);
// Log.d("order_id_create", "onChanged: "+orderId);
cartIsEmpty = false;
Log.i("Add data cart", "onChanged: Berhasil ditambahkan");
// Log.i("Add data cart", "onChanged: Berhasil ditambahkan");
}else {
if (cartIsEmpty){
startActivity(new Intent(MainActivity.this, CartActivity.class));
......@@ -301,6 +309,11 @@ public class MainActivity extends AppCompatActivity {
}
});
}
@Override
public void redirect() {
startActivity(new Intent(MainActivity.this, CartActivity.class));
}
});
}
......@@ -399,7 +412,7 @@ public class MainActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.home, menu);
getMenuInflater().inflate(R.menu.update, menu);
return true;
}
......@@ -407,8 +420,8 @@ public class MainActivity extends AppCompatActivity {
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == R.id.menu_cart){
Toast.makeText(MainActivity.this, "dfjhgkjdfgkdfg" +
"", Toast.LENGTH_LONG).show();
startActivity(new Intent(MainActivity.this, MainActivity.class));
finish();
}
return super.onOptionsItemSelected(item);
}
......
......@@ -8,6 +8,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
......@@ -41,6 +42,7 @@ import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import static com.yono.messeripos.BottomSheets.grossAmount;
import static com.yono.messeripos.MainActivity.CHECKOUT;
import static com.yono.messeripos.MainActivity.ORDER_ID;
import static com.yono.messeripos.MainActivity.checkout;
......@@ -61,6 +63,7 @@ public class PaymentActivity extends AppCompatActivity {
public static BottomSheets bottomSheet;
public static SharedPreferences sharedPreferences;
Button cashBtn;
ProgressDialog progressDialog;
......@@ -80,6 +83,9 @@ public class PaymentActivity extends AppCompatActivity {
checkoutAdapter = new CheckoutAdapter();
recyclerView = findViewById(R.id.rvItem);
grandTotal = findViewById(R.id.grand_total);
progressDialog = new ProgressDialog(PaymentActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
MaterialToolbar toolbars = findViewById(R.id.appbar);
setSupportActionBar(toolbars);
......@@ -106,6 +112,8 @@ public class PaymentActivity extends AppCompatActivity {
}
});
bottomSheet = new BottomSheets(paymentsModels);
RecyclerView rvPayment = findViewById(R.id.rvPayment);
......@@ -138,6 +146,7 @@ public class PaymentActivity extends AppCompatActivity {
bottomSheet.show(getSupportFragmentManager(),
"ModalBottomSheet");
}else{
progressDialog.show();
Client client = new Client();
paymentsModels.setPaymentType("bank_transfer");
paymentsModels.setBank(methodPay);
......@@ -152,11 +161,13 @@ public class PaymentActivity extends AppCompatActivity {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(ORDER_ID, "");
editor.putBoolean(CHECKOUT, false);
progressDialog.dismiss();
if (editor.commit()){
startActivity(new Intent(PaymentActivity.this, MainActivity.class));
finish();
}
}else{
progressDialog.dismiss();
new AlertDialog.Builder(PaymentActivity.this)
.setTitle("Payment Order")
.setMessage("Erorr save!").show();
......@@ -165,6 +176,7 @@ public class PaymentActivity extends AppCompatActivity {
@Override
public void onFailure(Call<DataResponse<PaymentsModels>> call, Throwable t) {
progressDialog.dismiss();
new AlertDialog.Builder(PaymentActivity.this)
.setCancelable(false)
.setTitle("Payment Order")
......@@ -177,6 +189,41 @@ public class PaymentActivity extends AppCompatActivity {
}
});
bottomSheet.setListener(new BottomSheets.CashListener() {
@Override
public void onCash(PaymentsModels paymentsModels) {
progressDialog.show();
Client client = new Client();
PaymentsModels paymentsModels1 = new PaymentsModels(
MainActivity.orderId,
"cash",
"none",
grossAmount
);
PaymentService paymentService = client.Client(PaymentService.class);
paymentService.postFromCart(paymentsModels1).enqueue(new Callback<DataResponse<PaymentsModels>>() {
@Override
public void onResponse(Call<DataResponse<PaymentsModels>> call, Response<DataResponse<PaymentsModels>> response) {
if (response.body() != null){
progressDialog.dismiss();
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(CHECKOUT, false);
editor.putString(orderId, "");
if (editor.commit()){
startActivity(new Intent(PaymentActivity.this, MainActivity.class));
}
}
}
@Override
public void onFailure(Call<DataResponse<PaymentsModels>> call, Throwable t) {
}
});
}
});
}
@Override
......
......@@ -8,6 +8,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil;
......@@ -15,6 +16,7 @@ import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.snackbar.Snackbar;
import com.yono.messeripos.MainActivity;
import com.yono.messeripos.R;
import com.yono.messeripos.databinding.ItemListBinding;
......@@ -36,6 +38,8 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
void onDelete(ProductModels product, int position);
void onAddCart(ProductModels product);
void redirect();
}
private ProductListener listener;
......@@ -147,6 +151,14 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
public void onClick(View view) {
listener.onAddCart(products);
MainActivity.cartIsEmpty = true;
Snackbar.make(view, products.getProductName()+" berhasil ditambahkan", Snackbar.LENGTH_SHORT)
.setAction(R.string.open_cart, new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.redirect();
}
})
.show();
}
});
......
......@@ -82,18 +82,17 @@ public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter.
itemHistoryBinding.setDate(utils.convertDate(paymentsModels.getUpdatedAt()));
itemHistoryBinding.cvHistory.setOnClickListener(view -> listener.onShowDetail(paymentsModels));
itemHistoryBinding.getTransactionStatus().equals("settlements".toLowerCase());
statusTransaction = "Success";
itemHistoryBinding.tvHistory.setBackgroundColor(0xFF12FF45);
itemHistoryBinding.getTransactionStatus().equals("pending".toLowerCase());
statusTransaction = "Pending";
itemHistoryBinding.tvHistory.setBackgroundColor(0x55FF0000);
itemHistoryBinding.getTransactionStatus().equals("success".toLowerCase());
statusTransaction = "Success";
itemHistoryBinding.tvHistory.setBackgroundColor(0xFF12FF45);
if (paymentsModels.getTransactionStatus().equals("Settlement".toLowerCase())) {
statusTransaction = "Settlement";
itemHistoryBinding.tvHistory.setBackgroundColor(0x550000FF);
} else if (paymentsModels.getTransactionStatus().equals("Pending".toLowerCase())) {
statusTransaction = "Pending";
itemHistoryBinding.tvHistory.setBackgroundColor(0x55FF0000);
}else if (paymentsModels.getTransactionStatus().equals("Success".toLowerCase())) {
statusTransaction = "Success";
itemHistoryBinding.tvHistory.setBackgroundColor(0xFF12FF45);
}
}
}
}
......@@ -88,13 +88,13 @@ public class Utils {
public String convertImageBase64File(String pathname){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
options.inSampleSize = 3;
// BitmapFactory.Options options = new BitmapFactory.Options();
// options.inJustDecodeBounds = true;
// options.inSampleSize = 3;
// options.inSampleSize = calculateInSampleSize(options, 20,20);
Bitmap bitmap = BitmapFactory.decodeFile(pathname,options);
Bitmap bitmap = BitmapFactory.decodeFile(pathname);
bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);
byte[] b = baos.toByteArray();
String encodeImage = Base64.encodeToString(b, Base64.DEFAULT);
......
<vector android:height="24dp" android:tint="#4DFF42"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>
</vector>
......@@ -11,18 +11,36 @@
android:id="@+id/cAppBar"
layout="@layout/app_bar"/>
<ImageView
android:id="@+id/cartEmpty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/emptycart"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cartEmptyText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cart is empty!"
android:layout_below="@id/cartEmpty"
android:layout_centerInParent="true"
android:textSize="30dp"
android:textColor="#61333333"
/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvCart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/cardview"
android:layout_above="@id/cardviews"
android:layout_below="@id/cAppBar"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/item_cart" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardview"
android:id="@+id/cardviews"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="0dp"
......
......@@ -10,15 +10,23 @@
android:id="@+id/cAppBar"
layout="@layout/app_bar" />
<ProgressBar
android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:elevation="1dp"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="600dp"
android:layout_height="0dp"
android:layout_alignParentBottom="true"
android:layout_below="@+id/cAppBar">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvHistory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_below="@id/cAppBar"
tools:listitem="@layout/item_history" />
</ScrollView>
......
......@@ -86,8 +86,9 @@
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/title_product"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/materialBtnAddCart"
tools:text="@tools:sample/full_names"
android:textColor="@android:color/black"
android:textColor="#5E101010"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:textSize="18sp"
......@@ -99,29 +100,32 @@
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/title_product"
app:layout_constraintBottom_toBottomOf="@id/price"
app:layout_constraintTop_toTopOf="@id/price"
app:layout_constraintStart_toEndOf="@id/price"
tools:text="@tools:sample/full_names"
android:textColor="@android:color/black"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:textSize="10sp"
android:lines="1"
android:textAllCaps="true"
android:text="@{status}"
android:maxLength="25"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/materialBtnAddCart"
android:padding="1dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text="Add To Cart"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/materialBtnAddCart"
android:padding="1dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text="Add To Cart"/>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_cart"
app:showAsAction="always"
android:icon="@drawable/ic_baseline_shopping_cart_24"
android:actionLayout="@layout/custome_action_badge"
android:title="Cart" />
</menu>
\ No newline at end of file
......@@ -26,6 +26,7 @@
<string name="title_success">Success</string>
<string name="hint_pay">cash</string>
<string name="title_next">next</string>
<string name="open_cart">Open Cart</string>
<string-array name="planets_array">
<item>Mercury</item>
......
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