diff --git a/app/src/main/java/com/dinhcv/lifelogpedometer/activity/TopFragment.java b/app/src/main/java/com/dinhcv/lifelogpedometer/activity/TopFragment.java index 5564b53..5e005e3 100644 --- a/app/src/main/java/com/dinhcv/lifelogpedometer/activity/TopFragment.java +++ b/app/src/main/java/com/dinhcv/lifelogpedometer/activity/TopFragment.java @@ -25,6 +25,8 @@ import com.dinhcv.lifelogpedometer.R; import com.dinhcv.lifelogpedometer.feature.Database; import com.dinhcv.lifelogpedometer.interfaces.LLAPIManagerListener; import com.dinhcv.lifelogpedometer.model.StepModel; +import com.dinhcv.lifelogpedometer.model.structure.top.StepHourInfo; +import com.dinhcv.lifelogpedometer.model.structure.top.TagetTopInfo; import com.dinhcv.lifelogpedometer.portal.LLAPIManager; import com.dinhcv.lifelogpedometer.utils.Const; import com.dinhcv.lifelogpedometer.utils.DayAxisValueFormatter; @@ -42,6 +44,7 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet; import org.eazegraph.lib.charts.PieChart; import org.eazegraph.lib.models.PieModel; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import java.text.NumberFormat; @@ -93,6 +96,10 @@ public class TopFragment extends FragmentBase implements SettingFragmentPresente private int stepRemain = 0; private int stepCount = 0; + private Date mFromDate; + private Date mToDate; + + private TagetTopInfo mTagetTopInfo = new TagetTopInfo(); private BarChart mChart; private List dateList; @@ -418,7 +425,7 @@ public class TopFragment extends FragmentBase implements SettingFragmentPresente private void getTopData(Date date, Const.STEP_TYPE stepType){ showDialog(mContext); - LLAPIManager.homePage(date, stepType, new LLAPIManagerListener() { + LLAPIManager.topInfo(date, stepType, new LLAPIManagerListener() { @Override public void onError(Error error) { Debug.error("Get data history error"); @@ -458,29 +465,29 @@ public class TopFragment extends FragmentBase implements SettingFragmentPresente if (targetInf != null){ String target = targetInf.optString("target_step"); Debug.normal("Target: "+ target); - mTagetInfo.setTaget(targetInf.optString("target_step")); - mTagetInfo.setSteps(targetInf.optString("num_step")); - mTagetInfo.setStepRemain(targetInf.optString("remaining_step")); - mTagetInfo.setCompletePercent(targetInf.optString("complete_percent")); + mTagetTopInfo.setTaget(targetInf.optString("target_step")); + mTagetTopInfo.setSteps(targetInf.optString("num_step")); + mTagetTopInfo.setStepRemain(targetInf.optString("remaining_step")); + mTagetTopInfo.setCompletePercent(targetInf.optString("complete_percent")); } if (listNotice != null && listNotice.length() > 0) { - List infoLists = new ArrayList<>(); + List infoLists = new ArrayList<>(); for (int i = 0; i < listNotice.length(); i++){ - NoticeInfo noticeInfo = new NoticeInfo(); + StepHourInfo noticeInfo = new StepHourInfo(); JSONObject ob = (JSONObject) listNotice.get(i); noticeInfo.setId(ob.optInt("id")); noticeInfo.setContent(ob.optString("notice_content")); infoLists.add(noticeInfo); } - mTagetInfo.setNoticeList(infoLists); + mTagetTopInfo.setStepHourList(infoLists); } } } catch (JSONException e) { e.printStackTrace(); - mTagetInfo = new TagetInfo();; + mTagetTopInfo = new TagetTopInfo();; } loadUI(); @@ -492,7 +499,7 @@ public class TopFragment extends FragmentBase implements SettingFragmentPresente tvRemain.setText(String.valueOf(mTagetInfo.getStepRemain())); tvRateDone.setText(getResources().getString(R.string.percent_unit, mTagetInfo.getCompletePercent())); - List infoLists = mTagetInfo.getNoticeList(); + List infoLists = mTagetTopInfo.getStepHourList(); if (infoLists != null && infoLists.size() >0){ mNoticeAdapter = new NoticeAdapter(mContext, infoLists); lvNotice.setAdapter(mNoticeAdapter); @@ -573,13 +580,13 @@ public class TopFragment extends FragmentBase implements SettingFragmentPresente @Override public void onDestroy() { super.onDestroy(); - - + // create log step + creatLogStep(); } - private void creatLogStep(Date date, Const.STEP_TYPE stepType){ + private void creatLogStep(){ - LLAPIManager.homePage(date, stepType, new LLAPIManagerListener() { + LLAPIManager.createLog(stepType, stepCount, mFromDate, mToDate, new LLAPIManagerListener() { @Override public void onError(Error error) { Debug.error("Get data history error"); @@ -588,8 +595,6 @@ public class TopFragment extends FragmentBase implements SettingFragmentPresente @Override public void onSuccess(String json) { Debug.error("Get data history success"); - hiddenDialog(); - loadDataDone(json); } @Override diff --git a/app/src/main/java/com/dinhcv/lifelogpedometer/model/structure/top/StepHourInfo.java b/app/src/main/java/com/dinhcv/lifelogpedometer/model/structure/top/StepHourInfo.java new file mode 100644 index 0000000..5c5c699 --- /dev/null +++ b/app/src/main/java/com/dinhcv/lifelogpedometer/model/structure/top/StepHourInfo.java @@ -0,0 +1,23 @@ +package com.dinhcv.lifelogpedometer.model.structure.top; + +public class StepHourInfo { + private int hour; + private int step; + + public int getHour() { + return hour; + } + + public void setHour(int hour) { + this.hour = hour; + } + + public int getStep() { + return step; + } + + public void setStep(int step) { + this.step = step; + } + +} diff --git a/app/src/main/java/com/dinhcv/lifelogpedometer/model/structure/top/TagetTopInfo.java b/app/src/main/java/com/dinhcv/lifelogpedometer/model/structure/top/TagetTopInfo.java new file mode 100644 index 0000000..d67b6a0 --- /dev/null +++ b/app/src/main/java/com/dinhcv/lifelogpedometer/model/structure/top/TagetTopInfo.java @@ -0,0 +1,83 @@ +package com.dinhcv.lifelogpedometer.model.structure.top; + +import com.dinhcv.lifelogpedometer.model.structure.home.NoticeInfo; + +import java.util.List; + +public class TagetTopInfo { + private String taget; + private String steps; + private String stepRemain; + private String completePercent; + private String calo; + private String distance; + private String time; + + private List stepHourList; + + + public String getTaget() { + return taget; + } + + public void setTaget(String taget) { + this.taget = taget; + } + + public String getSteps() { + return steps; + } + + public void setSteps(String steps) { + this.steps = steps; + } + + public String getStepRemain() { + return stepRemain; + } + + public void setStepRemain(String stepRemain) { + this.stepRemain = stepRemain; + } + + public String getCompletePercent() { + return completePercent; + } + + public void setCompletePercent(String completePercent) { + this.completePercent = completePercent; + } + + public String getCalo() { + return calo; + } + + public void setCalo(String calo) { + this.calo = calo; + } + + public String getDistance() { + return distance; + } + + public void setDistance(String distance) { + this.distance = distance; + } + + public String getTime() { + return time; + } + + public void setTime(String taget) { + this.time = time; + } + + public void setStepHourList(List stepHourList){ + this.stepHourList = stepHourList; + } + + public List getStepHourList(){ + return stepHourList; + } + +} diff --git a/app/src/main/java/com/dinhcv/lifelogpedometer/portal/LLAPIManager.java b/app/src/main/java/com/dinhcv/lifelogpedometer/portal/LLAPIManager.java index e3ed856..48ed021 100644 --- a/app/src/main/java/com/dinhcv/lifelogpedometer/portal/LLAPIManager.java +++ b/app/src/main/java/com/dinhcv/lifelogpedometer/portal/LLAPIManager.java @@ -61,6 +61,11 @@ public class LLAPIManager { public static String URL_FORGET_PASS_CONFIRM_INFO = "forgetPass/confirm"; // Refesh Token public static String URL_REFESH_TOKEN_INFO = "refreshToken"; + // Top info + public static String URL_TOP_INFO = "api/top"; + // Refesh Token + public static String URL_CREATE_LOG_INFO = "api/createLog"; + private static int deviationValue = 1; @@ -756,6 +761,171 @@ public class LLAPIManager { }.execute(); } + public static void topInfo(final Date date, final Const.STEP_TYPE stepType, final LLAPIManagerListener action) { + new AsyncTask() { + + + @Override + protected void onPreExecute() { + super.onPreExecute(); + } + + @Override + protected String doInBackground(Void... voids) { + + String dateStr = Utils.dateToStringFormatDayMonthYear(date); + Debug.normal("Token: "+ APIResponse.getInstance().getToken()); + HttpUrl baseUrl = HttpUrl.parse(URL_ROOT + URL_TOP_INFO + "/"+ stepType.value +"/"+ dateStr); + Debug.normal("URL: "+baseUrl.toString()); + final Request.Builder request = new Request.Builder() + .url(baseUrl) + .header("User-Agent", Utils.getCustomUA()) + .header("Content-Type", "application/json") + .addHeader("token", APIResponse.getInstance().getToken()) + .get(); + + OkHttpClient httpClient = new OkHttpClient.Builder() + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .connectTimeout(30, TimeUnit.SECONDS) + .build(); + + String jsonString = null; + try { + Response response = httpClient.newCall(request.build()).execute(); + if (response == null) { + action.onError(null); + Debug.error("Response is null"); + return null; + } + jsonString = getResponseData(response.body()); + + } catch (IOException e) { + Debug.normal("Error %s", e.getMessage()); + } + return jsonString; + } + + @Override + protected void onCancelled() { + super.onCancelled(); + action.onError(null); + } + + @Override + protected void onPostExecute(String jsonString) { + super.onPostExecute(jsonString); + if ((jsonString == null) || (jsonString.isEmpty())) { + action.onError(null); + return; + } + Debug.normal("String body: "+jsonString); + + try { + JSONObject jsonObject = new JSONObject(jsonString); + int status = jsonObject.optInt("status"); + if (status == 1) { + action.onSuccess(jsonString); + } else { + action.onError(new Error(jsonObject.getString("message"))); + } + } catch (JSONException e) { + action.onError(null); + } + } + }.execute(); + } + + public static void createLog(final Const.STEP_TYPE stepType, final int stepCount, final Date startTime, + final Date endTime, final LLAPIManagerListener action) { + new AsyncTask() { + + + @Override + protected void onPreExecute() { + super.onPreExecute(); + } + + @Override + protected String doInBackground(Void... voids) { + HttpUrl baseUrl = HttpUrl.parse(URL_ROOT + URL_CREATE_LOG_INFO); + JSONObject jsonObject = new JSONObject(); + String startT = Utils.convertDate2DateTimeString(startTime); + String endT = Utils.convertDate2DateTimeString(endTime); + try { + jsonObject.put("mode", stepType.value); + jsonObject.put("numStep", stepCount); + jsonObject.put("startTime", startT); + jsonObject.put("endTime", endT); + + Debug.warn("Json data: " + jsonObject.toString()); + } catch (JSONException e) { + Debug.normal("Error ", e.getMessage()); + } + + MediaType JSON + = MediaType.parse("application/json"); + RequestBody requestBody = RequestBody.create(JSON, jsonObject.toString()); + + final Request.Builder request = new Request.Builder() + .url(baseUrl) + .header("User-Agent", Utils.getCustomUA()) + .header("Content-Type", "application/json") + .addHeader("token", APIResponse.getInstance().getToken()) + .post(requestBody); + + OkHttpClient httpClient = new OkHttpClient.Builder() + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .connectTimeout(30, TimeUnit.SECONDS) + .build(); + + String jsonString = null; + try { + Response response = httpClient.newCall(request.build()).execute(); + if (response == null) { + action.onError(null); + Debug.error("Response is null"); + return null; + } + jsonString = getResponseData(response.body()); + + } catch (IOException e) { + Debug.normal("Error %s", e.getMessage()); + } + return jsonString; + } + + @Override + protected void onCancelled() { + super.onCancelled(); + action.onError(null); + } + + @Override + protected void onPostExecute(String jsonString) { + super.onPostExecute(jsonString); + if ((jsonString == null) || (jsonString.isEmpty())) { + action.onError(null); + return; + } + Debug.normal("String body: "+jsonString); + + try { + JSONObject jsonObject = new JSONObject(jsonString); + int status = jsonObject.optInt("status"); + if (status == 1) { + action.onSuccess(jsonString); + } else { + action.onError(new Error(jsonObject.getString("message"))); + } + } catch (JSONException e) { + action.onError(null); + } + } + }.execute(); + } + public static void refreshToken(final Context context, final int userId, final LLAPIManagerListener action) { new AsyncTask() { diff --git a/app/src/main/java/com/dinhcv/lifelogpedometer/utils/Utils.java b/app/src/main/java/com/dinhcv/lifelogpedometer/utils/Utils.java index d14a23d..0abb67f 100644 --- a/app/src/main/java/com/dinhcv/lifelogpedometer/utils/Utils.java +++ b/app/src/main/java/com/dinhcv/lifelogpedometer/utils/Utils.java @@ -255,6 +255,11 @@ public class Utils { return date; } + public static String convertDate2DateTimeString(Date date) { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return df.format(date); + } + public static String convertDate2DayString(Date date) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); return df.format(date);