add project adins

This commit is contained in:
Alfrid Sanjaya Leo Putra 2024-07-25 14:44:22 +07:00
commit f8f85d679d
5299 changed files with 625430 additions and 0 deletions

View file

@ -0,0 +1,169 @@
package com.adins.mss.svy;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import com.adins.mss.base.GlobalData;
import com.adins.mss.base.LoginActivity;
import com.adins.mss.base.NewMainActivity;
import com.adins.mss.base.dynamictheme.DynamicTheme;
import com.adins.mss.base.dynamictheme.ThemeLoader;
import com.adins.mss.base.login.DefaultLoginModel;
import com.adins.mss.constant.Global;
import com.adins.mss.dao.GeneralParameter;
import com.adins.mss.foundation.db.dataaccess.GeneralParameterDataAccess;
import com.adins.mss.foundation.security.storepreferences.ObscuredSharedPreferences;
import com.adins.mss.svy.login.MSDefaultLoginModel;
import com.adins.mss.svy.tool.CopyDb;
import com.google.firebase.analytics.FirebaseAnalytics;
import java.util.HashMap;
public class MSLoginActivity extends LoginActivity implements ThemeLoader.ColorSetLoaderCallback{
private FirebaseAnalytics screenName;
@Override
public void onCreate(Bundle savedInstanceState) {
//instantiate theme loader
themeLoader = new ThemeLoader(this);
defaultConfig = new HashMap<>();
defaultConfig.put("cipher_unsupported_device", Global.SQLITE_CIPHER_UNSUPPORTED);
this.fetchConfig();
PackageInfo pInfo = null;
String sqliteCipherException;
String deviceModel = Build.MODEL;
screenName = FirebaseAnalytics.getInstance(this);
try {
sqliteCipherException = GlobalData.getSharedGlobalData().getRemoteConfig().getString("cipher_unsupported_device");
pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
Global.APP_VERSION = pInfo.versionName;
Global.BUILD_VERSION = pInfo.versionCode;
Global.IS_DEV = BuildConfig.IS_DEV;
Global.FLAVORS = BuildConfig.IS_FLAVORS;
Global.IS_BYPASSROOT = BuildConfig.IS_BYPASSROOT;
Global.IS_DBENCRYPT = BuildConfig.IS_DBENCRYPT;
Global.IS_DBENCRYPT = (!sqliteCipherException.contains(deviceModel)) && BuildConfig.IS_DBENCRYPT;
} catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(Global.AUTOLOGIN_ENABLE){
NewMainActivity.setMainMenuClass(NewMSMainActivity.class);
ObscuredSharedPreferences sharedPref = ObscuredSharedPreferences.getPrefs(getApplicationContext(),
"GlobalData", Context.MODE_PRIVATE);
hasLogged = sharedPref.getBoolean("HAS_LOGGED", false);
if(hasLogged && GlobalData.getSharedGlobalData().getUser() != null){
super.onCreate(savedInstanceState);
NewMainActivity.InitializeGlobalDataIfError(getApplicationContext());
//check theme config.
String uuidUser = GlobalData.getSharedGlobalData().getUser() == null ? sharedPref.getString("UUID_USER", "") : GlobalData.getSharedGlobalData().getUser().getUuid_user();
GeneralParameter generalParameter = GeneralParameterDataAccess.getOne(this,
uuidUser,
Global.GS_THEME_CONFIG_SURVEY);
if(generalParameter != null){
String urlConfig = generalParameter.getGs_value();
themeLoader.loadThemeFromUrl(urlConfig,this);
}
else {//go to main activity
Intent intent = new Intent(getApplicationContext(), NewMSMainActivity.class);
startActivity(intent);
finish();
}
}
else {//load directly login page and load saved theme
super.onCreate(savedInstanceState);
logo.setImageResource(com.adins.mss.base.R.drawable.icon_check_id);
loadSavedTheme();
}
}
else {//load directly login page and load saved theme
super.onCreate(savedInstanceState);
logo.setImageResource(com.adins.mss.base.R.drawable.icon_check_id);
loadSavedTheme();
}
// if (LeakCanary.isInAnalyzerProcess(this)) {
// return;
// }
// LeakCanary.install(getApplication());
}
private void copyDatabase() {
new AsyncTask<Void, Void, Void>() {
// private ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
// progressDialog = ProgressDialog.show(MSLoginActivity.this, "",getString(R.string.progressWait), true);
}
@Override
protected Void doInBackground(Void... params) {
CopyDb copyDB = new CopyDb(getApplicationContext());
copyDB.copyTable();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
/* if (progressDialog.isShowing()){
try {
progressDialog.dismiss();
} catch (Exception e) { FireCrash.log(e);
}
}*/
}
}.execute();
}
@Override
protected DefaultLoginModel getNewDefaultLoginModel(Context context) {
// TODO Auto-generated method stub
return new MSDefaultLoginModel(this);
}
private void loadSavedTheme(){
if(themeLoader != null){
themeLoader.loadSavedColorSet(this);
}
}
@Override
public void onHasLoaded(DynamicTheme dynamicTheme) {//callback load from local db
if(dynamicTheme != null && dynamicTheme.getThemeItemList().size() > 0){
applyColorTheme(dynamicTheme);
}
}
@Override
public void onHasLoaded(DynamicTheme dynamicTheme, boolean needUpdate) {//callback load from server
Intent intent = new Intent(getApplicationContext(), NewMSMainActivity.class);
startActivity(intent);
finish();
}
@Override
public void onResume() {
super.onResume();
//Set Firebase screen name
screenName.setCurrentScreen(this,getString(R.string.screen_name_svy_login),null);
defaultConfig = new HashMap<>();
defaultConfig.put("cipher_unsupported_device", Global.SQLITE_CIPHER_UNSUPPORTED);
this.fetchConfig();
}
}

