diff --git a/.idea/misc.xml b/.idea/misc.xml index b15ecee..b8dc4d6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -41,7 +41,7 @@ - + diff --git a/GSKMTOrange/src/main/AndroidManifest.xml b/GSKMTOrange/src/main/AndroidManifest.xml index a7bf16a..a3e8915 100644 --- a/GSKMTOrange/src/main/AndroidManifest.xml +++ b/GSKMTOrange/src/main/AndroidManifest.xml @@ -60,10 +60,13 @@ - + android:theme="@style/AppTheme.NoActionBar" /> - - - + android:theme="@style/AppTheme.NoActionBar" /> + \ No newline at end of file diff --git a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/Database/GSKOrangeDB.java b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/Database/GSKOrangeDB.java index 8131407..d644baf 100644 --- a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/Database/GSKOrangeDB.java +++ b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/Database/GSKOrangeDB.java @@ -1607,4 +1607,99 @@ public class GSKOrangeDB extends SQLiteOpenHelper { } } + //get specific store data + public StoreBean getSpecificStoreData(String date, String store_id) { + //ArrayList list = new ArrayList(); + StoreBean sb = new StoreBean(); + Cursor dbcursor = null; + + try { + + dbcursor = db.rawQuery("SELECT * from JOURNEY_PLAN " + + "where VISIT_DATE ='" + date + "' AND STORE_ID'="+ store_id +"'", null); + + if (dbcursor != null) { + dbcursor.moveToFirst(); + while (!dbcursor.isAfterLast()) { + + sb.setSTORE_ID(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("STORE_ID"))); + + sb.setEMP_ID((dbcursor.getString(dbcursor + .getColumnIndexOrThrow("EMP_ID")))); + + sb.setKEYACCOUNT(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("KEYACCOUNT"))); + + sb.setSTORE_NAME(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("STORE_NAME"))); + + sb.setADDRESS((dbcursor.getString(dbcursor + .getColumnIndexOrThrow("ADDRESS")))); + sb.setCITY(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("CITY"))); + + sb.setSTORETYPE(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("STORETYPE"))); + + sb.setCLASSIFICATION(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("CLASSIFICATION"))); + + sb.setKEYACCOUNT_ID(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("KEYACCOUNT_ID"))); + + sb.setSTORETYPE_ID(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("STORETYPE_ID"))); + + sb.setCLASS_ID(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("CLASS_ID"))); + + sb.setVISIT_DATE(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("VISIT_DATE"))); + + sb.setCAMERA_ALLOW(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("CAMERA_ALLOW"))); + + sb.setUPLOAD_STATUS(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("UPLOAD_STATUS"))); + sb.setCHECKOUT_STATUS(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("CHECKOUT_STATUS"))); + + sb.setGEO_TAG(dbcursor.getString(dbcursor + .getColumnIndexOrThrow("GEO_TAG"))); + + //dbcursor.moveToNext(); + } + dbcursor.close(); + return sb; + } + + } catch (Exception e) { + Log.d("Exception get JCP!", e.toString()); + return sb; + } + + return sb; + } + + //update coverage status + + public void updateCoverageStatus(String id, String status) { + + ContentValues values = new ContentValues(); + + try { + + values.put(CommonString.KEY_COVERAGE_STATUS, status); + + db.update(CommonString.TABLE_COVERAGE_DATA, values, CommonString.KEY_STORE_ID + "='" + id + "'", null); + + } catch (Exception e) { + + Log.d("Excep update checkout", e.toString()); + } + + } + + } diff --git a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/MainActivity.java b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/MainActivity.java index 93c6d49..93fd0b0 100644 --- a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/MainActivity.java +++ b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/MainActivity.java @@ -1,10 +1,13 @@ package cpm.com.gskmtorange; import android.app.AlertDialog; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.os.Bundle; import android.os.Environment; import android.preference.PreferenceManager; @@ -33,11 +36,13 @@ import java.util.ArrayList; import cpm.com.gskmtorange.Database.GSKOrangeDB; import cpm.com.gskmtorange.GeoTag.GeoTagStoreList; +import cpm.com.gskmtorange.GetterSetter.CoverageBean; import cpm.com.gskmtorange.GetterSetter.StoreBean; import cpm.com.gskmtorange.constant.CommonString; import cpm.com.gskmtorange.dailyentry.StoreListActivity; import cpm.com.gskmtorange.download.DownloadActivity; import cpm.com.gskmtorange.gsk_dailyentry.CategoryListActivity; +import cpm.com.gskmtorange.upload.UploadActivity; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @@ -50,6 +55,11 @@ public class MainActivity extends AppCompatActivity String user_name, user_type; ArrayList storelist = new ArrayList(); View headerView; + + ArrayList coverageList; + + String error_msg; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -69,6 +79,8 @@ public class MainActivity extends AppCompatActivity db = new GSKOrangeDB(MainActivity.this); db.open(); + coverageList = db.getCoverageData(date); + webView.setWebViewClient(new MyWebViewClient()); webView.getSettings().setJavaScriptEnabled(true); @@ -96,7 +108,7 @@ public class MainActivity extends AppCompatActivity NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); - headerView = LayoutInflater.from(this).inflate(R.layout.nav_header_main, navigationView, false); + headerView = LayoutInflater.from(this).inflate(R.layout.nav_header_main, navigationView, false); TextView tv_username = (TextView) headerView.findViewById(R.id.nav_user_name); //tv_usertype = (TextView) headerView.findViewById(R.id.nav_user_type); @@ -162,22 +174,73 @@ public class MainActivity extends AppCompatActivity } else if (id == R.id.nav_upload) { - } - else if (id == R.id.nav_geotag) { + db.open(); + + if (checkNetIsAvailable()) { + + storelist = db.getStoreData(date); + + if (storelist.size() == 0) { + + Snackbar.make(webView, R.string.title_store_list_download_data, Snackbar.LENGTH_SHORT) + .setAction("Action", null).show(); + + // Toast.makeText(getBaseContext(), "Please Download Data First", Toast.LENGTH_LONG).show(); + } else { + + if (coverageList.size() == 0) { + + Snackbar.make(webView, R.string.no_data_for_upload, Snackbar.LENGTH_SHORT) + .setAction("Action", null).show(); + + } else { + if (isStoreCheckedIn()&& isValid()) { + + Intent i = new Intent(getBaseContext(), + UploadActivity.class); + startActivity(i); + + finish(); + + } else { + + Snackbar.make(webView, error_msg, Snackbar.LENGTH_SHORT) + .setAction("Action", null).show(); + } + + } + + + + + /* + intent = new Intent(getBaseContext(), + UploadOptionActivity.class); + startActivity(intent); + + MainMenuActivity.this.finish();*/ + + } + + } else { + + Snackbar.make(webView, "No Network Available", Snackbar.LENGTH_SHORT) + .setAction("Action", null).show(); + + // Toast.makeText(getApplicationContext(), "No Network Available", Toast.LENGTH_SHORT).show(); + } + } else if (id == R.id.nav_geotag) { storelist = db.getStoreData(date); - if(storelist.size()>0) - { - Intent startDownload = new Intent(this,GeoTagStoreList.class); + if (storelist.size() > 0) { + Intent startDownload = new Intent(this, GeoTagStoreList.class); startActivity(startDownload); overridePendingTransition(R.anim.activity_in, R.anim.activity_out); - } - else - { + } else { Snackbar.make(headerView, R.string.title_store_list_download_data, Snackbar.LENGTH_LONG).setAction("Action", null).show(); } @@ -284,4 +347,56 @@ public class MainActivity extends AppCompatActivity } } + + public boolean checkNetIsAvailable() { + ConnectivityManager cm = + (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + + NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); + boolean isConnected = activeNetwork != null && + activeNetwork.isConnectedOrConnecting(); + return isConnected; + } + + public boolean isStoreCheckedIn() { + + boolean result_flag = true; + for (int i = 0; i < coverageList.size(); i++) { + + String status = coverageList.get(i).getStatus(); + if (status.equals(CommonString.KEY_INVALID) || status.equals(CommonString.KEY_VALID)) { + result_flag = false; + error_msg = getResources().getString(R.string.title_store_list_checkout_current); + break; + } + } + + return result_flag; + } + + public boolean isValid(){ + boolean flag = false; + String storestatus; + for (int i = 0; i < coverageList.size(); i++) { + + storestatus = db.getSpecificStoreData(date, coverageList.get(i).getStoreId()).getUPLOAD_STATUS(); + + if (!storestatus.equalsIgnoreCase(CommonString.KEY_U)) { + if ((storestatus.equalsIgnoreCase( + CommonString.KEY_C) + || storestatus.equalsIgnoreCase(CommonString.KEY_P) || + storestatus.equalsIgnoreCase(CommonString.STORE_STATUS_LEAVE))) { + flag = true; + break; + + } + } + } + + if(!flag) + error_msg = getResources().getString(R.string.no_data_for_upload); + + return flag; + } + } diff --git a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/constant/CommonString.java b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/constant/CommonString.java index 5e9ca43..004e56e 100644 --- a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/constant/CommonString.java +++ b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/constant/CommonString.java @@ -93,6 +93,15 @@ public class CommonString { public static final String SOAP_ACTION_DR_STORE_IMAGES_GEO = "http://tempuri.org/" + METHOD_Get_DR_STORE_IMAGES_GEO; + public static final String METHOD_UPLOAD_COVERAGE = "UPLOAD_COVERAGE"; + + public static final String METHOD_UPLOAD_COVERAGE_STATUS = "UploadCoverage_Status"; + + public static final String SOAP_ACTION = "http://tempuri.org/"; + + public static final String SOAP_ACTION_UPLOAD_STORE_COVERAGE = "http://tempuri.org/" + + METHOD_UPLOAD_COVERAGE; + //Alert Messages diff --git a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/dailyentry/StoreimageActivity.java b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/dailyentry/StoreimageActivity.java index 6ca4520..147164f 100644 --- a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/dailyentry/StoreimageActivity.java +++ b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/dailyentry/StoreimageActivity.java @@ -173,8 +173,6 @@ public class StoreimageActivity extends AppCompatActivity implements View.OnClic alert.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); - String status = "INVALID"; - CoverageBean cdata = new CoverageBean(); cdata.setStoreId(store_id); cdata.setVisitDate(visit_date); @@ -186,11 +184,11 @@ public class StoreimageActivity extends AppCompatActivity implements View.OnClic cdata.setLongitude(lon); cdata.setImage(img_str); cdata.setRemark(""); - cdata.setStatus(CommonString.KEY_CHECK_IN); + cdata.setStatus(CommonString.KEY_INVALID); database.InsertCoverageData(cdata); - database.updateCheckoutStatus(store_id, status); + database.updateCheckoutStatus(store_id, CommonString.KEY_INVALID); /* SharedPreferences.Editor editor = preferences.edit(); diff --git a/GSKMTOrange/src/main/java/cpm/com/gskmtorange/upload/UploadActivity.java b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/upload/UploadActivity.java new file mode 100644 index 0000000..2b2f78a --- /dev/null +++ b/GSKMTOrange/src/main/java/cpm/com/gskmtorange/upload/UploadActivity.java @@ -0,0 +1,288 @@ +package cpm.com.gskmtorange.upload; + +import android.app.Dialog; +import android.content.Context; +import android.content.SharedPreferences; +import android.os.AsyncTask; +import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.widget.ProgressBar; +import android.widget.TextView; + +import org.ksoap2.SoapEnvelope; +import org.ksoap2.serialization.SoapObject; +import org.ksoap2.serialization.SoapSerializationEnvelope; +import org.ksoap2.transport.HttpTransportSE; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.util.ArrayList; + +import cpm.com.gskmtorange.Database.GSKOrangeDB; +import cpm.com.gskmtorange.GetterSetter.CoverageBean; +import cpm.com.gskmtorange.GetterSetter.StoreBean; +import cpm.com.gskmtorange.R; +import cpm.com.gskmtorange.constant.CommonString; + +public class UploadActivity extends AppCompatActivity { + + private Dialog dialog; + private ProgressBar pb; + private TextView percentage, message; + GSKOrangeDB db; + ArrayList coverageList; + + private SharedPreferences preferences; + String date, userId, app_version; + + StoreBean storeData; + String datacheck = ""; + String[] words; + String validity; + int mid; + private int factor, k=0; + + Data data; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_upload); + + preferences = PreferenceManager.getDefaultSharedPreferences(this); + date = preferences.getString(CommonString.KEY_DATE, null); + userId = preferences.getString(CommonString.KEY_USERNAME, null); + app_version = preferences.getString(CommonString.KEY_VERSION, null); + + db = new GSKOrangeDB(getApplicationContext()); + + //start upload + new UploadTask(getApplicationContext()).execute(); + + } + + class Data { + int value; + String name; + } + + private class UploadTask extends AsyncTask { + + private Context context; + + UploadTask(Context context) { + this.context = context; + } + + @Override + protected void onPreExecute() { + super.onPreExecute(); + + dialog = new Dialog(context); + dialog.setContentView(R.layout.custom); + dialog.setTitle("Uploading Data"); + dialog.setCancelable(false); + dialog.show(); + pb = (ProgressBar) dialog.findViewById(R.id.progressBar1); + percentage = (TextView) dialog.findViewById(R.id.percentage); + message = (TextView) dialog.findViewById(R.id.message); + } + + @Override + protected void onProgressUpdate(Data... values) { + // TODO Auto-generated method stub + + pb.setProgress(values[0].value); + percentage.setText(values[0].value + "%"); + message.setText(values[0].name); + + } + + @Override + protected String doInBackground(Void... params) { + + try { + + data = new Data(); + + coverageList = db.getCoverageData(date); + + if (coverageList.size() > 0) { + + if (coverageList.size() == 1) { + factor = 50; + } else { + + factor = 100 / (coverageList.size()); + } + } + + for (int i = 0; i < coverageList.size(); i++) { + + storeData = db.getSpecificStoreData(date, coverageList.get(i).getStoreId()); + if (storeData.getSTORE_ID() != null) { + + if (storeData.getCHECKOUT_STATUS().equals(CommonString.KEY_C) || storeData.getCHECKOUT_STATUS().equals(CommonString.KEY_L) || + !storeData.getUPLOAD_STATUS().equals(CommonString.KEY_U)) { + + String camera_allow = storeData.getCAMERA_ALLOW(); + + String onXML = "[DATA][USER_DATA][STORE_CD]" + + coverageList.get(i).getStoreId() + + "[/STORE_CD]" + "[VISIT_DATE]" + + coverageList.get(i).getVisitDate() + + "[/VISIT_DATE][LATITUDE]" + + coverageList.get(i).getLatitude() + + "[/LATITUDE][APP_VERSION]" + + app_version + + "[/APP_VERSION][LONGITUDE]" + + coverageList.get(i).getLongitude() + + "[/LONGITUDE][IN_TIME]" + + coverageList.get(i).getInTime() + + "[/IN_TIME][OUT_TIME]" + + coverageList.get(i).getOutTime() + + "[/OUT_TIME][UPLOAD_STATUS]" + + "N" + + "[/UPLOAD_STATUS][USER_ID]" + userId + + "[/USER_ID][IMAGE_URL]" + coverageList.get(i).getImage() + + "[/IMAGE_URL][REASON_ID]" + + coverageList.get(i).getReasonid() + + "[/REASON_ID][REASON_REMARK]" + + coverageList.get(i).getRemark() + + "[/REASON_REMARK][CAMERA_ALLOWED]" + + camera_allow + + "[/CAMERA_ALLOWED][/USER_DATA][/DATA]"; + + + + SoapObject request = new SoapObject( + CommonString.NAMESPACE, + CommonString.METHOD_UPLOAD_COVERAGE); + request.addProperty("onXML", onXML); + + SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( + SoapEnvelope.VER11); + envelope.dotNet = true; + envelope.setOutputSoapObject(request); + + HttpTransportSE androidHttpTransport = new HttpTransportSE( + CommonString.URL); + + + androidHttpTransport + .call(CommonString.SOAP_ACTION_UPLOAD_STORE_COVERAGE, + envelope); + + Object result = (Object) envelope.getResponse(); + + + datacheck = result.toString(); + words = datacheck.split("\\;"); + validity = (words[0]); + + if (validity + .equalsIgnoreCase(CommonString.KEY_SUCCESS)) { + db.updateCoverageStatus(coverageList + .get(i).getStoreId(), CommonString.KEY_P); + + db.updateStoreStatusOnLeave( + coverageList.get(i).getStoreId(), + date, CommonString.KEY_P); + } else { + + return CommonString.METHOD_UPLOAD_COVERAGE; + + } + } + + mid = Integer.parseInt((words[1])); + + k = k + factor; + data.value = k; + data.name = "Uploading"; + + publishProgress(data); + + String final_xml = ""; + // Add below------------------ + + + // SET COVERAGE STATUS + + final_xml = ""; + String onXML = ""; + onXML = "[COVERAGE_STATUS][STORE_ID]" + + coverageList.get(i).getStoreId() + + "[/STORE_ID]" + + "[VISIT_DATE]" + + coverageList.get(i).getVisitDate() + + "[/VISIT_DATE]" + + "[USER_ID]" + + coverageList.get(i).getUserId() + + "[/USER_ID]" + + "[STATUS]" + + CommonString.KEY_U + + "[/STATUS]" + + "[/COVERAGE_STATUS]"; + + final_xml = final_xml + onXML; + + final String sos_xml = "[DATA]" + final_xml + + "[/DATA]"; + + SoapObject request = new SoapObject( + CommonString.NAMESPACE, + CommonString.METHOD_UPLOAD_COVERAGE_STATUS); + request.addProperty("onXML", sos_xml); + + SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( + SoapEnvelope.VER11); + envelope.dotNet = true; + envelope.setOutputSoapObject(request); + + HttpTransportSE androidHttpTransport = new HttpTransportSE( + CommonString.URL); + + androidHttpTransport.call( + CommonString.SOAP_ACTION+CommonString.METHOD_UPLOAD_COVERAGE_STATUS, + envelope); + Object result = (Object) envelope.getResponse(); + + if (!result.toString().equalsIgnoreCase( + CommonString.KEY_SUCCESS)) { + return CommonString.METHOD_UPLOAD_COVERAGE_STATUS; + } + + if (result.toString().equalsIgnoreCase( + CommonString.KEY_NO_DATA)) { + return CommonString.METHOD_UPLOAD_COVERAGE_STATUS; + } + + if (result.toString().equalsIgnoreCase( + CommonString.KEY_FAILURE)) { + return CommonString.METHOD_UPLOAD_COVERAGE_STATUS; + } + + db.open(); + + db.updateCoverageStatus(coverageList.get(i) + .getStoreId(), CommonString.KEY_U); + db.updateStoreStatusOnLeave(coverageList.get(i) + .getStoreId(), coverageList.get(i) + .getVisitDate(), CommonString.KEY_U); + + } + } + + } catch (IOException e) { + e.printStackTrace(); + } catch (XmlPullParserException e) { + e.printStackTrace(); + } + + + return null; + } + } +} diff --git a/GSKMTOrange/src/main/res/layout/activity_upload.xml b/GSKMTOrange/src/main/res/layout/activity_upload.xml new file mode 100644 index 0000000..0892760 --- /dev/null +++ b/GSKMTOrange/src/main/res/layout/activity_upload.xml @@ -0,0 +1,13 @@ + + + + diff --git a/GSKMTOrange/src/main/res/values-tr/string.xml b/GSKMTOrange/src/main/res/values-tr/string.xml index 89d61fd..11235dc 100644 --- a/GSKMTOrange/src/main/res/values-tr/string.xml +++ b/GSKMTOrange/src/main/res/values-tr/string.xml @@ -42,4 +42,9 @@ Kalıcı Teşhir + Evet + Hayır + + Veri Paylaş + \ No newline at end of file diff --git a/GSKMTOrange/src/main/res/values/strings.xml b/GSKMTOrange/src/main/res/values/strings.xml index a3cb639..3a39e6b 100644 --- a/GSKMTOrange/src/main/res/values/strings.xml +++ b/GSKMTOrange/src/main/res/values/strings.xml @@ -101,5 +101,11 @@ Enter the values + Yes + No + + Upload Data + No Data For Upload + First checkout of store