Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • infrastruktur/warppay-app
  • HoelShare/warppay-app
2 results
Show changes
Commits on Source (2)
Showing
with 377 additions and 400 deletions
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="WarpDrink" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<module external.linked.project.id="WarpPay" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
......
......@@ -24,7 +24,10 @@ android {
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
}
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
}
dependencies {
......@@ -37,6 +40,7 @@ dependencies {
compile group: 'com.squareup.retrofit' , name: 'retrofit' , version: '2.0.0-beta2'
compile group: 'com.squareup.retrofit' , name: 'converter-gson' , version: '2.0.0-beta2'
compile group: 'com.google.code.gson' , name: 'gson' , version: '2.7'
compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'
compile group: 'com.squareup.okio' , name: 'okio' , version: '1.9.0'
compile group: 'com.squareup.okhttp', name: 'okhttp', version: '2.7.5'
compile group: 'org.antlr', name: 'antlr4-runtime', version: '4.5.3'
......
File deleted
......@@ -19,8 +19,8 @@
android:theme="@style/AppTheme">
<meta-data android:name="AA_DB_NAME" android:value="warppay_2.db" />
<meta-data android:name="AA_DB_VERSION" android:value="11" />
<meta-data android:name="AA_DB_NAME" android:value="warppay_new.db" />
<meta-data android:name="AA_DB_VERSION" android:value="15" />
<activity
android:name="ms.warpzone.warppay.MainActivity"
......
......@@ -29,6 +29,7 @@ import ms.warpzone.warppay.data.models.local.User;
import ms.warpzone.warppay.dialogs.BarcodeLearnDialog;
import ms.warpzone.warppay.manager.DataManager;
import ms.warpzone.warppay.manager.MainManager;
import ms.warpzone.warppay.manager.RefreshManager;
import ms.warpzone.warppay.manager.UiManager;
import ms.warpzone.warppay.orderList.Order;
......@@ -102,13 +103,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
@Override
public void onUserInteraction(){
if(MainManager.getInstance().getCurrentUser() != null) {
MainManager.getInstance().startTimer();
RefreshManager.getInstance().startTimer();
//MainManager.getInstance().stopScreenSaverTimer();
} else {
MainManager.getInstance().stopTimer();
RefreshManager.getInstance().stopTimer();
//MainManager.getInstance().resetScreenSaverTimer();
}
}
public static String byteArrayToHex(byte[] a) {
......@@ -126,7 +126,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.action_learn_card_id:
MainManager.getInstance().stopTimer();
RefreshManager.getInstance().stopTimer();
if (this.manager.getCurrentUser() != null){
new AlertDialog.Builder(this)
.setTitle(this.getResources().getString(R.string.confirm_learn_card))
......@@ -143,7 +143,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
}
break;
case R.id.action_learn_barcode:
MainManager.getInstance().stopTimer();
RefreshManager.getInstance().stopTimer();
this.barcodeLearnDialog = new BarcodeLearnDialog();
MainManager.getInstance().setBarcodeLearning(true);
this.barcodeLearnDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
......
......@@ -2,6 +2,8 @@ package ms.warpzone.warppay.data;
import android.util.Log;
import com.activeandroid.query.Select;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
......
......@@ -8,6 +8,7 @@ import com.activeandroid.annotation.Table;
import com.activeandroid.query.Delete;
import com.activeandroid.query.Select;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
......@@ -30,7 +31,7 @@ public class Product extends Model {
private float position;
@Column(name = "price")
private float price;
private BigDecimal price;
@Column(name = "count")
private int count;
......@@ -39,7 +40,7 @@ public class Product extends Model {
super();
}
public Product(int pid, String name, String category, float price, int count, float position) {
public Product(int pid, String name, String category, BigDecimal price, int count, float position) {
super();
this.pid = pid;
this.name = name;
......@@ -49,7 +50,7 @@ public class Product extends Model {
this.position = position;
}
public static ArrayList<Product> getAllWithoutBarcode() {
public static List<Product> getAllWithoutBarcode() {
return new Select()
.from(Product.class)
.where("barcode = ''")
......@@ -81,11 +82,11 @@ public class Product extends Model {
this.category = category;
}
public float getPrice() {
public BigDecimal getPrice() {
return price;
}
public void setPrice(float price) {
public void setPrice(BigDecimal price) {
this.price = price;
}
......
......@@ -6,6 +6,7 @@ import com.activeandroid.annotation.Table;
import com.activeandroid.query.Delete;
import com.activeandroid.query.Select;
import java.math.BigDecimal;
import java.util.List;
@Table(name = "Users")
......@@ -21,14 +22,14 @@ public class User extends Model {
private String card_id;
@Column(name = "credit")
private double credit;
private BigDecimal credit;
public User() {
super();
}
public User(String uid, String pinCode, double credit, String card_id) {
public User(String uid, String pinCode, BigDecimal credit, String card_id) {
super();
this.uid = uid;
this.credit = credit;
......@@ -52,11 +53,11 @@ public class User extends Model {
this.card_id = card_id;
}
public double getCredit() {
public BigDecimal getCredit() {
return credit;
}
public void setCredit(double credit) {
public void setCredit(BigDecimal credit) {
this.credit = credit;
}
......
package ms.warpzone.warppay.data.models.rest;
import java.math.BigDecimal;
import ms.warpzone.warppay.data.models.local.Product;
public class RestProduct {
......@@ -9,7 +11,7 @@ public class RestProduct {
private String name;
private String category;
private String barcode;
private Float price_vk;
private BigDecimal price_vk;
private int stock_count;
private float position;
......@@ -17,7 +19,7 @@ public class RestProduct {
super();
}
public RestProduct(int id, String name, String category,String barcode, Float price_vk, int stock_count, float position) {
public RestProduct(int id, String name, String category,String barcode, BigDecimal price_vk, int stock_count, float position) {
this.id = id;
this.name = name;
this.category = category;
......@@ -51,11 +53,11 @@ public class RestProduct {
this.category = category;
}
public Float getPrice() {
public BigDecimal getPrice() {
return price_vk;
}
public void setPrice(Float price) {
public void setPrice(BigDecimal price) {
this.price_vk = price_vk;
}
......
package ms.warpzone.warppay.data.models.rest;
import java.math.BigDecimal;
public class RestTransaction {
private int tid;
private int trans_type;
private RestProduct product;
private double amount;
private BigDecimal amount;
private boolean cash_paid;
public RestTransaction() {
super();
}
public RestTransaction(int tid, int trans_type, RestProduct product, double amount, boolean cash_paid) {
public RestTransaction(int tid, int trans_type, RestProduct product, BigDecimal amount, boolean cash_paid) {
this.tid = tid;
this.trans_type = trans_type;
this.product = product;
......@@ -40,11 +42,11 @@ public class RestTransaction {
this.product = product;
}
public double getAmount() {
public BigDecimal getAmount() {
return amount;
}
public void setAmount(double amount) {
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
......
package ms.warpzone.warppay.data.models.rest;
import java.math.BigDecimal;
import ms.warpzone.warppay.data.models.local.User;
public class RestUser {
private String uid;
private double credit;
private BigDecimal credit;
private String card_id;
private String pinCode;
......@@ -14,7 +16,7 @@ public class RestUser {
super();
}
public RestUser(String uid, double credit, String card_id, String pinCode) {
public RestUser(String uid, BigDecimal credit, String card_id, String pinCode) {
super();
this.uid = uid;
this.credit = credit;
......@@ -38,11 +40,11 @@ public class RestUser {
this.card_id = card_id;
}
public double getCredit() {
public BigDecimal getCredit() {
return credit;
}
public void setCredit(double credit) {
public void setCredit(BigDecimal credit) {
this.credit = credit;
}
......
......@@ -27,6 +27,7 @@ import ms.warpzone.warppay.data.models.rest.RestProduct;
import ms.warpzone.warppay.data.models.rest.RestUser;
import ms.warpzone.warppay.manager.DataManager;
import ms.warpzone.warppay.manager.MainManager;
import ms.warpzone.warppay.manager.RestManager;
import ms.warpzone.warppay.manager.UiManager;
import ms.warpzone.warppay.orderList.ListViewAdapter;
import ms.warpzone.warppay.orderList.Order;
......@@ -95,7 +96,7 @@ public class BarcodeLearnDialog extends Dialog implements View.OnClickListener,
this.act_product.setBarcode(this.barcode);
this.act_product.save();
RestProduct p = RestProduct.fromLocalProduct(this.act_product);
MainManager.getInstance().getRestService().saveBarcode(p.getId(),p).enqueue(new Callback<Void>() {
RestManager.getInstance().getRestService().saveBarcode(p.getId(),p).enqueue(new Callback<Void>() {
@Override
public void onResponse(Response<Void> response, Retrofit retrofit) {
......
......@@ -10,6 +10,8 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.NumberPicker;
import java.math.BigDecimal;
import ms.warpzone.warppay.MainActivity;
import ms.warpzone.warppay.R;
import ms.warpzone.warppay.manager.MainManager;
......@@ -63,8 +65,8 @@ public class ChargeCustomDialog extends Dialog implements
try {
String text = this.etxtAmount.getText().toString();
text = text.replace(",",".");
double amount = Double.valueOf(text);
if(amount > 0.0)
BigDecimal amount = BigDecimal.valueOf(Double.valueOf(text));
if(amount.compareTo(new BigDecimal(0.0)) > 0)
MainManager.getInstance().chargeAmount(amount);
} catch (Exception e) {
......
......@@ -6,6 +6,8 @@ import android.view.View;
import android.view.Window;
import android.widget.Button;
import java.math.BigDecimal;
import ms.warpzone.warppay.MainActivity;
import ms.warpzone.warppay.R;
import ms.warpzone.warppay.manager.MainManager;
......@@ -43,16 +45,16 @@ public class ChargeDialog extends Dialog implements
@Override
public void onClick(View v) {
double amount = 0.0;
BigDecimal amount = new BigDecimal(0.0);
switch (v.getId()) {
case R.id.btnFiveEuro:
amount = 5.0;
amount = new BigDecimal(5.0);
break;
case R.id.btnTenEuro:
amount = 10.0;
amount = new BigDecimal(10.0);
break;
case R.id.btnTwentyEuro:
amount = 20.0;
amount = new BigDecimal(20.0);
break;
case R.id.btnOther:
ChargeCustomDialog cd = new ChargeCustomDialog(this,this.c);
......@@ -62,7 +64,7 @@ public class ChargeDialog extends Dialog implements
default:
break;
}
if(amount > 0.0)
if(amount.compareTo(new BigDecimal(0.0)) > 0)
MainManager.getInstance().chargeAmount(amount);
dismiss();
}
......
......@@ -44,8 +44,8 @@ public class NyanCatDialog extends Dialog implements View.OnClickListener{
setContentView(R.layout.nyan_cat_dialog);
this.vvNyanCat = (VideoView) findViewById(R.id.vvNyanCat);
String uri = "android.resource://" + MainManager.getInstance().getMainActivity().getPackageName() + "/" + R.raw.nyancat;
this.vvNyanCat.setVideoURI(Uri.parse(uri));
// String uri = "android.resource://" + MainManager.getInstance().getMainActivity().getPackageName() + "/" + R.raw.nyancat;
//this.vvNyanCat.setVideoURI(Uri.parse(uri));
this.vvNyanCat.setOnClickListener(this);
this.vvNyanCat.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
......
......@@ -69,8 +69,6 @@ public class PinCodesDialog extends Dialog implements View.OnClickListener, View
default:
break;
}
dismiss();
}
@Override
......
......@@ -2,6 +2,7 @@ package ms.warpzone.warppay.dialogs;
import android.app.Dialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
......@@ -13,6 +14,7 @@ import ms.warpzone.warppay.MainActivity;
import ms.warpzone.warppay.R;
import ms.warpzone.warppay.data.models.local.Product;
import ms.warpzone.warppay.manager.MainManager;
import ms.warpzone.warppay.manager.RefreshManager;
import ms.warpzone.warppay.manager.UiManager;
import ms.warpzone.warppay.orderList.Order;
......@@ -45,6 +47,7 @@ public class ProductDialog extends Dialog implements View.OnClickListener {
prodButton.setWidth(200);
prodButton.setGravity(0);
String placeholder = "\n\n\n\n\n\n";
placeholder = placeholder.substring(Integer.valueOf(p.getName().length() / 16));
prodButton.setText(p.getName()+placeholder+String.valueOf(p.getPrice())+" Euro");
prodButton.setTag(p.getName());
......@@ -65,10 +68,11 @@ public class ProductDialog extends Dialog implements View.OnClickListener {
@Override
public void onClick(View view) {
MainManager.getInstance().startTimer();
RefreshManager.getInstance().startTimer();
Button clicked = (Button) view;
String product_name = (String) clicked.getTag();
Product product = Product.getOneByName(product_name);
Order order = new Order(product);
UiManager.getInstance().addOrder(order);
MainManager.getInstance().addOrder(order);
......
......@@ -3,6 +3,7 @@ package ms.warpzone.warppay.manager;
import android.util.Log;
import android.widget.Toast;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
......@@ -21,7 +22,12 @@ public class DataManager {
private User currentUser;
private Boolean is_guest=false;
private double totalAmount;
private BigDecimal totalAmount = new BigDecimal(0.0);
public ArrayList<Order> getOrderList() {
return orderList;
}
private ArrayList<Order> orderList;
private String lastCardId;
......@@ -35,7 +41,7 @@ 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>() {
RestManager.getInstance().getRestService().saveUser(rest_user.getUserid(), rest_user).enqueue(new Callback<RestUser>() {
@Override
public void onResponse(Response<RestUser> response, Retrofit retrofit) {
if(response.code() == 403) {
......@@ -60,41 +66,11 @@ public class DataManager {
this.is_guest = is_guest;
}
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)
transaction.setCash_paid(true);
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());
}
});
if(!this.is_guest && !cash) {
this.currentUser.setCredit(this.currentUser.getCredit() - this.totalAmount);
this.currentUser.save();
}
this.totalAmount = 0.0;
}
public void clearCurrentUser() {
this.currentUser = null;
this.totalAmount = 0.0;
this.totalAmount = new BigDecimal(0.0);
this.is_guest=false;
this.orderList = new ArrayList<Order>();
this.orderList = new ArrayList<>();
}
public User getCurrentUser() {
......@@ -105,17 +81,17 @@ public class DataManager {
this.currentUser = currentUser;
}
public double getTotalAmount() {
public BigDecimal getTotalAmount() {
return totalAmount;
}
public void addOrder(Order order) {
this.orderList.add(order);
this.totalAmount += order.getProduct().getPrice();
this.totalAmount = this.totalAmount.add(order.getProduct().getPrice());
}
public void removeOrder(Order order) {
this.orderList.remove(order);
this.totalAmount -= order.getProduct().getPrice();
this.totalAmount = this.totalAmount.subtract(order.getProduct().getPrice());
}
public void setLastCardId(String lastCardId) {
this.lastCardId = lastCardId;
......
......@@ -2,64 +2,40 @@ package ms.warpzone.warppay.manager;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.util.Log;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.activeandroid.query.Select;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.util.StringTokenizer;
import ms.warpzone.warppay.MainActivity;
import ms.warpzone.warppay.R;
import ms.warpzone.warppay.data.SQLiteService;
import ms.warpzone.warppay.data.models.local.Category;
import ms.warpzone.warppay.data.models.local.Product;
import ms.warpzone.warppay.data.models.local.User;
import ms.warpzone.warppay.data.RestService;
import ms.warpzone.warppay.data.models.rest.RestCategory;
import ms.warpzone.warppay.data.models.rest.RestProduct;
import ms.warpzone.warppay.data.models.rest.RestTransaction;
import ms.warpzone.warppay.data.models.rest.RestUser;
import ms.warpzone.warppay.dialogs.NotificationDialog;
import ms.warpzone.warppay.dialogs.NyanCatDialog;
import ms.warpzone.warppay.dialogs.PinCodesDialog;
import ms.warpzone.warppay.orderList.Order;
import retrofit.Callback;
import retrofit.GsonConverterFactory;
import retrofit.Response;
import retrofit.Retrofit;
public class MainManager {
private static MainManager instance = new MainManager();
private RestService restService;
private MainActivity mainActivity;
private SQLiteService sqLiteService;
private UiManager uiManager;
private DataManager dataManager;
private boolean barcodeLearning=false;
private Timer timer;
private Timer screenSaverTimer;
private ProgressDialog pdRefresh = null;
private NotificationDialog ndRefreshError = null;
private Timer tmrRefresh;
public static MainManager getInstance() {
return instance;
......@@ -68,174 +44,30 @@ public class MainManager {
private MainManager() {
}
private RestService createRestService() {
Retrofit.Builder builder = new Retrofit.Builder()
// .baseUrl("http://infra.warpzone:8000/api/")
.baseUrl("https://infra.warpzone/api/")
.addConverterFactory(GsonConverterFactory.create());
OkHttpClient okHttp = new OkHttpClient();
okHttp.setConnectTimeout(5, TimeUnit.SECONDS); // connect timeout
okHttp.setReadTimeout(5, TimeUnit.SECONDS); // socket timeout
try {
okHttp.setSslSocketFactory(getSSLConfig(this.getMainActivity().getBaseContext()).getSocketFactory());
okHttp.networkInterceptors().add(new Interceptor() {
@Override
public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request newRequest;
newRequest = request.newBuilder()
.addHeader("Authorization", "Token 29e87bab51b9634504b9aee58c1360668e4afd0a")
.build();
return chain.proceed(newRequest);
}
});
} catch (CertificateException | NoSuchAlgorithmException | KeyManagementException | IOException | KeyStoreException e) {
e.printStackTrace();
}
Retrofit retrofit = builder.client(okHttp).build();
return retrofit.create(RestService.class);
}
private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException,
KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw";
KeyStore keyStore = KeyStore.getInstance("BKS");
keyStore.load(context.getResources().openRawResource(R.raw.keystore), password.toCharArray());
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
return sslContext;
}
public void init(MainActivity mainActivity) {
this.mainActivity = mainActivity;
this.sqLiteService = SQLiteService.getInstance();
this.uiManager = UiManager.getInstance();
this.dataManager = DataManager.getInstance();
this.uiManager.initUi(this.mainActivity);
RestManager restManager = RestManager.getInstance();
restManager.initRestService();
this.restService = this.createRestService();
this.refreshData();
}
RefreshManager.getInstance().refreshData();
RefreshManager.getInstance().startRefreshTimer();
void refreshData() {
this.refreshData(false);
}
private void refreshData(boolean disableDialog) {
if(this.ndRefreshError != null)
this.ndRefreshError.dismiss();
this.ndRefreshError = null;
if(!disableDialog)
this.pdRefresh = ProgressDialog.show(this.mainActivity, "Refreshing...", "Loading...");
this.restService.getAllUser().enqueue(new Callback<List<RestUser>>() {
@Override
public void onResponse(Response<List<RestUser>> response, Retrofit retrofit) {
List<User> userList = MainManager.getInstance().sqLiteService.refreshUserData(response.body());
if (userList != null) {
MainManager.getInstance().uiManager.refreshUserData(userList);
}
}
@Override
public void onFailure(Throwable t) {
Log.d("REST", t.getMessage());
MainManager.getInstance().showRefreshError();
}
});
this.restService.getAllCategories().enqueue(new Callback<List<RestCategory>>() {
@Override
public void onResponse(Response<List<RestCategory>> response, Retrofit retrofit) {
List<Category> categoryList = MainManager.getInstance().sqLiteService.refreshCategoryData(response.body());
if (categoryList != null) {
MainManager.getInstance().uiManager.showCategoryButtons();
}
}
@Override
public void onFailure(Throwable t) {
Log.d("REST", t.getMessage());
MainManager.getInstance().showRefreshError();
}
});
this.restService.getAllProducts().enqueue(new Callback<List<RestProduct>>() {
@Override
public void onResponse(Response<List<RestProduct>> response, Retrofit retrofit) {
List<ms.warpzone.warppay.data.models.local.Product> productList = MainManager.getInstance().sqLiteService.refreshProductData(response.body());
if (productList != null) {
MainManager.getInstance().uiManager.refreshProductData(productList);
}
MainManager.this.pdRefresh.dismiss();
MainManager.this.startRefreshTimer();
}
@Override
public void onFailure(Throwable t) {
Log.d("REST", t.getMessage());
MainManager.getInstance().showRefreshError();
}
});
SQLiteService getSqLiteService() {
return sqLiteService;
}
private void showRefreshError() {
if(ndRefreshError == null) {
this.stopRefreshTimer();
if(pdRefresh != null)
pdRefresh.dismiss();
ndRefreshError = new NotificationDialog(this.mainActivity,"WARNING","Refresh failed. Please retry!");
ndRefreshError.setWarning();
ndRefreshError.getBuilder().setNeutralButton("Refresh", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
MainManager.this.refreshData();
}
});
ndRefreshError.show();
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
MainManager.this.refreshData();
}
};
ndRefreshError.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
handler.removeCallbacks(runnable);
}
});
handler.postDelayed(runnable, 10000);
}
}
void setCurrentUser(User user) {
this.setCurrentUser(user,false);
}
public void setCurrentUser(User user, boolean authorized) {
public void setCurrentUser(final User user, boolean authorized) {
if (user != null) {
if(!user.getPinCode().isEmpty() && !authorized) {
PinCodesDialog p = new PinCodesDialog(user);
......@@ -249,91 +81,43 @@ public class MainManager {
p.show();
return;
}
this.dataManager.setCurrentUser(user);
this.uiManager.setCurrentUser(user);
this.startTimer();
this.stopRefreshTimer();
}
}
public void stopTimer() {
if (this.timer != null) {
this.timer.cancel();
this.timer.purge();
}
}
public void startTimer() {
this.stopTimer();
this.timer = new Timer();
TimerTask t = new TimerTask() {
@Override
public void run() {
Handler mainHandler = new Handler(MainManager.getInstance().getMainActivity().getApplicationContext().getMainLooper());
Runnable myRunnable = new Runnable() {
if (user.getUserid() != "Guest") {
final ProgressDialog pd = ProgressDialog.show(MainManager.getInstance().getMainActivity(), "Processing...", "Loading...");
RestManager.getInstance().getRestService().getSingleUser(user.getUserid()).enqueue(new Callback<RestUser>() {
@Override
public void run() {
MainManager.getInstance().clearCurrentUser();
public void onResponse(Response<RestUser> response, Retrofit retrofit) {
if (response.code() == 200) {
user.setCredit(response.body().getCredit());
user.save();
DataManager.getInstance().setCurrentUser(user);
UiManager.getInstance().setCurrentUser(user);
pd.dismiss();
} else {
pd.dismiss();
Log.d("REST_3", String.valueOf(response.code()));
UiManager.getInstance().showWarning("Transaction Error. Please try again", 4000);
}
}
};
mainHandler.post(myRunnable);
}
};
this.timer.schedule(t, 60000);
}
private void startRefreshTimer() {
this.tmrRefresh = new Timer();
TimerTask t = new TimerTask() {
@Override
public void run() {
Handler mainHandler = new Handler(MainManager.getInstance().getMainActivity().getApplicationContext().getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
if(MainManager.getInstance().getCurrentUser() == null)
MainManager.getInstance().refreshData(true);
}
};
mainHandler.post(myRunnable);
}
};
public void onFailure(Throwable t) {
Log.d("REST_4", String.valueOf(t.getMessage()));
UiManager.getInstance().showWarning("Transaction Error. Please try again", 4000);
this.tmrRefresh.schedule(t, 60000,60000);
}
private void stopRefreshTimer() {
if (this.tmrRefresh != null) {
this.tmrRefresh.cancel();
this.tmrRefresh.purge();
}
}
public void resetScreenSaverTimer() {
this.stopScreenSaverTimer();
this.screenSaverTimer = new Timer();
TimerTask t = new TimerTask() {
@Override
public void run() {
Handler mainHandler = new Handler(MainManager.getInstance().getMainActivity().getApplicationContext().getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
new NyanCatDialog().show();
}
};
mainHandler.post(myRunnable);
});
} else {
DataManager.getInstance().setCurrentUser(user);
UiManager.getInstance().setCurrentUser(user);
}
};
this.screenSaverTimer.schedule(t, 4000);
}
private void stopScreenSaverTimer() {
if (this.screenSaverTimer != null) {
this.screenSaverTimer.cancel();
this.screenSaverTimer.purge();
RefreshManager.getInstance().startTimer();
RefreshManager.getInstance().stopRefreshTimer();
}
}
public User getCurrentUser() {
return this.dataManager.getCurrentUser();
}
......@@ -342,9 +126,6 @@ public class MainManager {
DataManager.getInstance().setLastCardId("");
this.dataManager.clearCurrentUser();
this.uiManager.clearCurrentUser();
this.stopTimer();
MainManager.getInstance().refreshData();
this.startRefreshTimer();
}
public void addOrder(Order order) {
......@@ -358,23 +139,20 @@ public class MainManager {
this.uiManager.refreshTotalTextView(DataManager.getInstance().getTotalAmount());
}
public void chargeAmount(double amount) {
public void chargeAmount(BigDecimal amount) {
User currentUser = this.dataManager.getCurrentUser();
if(amount < 0) {
NotificationDialog ndTransfer = new NotificationDialog(MainManager.getInstance().getMainActivity());
ndTransfer.setWarning();
ndTransfer.setMessage("Error Charging your account");
ndTransfer.show(4000);
if(amount.compareTo(new BigDecimal(0)) < 0 || amount.scale() > 2) {
UiManager.getInstance().showWarning("Fehlerhafter Betrag angegeben.",4000);
return;
}
if(currentUser.getCredit()+amount > 50) {
NotificationDialog ndTransfer = new NotificationDialog(MainManager.getInstance().getMainActivity());
ndTransfer.setWarning();
ndTransfer.setMessage("Maximal 50 Euro Guthaben erlaubt!");
ndTransfer.show(5000);
if(currentUser.getCredit().add(amount).compareTo(new BigDecimal(50.0)) > 0) {
UiManager.getInstance().showWarning("Maximal 50 Euro Guthaben erlaubt!",4000);
return;
}
RestTransaction t = new RestTransaction();
t.setAmount(amount);
t.setTrans_type(1);
......@@ -382,56 +160,31 @@ public class MainManager {
ArrayList<RestTransaction> 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) {
}
TransactionManager.getInstance().perform_transactions(transactions,true,false);
}
@Override
public void onFailure(Throwable t) {
NotificationDialog ndTransfer = new NotificationDialog(MainManager.getInstance().getMainActivity());
ndTransfer.setWarning();
ndTransfer.setMessage("Error Charging your account");
ndTransfer.show(4000);
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());
DataManager.getInstance().getCurrentUser().save();
}
public void performPayment(Boolean cash) {
User currentUser = DataManager.getInstance().getCurrentUser();
BigDecimal totalAmount = DataManager.getInstance().getTotalAmount();
@Override
public void onFailure(Throwable t) {
Log.d("REST", t.getMessage());
}
});
if (totalAmount.compareTo(new BigDecimal(0.0)) > 0 && currentUser != null){
if (currentUser.getCredit().compareTo(totalAmount) >= 0 || cash){
ArrayList<RestTransaction> transactions = new ArrayList<>();
}
public void performPayment(Boolean cash) {
User user = DataManager.getInstance().getCurrentUser();
double totalAmount = DataManager.getInstance().getTotalAmount();
if (totalAmount > 0.0 && user != null){
if (DataManager.getInstance().getCurrentUser().getCredit()>=totalAmount || cash){
DataManager.getInstance().performPayment(cash);
if(!cash) {
NotificationDialog n = new NotificationDialog(this.mainActivity);
n.setMessage("Neues Guthaben: " + this.getCurrentUser().getCredit() + " Euro");
n.show(2500);
for (Order order:DataManager.getInstance().getOrderList()) {
RestTransaction transaction = new RestTransaction();
transaction.setProduct(RestProduct.fromLocalProduct(order.getProduct()));
transaction.setTrans_type(2);
if (DataManager.getInstance().getIs_guest() || cash)
transaction.setCash_paid(true);
transactions.add(transaction);
}
MainManager.getInstance().clearCurrentUser();
TransactionManager.getInstance().perform_transactions(transactions, !cash, true);
} else {
NotificationDialog ndPlsCharge = new NotificationDialog(MainManager.getInstance().getMainActivity());
ndPlsCharge.setWarning();
ndPlsCharge.setMessage(mainActivity.getResources().getString(R.string.please_charge));
ndPlsCharge.show(2000);
UiManager.getInstance().showWarning(mainActivity.getResources().getString(R.string.please_charge), 2500);
}
}
}
......@@ -441,15 +194,13 @@ public class MainManager {
return mainActivity;
}
public RestService getRestService() { return restService; }
public void saveCardId() {
final String card_id = this.dataManager.getLastCardId();
if (card_id != null) {
new AlertDialog.Builder(this.mainActivity)
.setTitle(this.mainActivity.getResources().getString(R.string.confirm_learn_card))
.setMessage("Die karten id "+card_id+" wird dem Nutzer "+this.getCurrentUser()+" hinzugefügt")
.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) {
MainManager.getInstance().getCurrentUser().setCardId(card_id);
......@@ -466,10 +217,6 @@ public class MainManager {
}
}
public boolean isBarcodeLearning() {
return barcodeLearning;
}
public void setBarcodeLearning(boolean barcodeLearning) {
this.barcodeLearning = barcodeLearning;
}
......
package ms.warpzone.warppay.manager;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Handler;
import android.util.Log;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import ms.warpzone.warppay.data.models.local.Category;
import ms.warpzone.warppay.data.models.local.User;
import ms.warpzone.warppay.data.models.rest.RestCategory;
import ms.warpzone.warppay.data.models.rest.RestProduct;
import ms.warpzone.warppay.data.models.rest.RestUser;
import ms.warpzone.warppay.dialogs.NotificationDialog;
import ms.warpzone.warppay.dialogs.NyanCatDialog;
import retrofit.Callback;
import retrofit.Response;
import retrofit.Retrofit;
public class RefreshManager {
private static RefreshManager ourInstance = new RefreshManager();
private Timer timer;
private Timer screenSaverTimer;
private Timer tmrRefresh;
public ProgressDialog pdProcess;
private NotificationDialog ndRefreshError = null;
private RefreshManager() {}
public static RefreshManager getInstance() {
return ourInstance;
}
void refreshData() {
this.refreshData(false);
}
public void refreshData(boolean disableDialog) {
if(this.ndRefreshError != null)
this.ndRefreshError.dismiss();
this.ndRefreshError = null;
if(!disableDialog)
pdProcess = ProgressDialog.show(MainManager.getInstance().getMainActivity(), "Processing...", "Loading...");
RestManager.getInstance().getRestService().getAllUser().enqueue(new Callback<List<RestUser>>() {
@Override
public void onResponse(Response<List<RestUser>> response, Retrofit retrofit) {
if(response.code() == 200 ) {
List<User> userList = MainManager.getInstance().getSqLiteService().refreshUserData(response.body());
if (userList != null) {
UiManager.getInstance().refreshUserData(userList);
}
} else {
RefreshManager.getInstance().showRefreshError();
}
}
@Override
public void onFailure(Throwable t) {
Log.d("REST", t.getMessage());
RefreshManager.getInstance().showRefreshError();
}
});
RestManager.getInstance().getRestService().getAllCategories().enqueue(new Callback<List<RestCategory>>() {
@Override
public void onResponse(Response<List<RestCategory>> response, Retrofit retrofit) {
if(response.code() == 200 ) {
List<Category> categoryList = MainManager.getInstance().getSqLiteService().refreshCategoryData(response.body());
if (categoryList != null) {
UiManager.getInstance().showCategoryButtons();
}
} else {
RefreshManager.getInstance().showRefreshError();
}
}
@Override
public void onFailure(Throwable t) {
Log.d("REST", t.getMessage());
RefreshManager.getInstance().showRefreshError();
}
});
RestManager.getInstance().getRestService().getAllProducts().enqueue(new Callback<List<RestProduct>>() {
@Override
public void onResponse(Response<List<RestProduct>> response, Retrofit retrofit) {
if(response.code() == 200 ) {
List<ms.warpzone.warppay.data.models.local.Product> productList = MainManager.getInstance().getSqLiteService().refreshProductData(response.body());
if (productList != null) {
UiManager.getInstance().refreshProductData(productList);
}
if(RefreshManager.getInstance().pdProcess != null ) {
RefreshManager.getInstance().pdProcess.dismiss();
RefreshManager.getInstance().pdProcess = null;
}
} else {
RefreshManager.getInstance().showRefreshError();
}
}
@Override
public void onFailure(Throwable t) {
Log.d("REST", t.getMessage());
RefreshManager.getInstance().showRefreshError();
}
});
}
public void showRefreshError() {
if(ndRefreshError == null) {
RefreshManager.getInstance().stopRefreshTimer();
if (RefreshManager.getInstance().pdProcess != null) {
RefreshManager.getInstance().pdProcess.dismiss();
RefreshManager.getInstance().pdProcess = null;
}
ndRefreshError = new NotificationDialog(MainManager.getInstance().getMainActivity(),"WARNING","Refresh failed. Please retry!");
ndRefreshError.setWarning();
ndRefreshError.getBuilder().setNeutralButton("Refresh", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
RefreshManager.getInstance().refreshData();
}
});
ndRefreshError.show();
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
RefreshManager.getInstance().refreshData();
}
};
ndRefreshError.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
handler.removeCallbacks(runnable);
}
});
handler.postDelayed(runnable, 10000);
}
}
public void stopTimer() {
if (this.timer != null) {
this.timer.cancel();
this.timer.purge();
}
}
public void startTimer() {
this.stopTimer();
this.timer = new Timer();
TimerTask t = new TimerTask() {
@Override
public void run() {
Handler mainHandler = new Handler(MainManager.getInstance().getMainActivity().getApplicationContext().getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
MainManager.getInstance().clearCurrentUser();
}
};
mainHandler.post(myRunnable);
}
};
this.timer.schedule(t, 60000);
}
public void startRefreshTimer() {
this.tmrRefresh = new Timer();
TimerTask t = new TimerTask() {
@Override
public void run() {
Handler mainHandler = new Handler(MainManager.getInstance().getMainActivity().getApplicationContext().getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
Log.d("REST","REFRESH TIMER RUNNING");
if(MainManager.getInstance().getCurrentUser() == null)
RefreshManager.getInstance().refreshData(true);
}
};
mainHandler.post(myRunnable);
}
};
Log.d("REST","STARTING REFRESH TIMER");
this.tmrRefresh.schedule(t, 60000,60000);
}
public void stopRefreshTimer() {
if (this.tmrRefresh != null) {
this.tmrRefresh.cancel();
this.tmrRefresh.purge();
}
}
public void resetScreenSaverTimer() {
this.stopScreenSaverTimer();
this.screenSaverTimer = new Timer();
TimerTask t = new TimerTask() {
@Override
public void run() {
Handler mainHandler = new Handler(MainManager.getInstance().getMainActivity().getApplicationContext().getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
new NyanCatDialog().show();
}
};
mainHandler.post(myRunnable);
}
};
this.screenSaverTimer.schedule(t, 4000);
}
public void stopScreenSaverTimer() {
if (this.screenSaverTimer != null) {
this.screenSaverTimer.cancel();
this.screenSaverTimer.purge();
}
}
}