View file

@ -0,0 +1,78 @@
<?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/menuItem"
android:title="Main Menu"
android:icon="@drawable/more"
app:showAsAction="ifRoom">
<menu >
<item android:id="@+id/about"
android:title="@string/aboutTitle"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_about"
android:visible="false"
/>
<item
android:id="@+id/serverLink"
android:title="@string/lblServerLinkId"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_serverlink"
android:visible="false"
/>
<item
android:id="@+id/devOption"
android:title="@string/lblDevOption"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_settings_48px"
android:visible="false"
/>
<item
android:id="@+id/checkIn"
android:title="@string/checkIn"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_checkin"
android:visible="false"
/>
<item
android:id="@+id/refresh"
android:title="@string/refresh"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_refresh"
android:visible="false"
/>
<item
android:id="@+id/save"
android:title="@string/mnSave"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_save"
android:visible="false"
/>
<item
android:id="@+id/pending"
android:title="@string/mnPending"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_pending"
android:visible="false"
/>
<item
android:id="@+id/send"
android:title="@string/mnSend"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_send"
android:visible="false"
/>
<item
android:id="@+id/copyImage"
android:title="@string/mnCpImage"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_copyimage"
android:visible="false"
/>
</menu>
</item>
</menu>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#CABBBBBB"/>
<corners android:radius="10dp" />
</shape>
</item>
<item
android:left="3dp"
android:right="3dp"
android:top="3dp"
android:bottom="3dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/white"/>
<corners android:radius="5dp" />
</shape>
</item>
</layer-list>

View file

