diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java index 8e1a517f684ff979726ca1c9532339f50702645e..0a83eac03f4e7431ffd671edd44de4ddcd609adc 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java @@ -174,8 +174,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe return true; } - - if(this.manager.getCurrentUser() != null) { if (event.getAction() == KeyEvent.ACTION_UP) { if (KeyEvent.KEYCODE_ENTER == event.getKeyCode()) { diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/RestService.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/RestService.java index 83b2b4d2f16bbcb96037eaf7606310c53dd6ff67..6be68a836070aa98f103aa1061e396c721307240 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/RestService.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/RestService.java @@ -1,6 +1,7 @@ package ms.warpzone.warppay.data; +import java.util.ArrayList; import java.util.List; import ms.warpzone.warppay.data.models.rest.RestCategory; @@ -34,8 +35,8 @@ public interface RestService { @GET("categories/") Call<List<RestCategory>> getAllCategories(); - @PUT("transaction/{userid}/") - Call<Void> saveTransaction(@Path("userid") String uid, @Body RestTransaction transaction); + @PUT("transactions/{userid}/") + Call<Void> saveTransaction(@Path("userid") String uid, @Body ArrayList<RestTransaction> transaction); @PUT("products/{productid}/barcode/") Call<Void> saveBarcode(@Path("productid") int pid, @Body RestProduct product); diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java index 1f40632fbb3e7d71ffa19b814ed17a5494afa2aa..b4f8e2fce969a97ce6b622fdb93fd09090b03543 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java @@ -4,6 +4,7 @@ import android.util.Log; import android.widget.Toast; import java.util.ArrayList; +import java.util.List; import ms.warpzone.warppay.data.models.local.User; import ms.warpzone.warppay.data.models.rest.RestProduct; @@ -15,12 +16,13 @@ import retrofit.Response; import retrofit.Retrofit; public class DataManager { + private static DataManager ourInstance = new DataManager(); + private User currentUser; private Boolean is_guest=false; private double totalAmount; private ArrayList<Order> orderList; - private static DataManager ourInstance = new DataManager(); private String lastCardId; public static DataManager getInstance() { @@ -32,7 +34,6 @@ public class DataManager { } public void saveCurrentUser() { - RestUser rest_user = RestUser.fromLocalUser(this.currentUser); MainManager.getInstance().getRestService().saveUser(rest_user.getUserid(), rest_user).enqueue(new Callback<RestUser>() { @Override @@ -49,7 +50,6 @@ public class DataManager { Log.d("REST", t.getMessage()); } }); - } public Boolean getIs_guest() { @@ -61,24 +61,28 @@ public class DataManager { } public void performPayment(Boolean cash) { + ArrayList transactions = new ArrayList<>(); + for (Order order:this.orderList) { RestTransaction transaction = new RestTransaction(); transaction.setProduct(RestProduct.fromLocalProduct(order.getProduct())); transaction.setTrans_type(2); - if(this.is_guest || cash) + if (this.is_guest || cash) transaction.setCash_paid(true); - MainManager.getInstance().getRestService().saveTransaction(this.currentUser.getUserid(), transaction).enqueue(new Callback<Void>() { - @Override - public void onResponse(Response<Void> response, Retrofit retrofit) { + transactions.add(transaction); + } + MainManager.getInstance().getRestService().saveTransaction(this.currentUser.getUserid(), transactions).enqueue(new Callback<Void>() { + @Override + public void onResponse(Response<Void> response, Retrofit retrofit) { + Log.d("REST",String.valueOf(response.code())); + } - } + @Override + public void onFailure(Throwable t) { + Log.d("REST", t.getMessage()); + } + }); - @Override - public void onFailure(Throwable t) { - Log.d("REST", t.getMessage()); - } - }); - } if(!this.is_guest && !cash) { this.currentUser.setCredit(this.currentUser.getCredit() - this.totalAmount); this.currentUser.save(); @@ -113,10 +117,6 @@ public class DataManager { this.orderList.remove(order); this.totalAmount -= order.getProduct().getPrice(); } - public void setTotalAmount(double totalAmount) { - this.totalAmount = totalAmount; - } - public void setLastCardId(String lastCardId) { this.lastCardId = lastCardId; } diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java index e6532170f8147c023fcd9cd35068403676973d0a..7e3effe1cc40da46e8343df2f4c2ee4326769a43 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java @@ -22,6 +22,7 @@ import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; +import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; @@ -49,6 +50,7 @@ import retrofit.Response; import retrofit.Retrofit; public class MainManager { + private static MainManager instance = new MainManager(); private RestService restService; private MainActivity mainActivity; @@ -57,9 +59,8 @@ public class MainManager { private DataManager dataManager; private boolean barcodeLearning=false; private Timer timer; - private static MainManager instance = new MainManager(); private Timer screenSaverTimer; - + public AlertDialog alertAmount; public static MainManager getInstance() { return instance; } @@ -70,8 +71,9 @@ public class MainManager { private RestService createRestService() { Retrofit.Builder builder = new Retrofit.Builder() + // .baseUrl("http://infra.warpzone:8000/api/") .baseUrl("https://infra.warpzone/api/") - .addConverterFactory(GsonConverterFactory.create()); + .addConverterFactory(GsonConverterFactory.create()); OkHttpClient okHttp = new OkHttpClient(); @@ -84,7 +86,7 @@ public class MainManager { Request newRequest; newRequest = request.newBuilder() - .addHeader("Authorization", "Token 7b6ca8ade59a32cef9b516e91f3bc9545b6c75a7") + .addHeader("Authorization", "Token 29e87bab51b9634504b9aee58c1360668e4afd0a") .build(); return chain.proceed(newRequest); @@ -95,14 +97,12 @@ public class MainManager { } Retrofit retrofit = builder.client(okHttp).build(); - return retrofit.create(RestService.class); } private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException { - CertificateFactory cf = null; String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw"; KeyStore keyStore = KeyStore.getInstance("BKS"); keyStore.load(context.getResources().openRawResource(R.raw.keystore), password.toCharArray()); @@ -116,6 +116,7 @@ public class MainManager { return sslContext; } + public void init(MainActivity mainActivity) { this.mainActivity = mainActivity; this.sqLiteService = SQLiteService.getInstance(); @@ -283,7 +284,10 @@ public class MainManager { t.setAmount(amount); t.setTrans_type(1); t.setCash_paid(true); - MainManager.getInstance().getRestService().saveTransaction(currentUser.getUserid(), t).enqueue(new Callback<Void>() { + ArrayList transactions = new ArrayList<>(); + transactions.add(t); + + MainManager.getInstance().getRestService().saveTransaction(currentUser.getUserid(), transactions).enqueue(new Callback<Void>() { @Override public void onResponse(Response<Void> response, Retrofit retrofit) { } @@ -316,8 +320,33 @@ public class MainManager { if (totalAmount > 0.0 && user != null){ if (DataManager.getInstance().getCurrentUser().getCredit()>=totalAmount || cash){ DataManager.getInstance().performPayment(cash); + if(!cash) { + AlertDialog.Builder builder = new AlertDialog.Builder(this.mainActivity); + builder.setMessage("Neues Guthaben: " + this.getCurrentUser().getCredit() + " Euro"); + alertAmount = builder.create(); + alertAmount.show(); + final Handler handler = new Handler(); + final Runnable runnable = new Runnable() { + @Override + public void run() { + if (MainManager.getInstance().alertAmount.isShowing()) { + alertAmount.dismiss(); + } + } + }; + + alertAmount.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + handler.removeCallbacks(runnable); + } + }); + + handler.postDelayed(runnable, 2500); + } MainManager.getInstance().clearCurrentUser(); + } else { Toast.makeText(mainActivity, mainActivity.getResources().getString(R.string.please_charge), Toast.LENGTH_LONG).show(); }