From 9857e040158d527765660073ca535a5a3a78b2cc Mon Sep 17 00:00:00 2001
From: unknown <leo112071@gmail.com>
Date: Wed, 21 Feb 2018 23:28:56 +0700
Subject: [PATCH] Integrate jogging with database

---
 .../leo/fitnessdiy/HIstoryActivity.java       |  1 +
 .../leo/fitnessdiy/JoggingActivity.java       | 81 +++++++++++++++++--
 .../example/leo/fitnessdiy/model/Jogging.java | 48 ++++++++---
 .../example/leo/fitnessdiy/routes/api.java    |  8 ++
 app/src/main/res/layout/activity_jogging.xml  | 22 ++++-
 5 files changed, 139 insertions(+), 21 deletions(-)

diff --git a/app/src/main/java/com/example/leo/fitnessdiy/HIstoryActivity.java b/app/src/main/java/com/example/leo/fitnessdiy/HIstoryActivity.java
index b778c48..4c314cf 100644
--- a/app/src/main/java/com/example/leo/fitnessdiy/HIstoryActivity.java
+++ b/app/src/main/java/com/example/leo/fitnessdiy/HIstoryActivity.java
@@ -13,6 +13,7 @@ import android.widget.TextView;
 import com.example.leo.fitnessdiy.Adapter.RecyclerViewAdapter;
 import com.example.leo.fitnessdiy.Utilities.NetworkUtils;
 import com.example.leo.fitnessdiy.model.History;
+import com.example.leo.fitnessdiy.model.Jogging;
 import com.example.leo.fitnessdiy.routes.api;
 
 
diff --git a/app/src/main/java/com/example/leo/fitnessdiy/JoggingActivity.java b/app/src/main/java/com/example/leo/fitnessdiy/JoggingActivity.java
index 6bf4f5c..0350792 100644
--- a/app/src/main/java/com/example/leo/fitnessdiy/JoggingActivity.java
+++ b/app/src/main/java/com/example/leo/fitnessdiy/JoggingActivity.java
@@ -10,7 +10,9 @@ import android.location.Address;
 import android.location.Geocoder;
 import android.location.Location;
 import android.location.LocationManager;
+import android.os.AsyncTask;
 import android.os.Build;
+import android.os.StrictMode;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.ActivityCompat;
@@ -26,6 +28,9 @@ import android.widget.FrameLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.example.leo.fitnessdiy.Utilities.NetworkUtils;
+import com.example.leo.fitnessdiy.model.Jogging;
+import com.example.leo.fitnessdiy.routes.api;
 import com.google.android.gms.common.ConnectionResult;
 import com.google.android.gms.common.api.GoogleApiClient;
 import com.google.android.gms.location.FusedLocationProviderClient;
@@ -54,7 +59,11 @@ import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.text.SimpleDateFormat;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.List;
 import java.util.Locale;
 
@@ -94,13 +103,18 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb
     private String[] mLikelyPlaceAddresses;
     private String[] mLikelyPlaceAttributions;
     private LatLng[] mLikelyPlaceLatLngs;
-    private TextView infoJogging;
+    private TextView infoJoggingStart;
+    private TextView infoJoggingEnd;
     private Button mButton;
+    private String startTime;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-
+        if (android.os.Build.VERSION.SDK_INT > 9) {
+            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
+            StrictMode.setThreadPolicy(policy);
+        }
         // save instance state
         if (savedInstanceState != null) {
             mLastKnownLocation = savedInstanceState.getParcelable(KEY_LOCATION);
@@ -120,7 +134,9 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb
                 .findFragmentById(R.id.map);
         mapFragment.getMapAsync(this);
 
-        infoJogging = (TextView) findViewById(R.id.tv_info);
+        infoJoggingStart = (TextView) findViewById(R.id.tv_info_start);
+
+        infoJoggingEnd = (TextView) findViewById(R.id.tv_info_end);
 
         mButton = (Button) findViewById(R.id.control_button);
     }
@@ -197,8 +213,8 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb
                             mLastKnownLocation = task.getResult();
                             LatLng position = new LatLng(mLastKnownLocation.getLatitude(),
                                     mLastKnownLocation.getLongitude());
-                            mMap.addMarker(
-                                    new MarkerOptions().position(position).title("Your Position"));
+//                            mMap.addMarker(
+//                                    new MarkerOptions().position(position).title("Your Position"));
                             mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position,
                                     DEFAULT_ZOOM));
                         } else {
@@ -424,7 +440,7 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb
         return loc;
     }
     public void startJogging(View view) {
-        infoJogging.setText(getCurrentLocation());
+        infoJoggingStart.setText(getCurrentLocation());
         mButton.setText("STOP");
         mButton.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -433,10 +449,12 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb
             }
         });
         mButton.setBackgroundColor(Color.parseColor("#FF0000"));
+        startTime = new SimpleDateFormat("HH:mm:ss")
+                .format(Calendar.getInstance().getTime());
     }
 
     public void stopJogging(View view) {
-        infoJogging.append("\n" + getCurrentLocation());
+        infoJoggingEnd.setText("\n" + getCurrentLocation());
         mButton.setText("START");
         mButton.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -445,5 +463,54 @@ public class JoggingActivity extends FragmentActivity implements OnMapReadyCallb
             }
         });
         mButton.setBackgroundColor(Color.parseColor("#4CFF00"));