@ -0,0 +1,133 @@
package com.adins.mss.coll.loyalti.pointacquisitionmonthly;
import android.app.Application;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import com.adins.mss.base.GlobalData;
import com.adins.mss.base.util.GsonHelper;
import com.adins.mss.base.util.Utility;
import com.adins.mss.coll.loyalti.pointacquisitionmonthly.contracts.ILoyaltyPointsDataSource;
import com.adins.mss.coll.models.loyaltymodels.LoyaltyPointsResponse;
import com.adins.mss.coll.models.loyaltymodels.LoyaltyPointsRequest;
import com.adins.mss.constant.Global;
import com.adins.mss.dao.GeneralParameter;
import com.adins.mss.dao.GeneralParameterDao;
import com.adins.mss.foundation.db.DaoOpenHelper;
import com.adins.mss.foundation.http.HttpConnectionResult;
import com.adins.mss.foundation.http.HttpCryptedConnection;
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.HttpMetric;
import java.util.List;
import de.greenrobot.dao.query.QueryBuilder;
public class LoyaltyPointsDataSource implements ILoyaltyPointsDataSource {
private Context context;//use app context
private Handler handler;
public LoyaltyPointsDataSource(Application application) {
this.context = application;
handler = new Handler(Looper.getMainLooper());
}
@Override
public void requestPointsData(LoyaltyPointsRequest reqData, ReqPointsListener listener) {
if(listener == null)
return;
RequestPointsTask requestPointsTask = new RequestPointsTask(reqData,listener);
Thread thread = new Thread(requestPointsTask);
thread.start();
}
@Override
public List<GeneralParameter> getJobsGenParam(List<String> jobs) {
String uuidUser = GlobalData.getSharedGlobalData().getUser().getUuid_user();
GeneralParameterDao dao = DaoOpenHelper.getDaoSession(context).getGeneralParameterDao();
QueryBuilder qb = dao.queryBuilder();
qb.where(GeneralParameterDao.Properties.Uuid_user.eq(uuidUser)
,GeneralParameterDao.Properties.Gs_value.in(jobs));
qb.build();
return qb.list();
}
private class RequestPointsTask implements Runnable {
private LoyaltyPointsRequest request;
private ReqPointsListener listener;
public RequestPointsTask(LoyaltyPointsRequest request, ReqPointsListener listener) {
this.request = request;
this.listener = listener;
}
@Override
public void run() {
//request to ws here. wait for ws
String jsonReq = GsonHelper.toJson(request);
String url = GlobalData.getSharedGlobalData().getURL_LOYALTY_DETAIL_POINT();
boolean encrypt = GlobalData.getSharedGlobalData().isEncrypt();
boolean decrypt = GlobalData.getSharedGlobalData().isDecrypt();
HttpCryptedConnection httpConn = new HttpCryptedConnection(context, encrypt, decrypt);
HttpConnectionResult serverResult = null;
//Firebase Performance Trace HTTP Request
HttpMetric networkMetric =
FirebasePerformance.getInstance().newHttpMetric(url, FirebasePerformance.HttpMethod.POST);
Utility.metricStart(networkMetric, jsonReq);
try {
serverResult = httpConn.requestToServer(url, jsonReq, Global.DEFAULTCONNECTIONTIMEOUT);
Utility.metricStop(networkMetric, serverResult);
} catch (final Exception e) {
e.printStackTrace();
handler.post(
new Runnable() {
@Override
public void run() {
listener.onFailed(e.getMessage());
}
}
);
return;
}
if(serverResult.getStatusCode() != 200){
final String result = serverResult.getResult();
handler.post(
new Runnable() {
@Override
public void run() {
listener.onFailed(result);
}
}
);
return;
}
final LoyaltyPointsResponse response = GsonHelper.fromJson(serverResult.getResult(), LoyaltyPointsResponse.class);
if (response.getStatus().getCode() != 0) {
handler.post(new Runnable() {
@Override
public void run() {
listener.onFailed(response.getStatus().getMessage());
}
});
return;
}
handler.post(new Runnable() {
@Override
public void run() {
listener.onSuccess(response);
}
});
}
}
}

View file

@ -0,0 +1,14 @@
package com.adins.mss.base.loyalti.model;
import com.adins.mss.foundation.http.MssRequestType;
import com.google.gson.annotations.SerializedName;
public class LoyaltyPointsRequest extends MssRequestType {
@SerializedName("MEMBERSHIP_PROGRAM_CODE")
public String membershipProgramId;
@SerializedName("LOGIN_ID")
public String loginId;
@SerializedName("POINT_GROUP")
public String pointGroup;
}

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="30dp"
android:height="30dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/fontColor"
android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
</vector>