From 691571040f5cfea8d1062c024f63d104c475ee9a Mon Sep 17 00:00:00 2001 From: Christian Dresen <c.dresen@fh-muenster.de> Date: Wed, 15 Mar 2017 01:23:54 +0100 Subject: [PATCH] Refactored for new Backend --- WarpDrinkApp/app/app.iml | 4 +- .../ms/itsecteam/warpdrink/MainActivity.java | 2 +- .../itsecteam/warpdrink/data/RestService.java | 3 + .../warpdrink/data/SQLiteService.java | 1 + .../data/models/rest/RestProduct.java | 42 +++++++------- .../data/models/rest/RestTransaction.java | 58 +++++++++++++++++++ .../warpdrink/dialogs/NewUserDialog.java | 2 + .../warpdrink/manager/DataManager.java | 39 +++++++++++-- .../warpdrink/manager/MainManager.java | 47 +++++++++++---- .../warpdrink/manager/UiManager.java | 3 +- .../app/src/main/res/values/strings.xml | 1 + 11 files changed, 163 insertions(+), 39 deletions(-) create mode 100644 WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestTransaction.java diff --git a/WarpDrinkApp/app/app.iml b/WarpDrinkApp/app/app.iml index 4fefdc2..96e0f1d 100644 --- a/WarpDrinkApp/app/app.iml +++ b/WarpDrinkApp/app/app.iml @@ -92,10 +92,10 @@ <orderEntry type="library" exported="" name="converter-gson-2.0.0-beta2" level="project" /> <orderEntry type="library" exported="" name="jackson-databind-2.0.1" level="project" /> <orderEntry type="library" exported="" name="jackson-annotations-2.0.1" level="project" /> - <orderEntry type="library" exported="" name="spring-android-rest-template-1.0.1.RELEASE" level="project" /> <orderEntry type="library" exported="" name="okhttp-2.7.5" level="project" /> - <orderEntry type="library" exported="" name="antlr4-runtime-4.5.3" level="project" /> + <orderEntry type="library" exported="" name="spring-android-rest-template-1.0.1.RELEASE" level="project" /> <orderEntry type="library" exported="" name="gson-2.7" level="project" /> + <orderEntry type="library" exported="" name="antlr4-runtime-4.5.3" level="project" /> <orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" /> <orderEntry type="library" exported="" name="spring-android-core-1.0.1.RELEASE" level="project" /> <orderEntry type="library" exported="" name="codepath-utils" level="project" /> diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java index 7ed3ff0..3e879c3 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java @@ -109,7 +109,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe case R.id.action_learn_card_id: if (this.manager.getCurrentUser() != null){ new AlertDialog.Builder(this) - .setTitle(this.getResources().getString(R.string.confirm_payment_title)) + .setTitle(this.getResources().getString(R.string.confirm_learn_card)) .setMessage("Bitte die Karte vorhalten und nach dem Ton auf ok drücken.") .setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestService.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestService.java index 0789d59..9a960e8 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestService.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestService.java @@ -4,6 +4,7 @@ package ms.itsecteam.warpdrink.data; import java.util.List; import ms.itsecteam.warpdrink.data.models.rest.RestProduct; +import ms.itsecteam.warpdrink.data.models.rest.RestTransaction; import ms.itsecteam.warpdrink.data.models.rest.RestUser; import retrofit.Call; import retrofit.http.Body; @@ -29,4 +30,6 @@ public interface RestService { @GET("products/") Call<List<RestProduct>> getAllProducts(); + @PUT("transaction/{userid}/") + Call<Void> saveTransaction(@Path("userid") String uid, @Body RestTransaction transaction); } \ No newline at end of file diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/SQLiteService.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/SQLiteService.java index 4b51092..d6c2445 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/SQLiteService.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/SQLiteService.java @@ -58,6 +58,7 @@ public class SQLiteService { for (RestProduct anU : body) { Product prod = anU.toLocalProduct(); prod.save(); + Log.d("HALLO",String.valueOf(prod.getPid())); ret_val.add(prod); } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestProduct.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestProduct.java index 2613bf7..c3f8cfc 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestProduct.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestProduct.java @@ -1,35 +1,37 @@ package ms.itsecteam.warpdrink.data.models.rest; +import android.util.Log; + import ms.itsecteam.warpdrink.data.models.local.Product; import ms.itsecteam.warpdrink.data.models.local.User; public class RestProduct { - private int pid; + private int id; private String name; private String category; - private Float price; - private int count; + private Float price_vk; + private int stock_count; public RestProduct() { super(); } - public RestProduct(int pid, String name, String category, Float price, int count) { - this.pid = pid; + public RestProduct(int id, String name, String category, Float price_vk, int stock_count) { + this.id = id; this.name = name; this.category = category; - this.price = price; - this.count = count; + this.price_vk = price_vk; + this.stock_count = stock_count; } - public int getPid() { - return pid; + public int getId() { + return this.id; } - public void setPid(int pid) { - this.pid = pid; + public void setId(int id) { + this.id = id; } public String getName() { @@ -49,34 +51,34 @@ public class RestProduct { } public Float getPrice() { - return price; + return price_vk; } public void setPrice(Float price) { - this.price = price; + this.price_vk = price_vk; } public int getCount() { - return count; + return stock_count; } - public void setCount(int count) { - this.count = count; + public void setCount(int stock_count) { + this.stock_count = stock_count; } public Product toLocalProduct() { Product p = new Product(); - p.setPid(this.pid); + p.setPid(this.id); p.setName(this.name); p.setCategory(this.category); - p.setPrice(this.price); - p.setCount(this.count); + p.setPrice(this.price_vk); + p.setCount(this.stock_count); return p; } public static RestProduct fromLocalProduct(Product product) { RestProduct restProduct = new RestProduct(); - restProduct.setPid(product.getPid()); + restProduct.setId(product.getPid()); restProduct.setName(product.getName()); restProduct.setCategory(product.getCategory()); restProduct.setCount(product.getCount()); diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestTransaction.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestTransaction.java new file mode 100644 index 0000000..97db60e --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/models/rest/RestTransaction.java @@ -0,0 +1,58 @@ +package ms.itsecteam.warpdrink.data.models.rest; + +public class RestTransaction { + + private int tid; + private int trans_type; + private RestProduct product; + private double amount; + private boolean cash_paid; + + public RestTransaction() { + super(); + } + + public RestTransaction(int tid, int trans_type, RestProduct product, double amount, boolean cash_paid) { + this.tid = tid; + this.trans_type = trans_type; + this.product = product; + this.amount = amount; + this.cash_paid = cash_paid; + } + + public int getTid() { + return tid; + } + + public int getTrans_type() { + return trans_type; + } + + public void setTrans_type(int trans_type) { + this.trans_type = trans_type; + } + + public RestProduct getProduct() { + return product; + } + + public void setProduct(RestProduct product) { + this.product = product; + } + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + public boolean isCash_paid() { + return cash_paid; + } + + public void setCash_paid(boolean cash_paid) { + this.cash_paid = cash_paid; + } +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java index b517a9f..e0cc8ba 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java @@ -37,6 +37,7 @@ public class NewUserDialog extends Dialog implements @Override public void onClick(View v) { + /* switch (v.getId()) { case R.id.btnAddUser: String username = this.txtUsername.getText().toString(); @@ -54,5 +55,6 @@ public class NewUserDialog extends Dialog implements default: break; } + */ } } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DataManager.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DataManager.java index e660d3b..3ad51c4 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DataManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/DataManager.java @@ -2,8 +2,14 @@ package ms.itsecteam.warpdrink.manager; import android.util.Log; +import java.io.IOException; +import java.util.ArrayList; + import ms.itsecteam.warpdrink.data.models.local.User; +import ms.itsecteam.warpdrink.data.models.rest.RestProduct; +import ms.itsecteam.warpdrink.data.models.rest.RestTransaction; import ms.itsecteam.warpdrink.data.models.rest.RestUser; +import ms.itsecteam.warpdrink.orderList.Order; import retrofit.Callback; import retrofit.Response; import retrofit.Retrofit; @@ -11,7 +17,7 @@ import retrofit.Retrofit; public class DataManager { private User currentUser; private double totalAmount; - + private ArrayList<Order> orderList; private static DataManager ourInstance = new DataManager(); private String lastCardId; @@ -20,6 +26,7 @@ public class DataManager { } private DataManager() { + this.orderList = new ArrayList<Order>(); } public void saveCurrentUser() { @@ -39,13 +46,31 @@ public class DataManager { public void performPayment() { + for (Order order:this.orderList) { + RestTransaction transaction = new RestTransaction(); + transaction.setProduct(RestProduct.fromLocalProduct(order.getProduct())); + transaction.setTrans_type(2); + MainManager.getInstance().getRestService().saveTransaction(this.currentUser.getUserid(), transaction).enqueue(new Callback<Void>() { + @Override + public void onResponse(Response<Void> response, Retrofit retrofit) { + + } + + @Override + public void onFailure(Throwable t) { + Log.d("REST", t.getMessage()); + } + }); + } this.currentUser.setCredit(this.currentUser.getCredit()-this.totalAmount); - this.saveCurrentUser(); + this.currentUser.save(); this.totalAmount = 0.0; } public void clearCurrentUser() { this.currentUser = null; + this.totalAmount = 0.0; + this.orderList = new ArrayList<Order>(); } public User getCurrentUser() { @@ -60,10 +85,14 @@ public class DataManager { return totalAmount; } - public void addToTotalAmount(double value) { - this.totalAmount += value; + public void addOrder(Order order) { + this.orderList.add(order); + this.totalAmount += order.getProduct().getPrice(); + } + public void removeOrder(Order order) { + this.orderList.remove(order); + this.totalAmount -= order.getProduct().getPrice(); } - public void setTotalAmount(double totalAmount) { this.totalAmount = totalAmount; } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/MainManager.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/MainManager.java index 8d44566..f1ba28e 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/MainManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/MainManager.java @@ -13,6 +13,7 @@ import ms.itsecteam.warpdrink.data.models.local.Product; import ms.itsecteam.warpdrink.data.models.local.User; import ms.itsecteam.warpdrink.data.RestService; import ms.itsecteam.warpdrink.data.models.rest.RestProduct; +import ms.itsecteam.warpdrink.data.models.rest.RestTransaction; import ms.itsecteam.warpdrink.data.models.rest.RestUser; import ms.itsecteam.warpdrink.orderList.Order; import retrofit.Callback; @@ -43,7 +44,8 @@ public class MainManager { private RestService createRestService() { Retrofit retrofit = new Retrofit.Builder() - .baseUrl("https://infra-test.warpzone.ms/api/") + .baseUrl("http://10.0.1.134:8000/api/") + //.baseUrl("https://infra-test.warpzone.ms/api/") // .baseUrl("http://10.0.2.92:8000/api/") .addConverterFactory(GsonConverterFactory.create()) .build(); @@ -92,7 +94,7 @@ public class MainManager { }); } - +/** public boolean addUser(String name) { Log.d("USER", "Start"); if(User.getByName(name) == null) { @@ -115,7 +117,7 @@ public class MainManager { } return false; } - +**/ public void setCurrentUser(User user) { if (user != null) { this.dataManager.setCurrentUser(user); @@ -131,22 +133,47 @@ public class MainManager { this.uiManager.clearCurrentUser(); } - public void addOrder(Product product) { - DataManager.getInstance().addToTotalAmount(product.getPrice()); + public void addOrder(Order order) { + DataManager.getInstance().addOrder(order); this.uiManager.refreshTotalTextView(DataManager.getInstance().getTotalAmount()); } public void removeOrder(Order order) { - DataManager.getInstance().addToTotalAmount((-1)*order.getProduct().getPrice()); + DataManager.getInstance().removeOrder(order); this.uiManager.removeOrder(order); this.uiManager.refreshTotalTextView(DataManager.getInstance().getTotalAmount()); } public void chargeAmount(double amount) { User currentUser = this.dataManager.getCurrentUser(); - currentUser.setCredit(currentUser.getCredit() + amount); - this.dataManager.saveCurrentUser(); - MainManager.getInstance().uiManager.refreshCreditTextView(currentUser.getCredit()); + RestTransaction t = new RestTransaction(); + t.setAmount(amount); + t.setTrans_type(1); + t.setCash_paid(true); + MainManager.getInstance().getRestService().saveTransaction(currentUser.getUserid(), t).enqueue(new Callback<Void>() { + @Override + public void onResponse(Response<Void> response, Retrofit retrofit) { + } + + @Override + public void onFailure(Throwable t) { + Log.d("REST", t.getMessage()); + } + }); + MainManager.getInstance().getRestService().getSingleUser(currentUser.getUserid()).enqueue(new Callback<RestUser>() { + @Override + public void onResponse(Response<RestUser> response, Retrofit retrofit) { + DataManager.getInstance().getCurrentUser().setCredit(response.body().getCredit()); + MainManager.getInstance().uiManager.refreshCreditTextView(DataManager.getInstance().getCurrentUser().getCredit()); + } + + @Override + public void onFailure(Throwable t) { + Log.d("REST", t.getMessage()); + } + }); + + } public void performPayment() { User user = DataManager.getInstance().getCurrentUser(); @@ -194,7 +221,7 @@ public class MainManager { if (card_id != null) { new AlertDialog.Builder(this.mainActivity) - .setTitle(this.mainActivity.getResources().getString(R.string.confirm_payment_title)) + .setTitle(this.mainActivity.getResources().getString(R.string.confirm_learn_card)) .setMessage("Die karten id "+card_id+" wird dem Nutzer "+this.getCurrentUser()+" hinzugefügt") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/UiManager.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/UiManager.java index 20d6c50..f3177cc 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/UiManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/manager/UiManager.java @@ -182,8 +182,9 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap switch (parent.getId()) { case R.id.lstProduct: Product p = this.lstProductAdapter.getItem(position); + Order order = new Order(p); this.lstOrderedAdapter.insert(new Order(p), this.lstOrderedAdapter.getCount()); - MainManager.getInstance().addOrder(p); + MainManager.getInstance().addOrder(order); break; case -1: MainManager.getInstance().setCurrentUser((User) this.atxvAdapter.getItem(position)); diff --git a/WarpDrinkApp/app/src/main/res/values/strings.xml b/WarpDrinkApp/app/src/main/res/values/strings.xml index 9634303..3eaa85d 100644 --- a/WarpDrinkApp/app/src/main/res/values/strings.xml +++ b/WarpDrinkApp/app/src/main/res/values/strings.xml @@ -18,6 +18,7 @@ <string name="btnLogout">Logout</string> <string name="please_charge">Bitte lade dein Konto auf!</string> <string name="confirm_payment_title">Bezahlung bestaetigen</string> + <string name="confirm_learn_card">Karte anlernen</string> <string name="confirm_payment">Willst du wirklich %1$,.2f Euro bezahlen?</string> <string name="credit">Guthaben: %1$,.2f Euro</string> <string name="total">Gesamt: %1$,.2f Euro</string> -- GitLab