+
+        // TODO : Distance itung berapa langkah
+        float distance = 1000;
+        Calendar c = Calendar.getInstance();
+        Jogging jogging = new Jogging(
+                new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()),
+                startTime,
+                new SimpleDateFormat("HH:mm:ss").format(c.getTime()),
+                distance,
+                infoJoggingStart.getText().toString(),
+                infoJoggingEnd.getText().toString()
+        );
+        // TODO : id_user sesuai id user yang login
+        int id_user = 1;
+        try {
+            String url = api.newJoggingHistory(
+                    id_user,
+                    jogging.getDate(),
+                    jogging.getStart(),
+                    jogging.getEnd(),
+                    jogging.getDistance(),
+                    jogging.getStartingPoint(),
+                    jogging.getEndPoint()
+            );
+            Log.d(TAG, url);
+            String response = NetworkUtils.getResponseFromHttpUrl(
+                    new URL(url)
+            );
+            JSONObject jsonObject = new JSONObject(response);
+            if (jsonObject.getString("error") == null) {
+                Log.d(TAG, "Inserting new record successful");
+            } else {
+                Log.e(TAG, jsonObject.getString("error"));
+            }
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
     }
+
+//    private class AddNewJogging extends AsyncTask<Void, Void, Void> {
+//
+//        @Override
+//        protected Void doInBackground(Void... voids) {
+//
+//        }
+//    }
 }
diff --git a/app/src/main/java/com/example/leo/fitnessdiy/model/Jogging.java b/app/src/main/java/com/example/leo/fitnessdiy/model/Jogging.java
index cd3fa4c..d48e53c 100644
--- a/app/src/main/java/com/example/leo/fitnessdiy/model/Jogging.java
+++ b/app/src/main/java/com/example/leo/fitnessdiy/model/Jogging.java
@@ -5,10 +5,46 @@ package com.example.leo.fitnessdiy.model;
  */
 
 public class Jogging {
+    private String date;
+    private String start;
+    private String end;
+    private float distance;
     private String startingPoint;
     private String endPoint;
-    private float distance;
-    private float duration;
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public String getStart() {
+        return start;
+    }
+
+    public void setStart(String start) {
+        this.start = start;
+    }
+
+    public String getEnd() {
+        return end;
+    }
+
+    public void setEnd(String end) {
+        this.end = end;
+    }
+
+    public Jogging(String date, String start, String end, float distance, String startingPoint, String endPoint) {
+
+        this.date = date;
+        this.start = start;
+        this.end = end;
+        this.distance = distance;
+        this.startingPoint = startingPoint;
+        this.endPoint = endPoint;
+    }
 
     public String getStartingPoint() {
         return startingPoint;
@@ -33,12 +69,4 @@ public class Jogging {
     public void setDistance(float distance) {
         this.distance = distance;
     }
-
-    public float getDuration() {
-        return duration;
-    }
-
-    public void setDuration(float duration) {
-        this.duration = duration;
-    }
 }
diff --git a/app/src/main/java/com/example/leo/fitnessdiy/routes/api.java b/app/src/main/java/com/example/leo/fitnessdiy/routes/api.java
index bc37633..3a8cd6a 100644
--- a/app/src/main/java/com/example/leo/fitnessdiy/routes/api.java
+++ b/app/src/main/java/com/example/leo/fitnessdiy/routes/api.java
@@ -12,4 +12,12 @@ public class api {
     public static final String HISTORY_URL = BASE_URL + "history.php?user=";
 
     public static final String USERS_URL = BASE_URL + "users.php?user=";
+
+    public static final String newJoggingHistory(int id_user, String date,
+                                               String start, String end, float distance,
+                                               String sPoint, String ePoint) {
+        return BASE_URL + "new_jogging_history.php?user=" + id_user +
+                "&date="+date+"&start="+start+"&end="+end+"&distance="+distance+"&spoint="+
+                sPoint+"&epoint=" + ePoint;
+    }
 }
diff --git a/app/src/main/res/layout/activity_jogging.xml b/app/src/main/res/layout/activity_jogging.xml
index f275aa3..8e64945 100644
--- a/app/src/main/res/layout/activity_jogging.xml
+++ b/app/src/main/res/layout/activity_jogging.xml
@@ -15,10 +15,6 @@
         android:layout_height="match_parent"
         tools:context="com.example.leo.fitnessdiy.JoggingActivity" />
 
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/tv_info"/>
 
     <Button
         android:id="@+id/control_button"
@@ -35,4 +31,22 @@
         android:textColor="#ffffff"
         android:background="#4cff00"/>
 
+    <android.support.v7.widget.CardView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:id="@+id/tv_info"
+        android:layout_gravity="top"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp"
+        android:layout_marginTop="16dp">
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/tv_info_start"/>
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/tv_info_end"/>
+    </android.support.v7.widget.CardView>
+
 </FrameLayout>
\ No newline at end of file
-- 
GitLab