From 41c5dcebfd45dcd5e47f4eab44d73ab9558d13ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Tue, 18 Dec 2018 00:01:35 +0100 Subject: [PATCH] Add scrap button --- .../wmi/findmytutor/activity/TutorTab.java | 145 +++++++++--------- .../wmi/findmytutor/service/TutorTabApi.java | 5 +- app/src/main/res/layout/content_tutor_tab.xml | 27 +++- app/src/main/res/values-pl/strings.xml | 3 + app/src/main/res/values/strings.xml | 3 + 5 files changed, 106 insertions(+), 77 deletions(-) diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/TutorTab.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/TutorTab.java index 288f269..278f73f 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/TutorTab.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/TutorTab.java @@ -8,18 +8,13 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; -import android.widget.Adapter; import android.widget.Button; -import android.widget.EditText; -import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; -import com.annimon.stream.Stream; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.adapters.DutyHoursAdapter; -import com.uam.wmi.findmytutor.model.DutyHour; import com.uam.wmi.findmytutor.model.DutyHourViewModel; import com.uam.wmi.findmytutor.model.TutorTabViewModel; import com.uam.wmi.findmytutor.model.User; @@ -36,11 +31,14 @@ import java.util.List; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.observers.DisposableCompletableObserver; import io.reactivex.observers.DisposableSingleObserver; import io.reactivex.schedulers.Schedulers; import okhttp3.ResponseBody; import retrofit2.Response; +import static java.lang.String.valueOf; + public class TutorTab extends AppCompatActivity { private TutorTabApi tutorTabService; private UserService userService; @@ -53,6 +51,7 @@ public class TutorTab extends AppCompatActivity { private TextView department; private Button addDutyButton; private Button saveButon; + private Button scrapButton; private Boolean ifTutorTabExists = true; private List dutyHourList; private RecyclerView dutyHoursRecycller; @@ -72,69 +71,24 @@ public class TutorTab extends AppCompatActivity { userEmail = findViewById(R.id.userEmail); department = findViewById(R.id.userDepartment); saveButon = findViewById(R.id.saveButon); + scrapButton = findViewById(R.id.scrapTutorTab); addDutyButton = findViewById(R.id.addDuty); - dutyHoursRecycller = (RecyclerView) findViewById(R.id.dutyHourView); + dutyHoursRecycller = findViewById(R.id.dutyHourView); dutyHoursLayoutManager = new LinearLayoutManager(this); dutyHoursRecycller.setLayoutManager(dutyHoursLayoutManager); - tutorTabService = ApiClient.getClient(getApplicationContext()) .create(TutorTabApi.class); userService = ApiClient.getClient(getApplicationContext()) .create(UserService.class); - disposable.add( - tutorTabService.apiUsersTutorTabByTutorIdGet(PrefUtils.getUserId(getApplicationContext())) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(new DisposableSingleObserver() { - @Override - public void onSuccess(TutorTabViewModel tutorTabViewModel) { - - dutyHourList = tutorTabViewModel.getDutyHours(); - if(dutyHourList == null){ - }else{ - dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),dutyHourList); - dutyHoursRecycller.setAdapter(dutyHoursAdapter); - addDutyButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - addEmptyDuty(dutyHoursAdapter); - } - }); - } - userRoom.setText(String.format("%s", tutorTabViewModel.getRoom())); - userEmail.setText(String.format("%s", tutorTabViewModel.getEmailTutorTab())); - if (!tutorTabViewModel.getNote().equals("")) { - userNote.setText(String.format("%s", tutorTabViewModel.getNote())); - } - } - - @Override - public void onError(Throwable e) { - int code = ((HttpException) e).response().code(); - if( code == 404){ - ifTutorTabExists = false; - dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),new ArrayList()); - dutyHoursRecycller.setAdapter(dutyHoursAdapter); - addDutyButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - addEmptyDuty(dutyHoursAdapter); - } - }); - } - showError(e); - } - })); - + getTutorTab(); findViewById(R.id.contentTutorTabInfoImageButton).setOnClickListener(v-> InfoHelperUtils.infoPopUp(v,R.layout.info_popup_tutor_tab)); userName.setText(String.format("%s %s", PrefUtils.getUserFirstName(getApplicationContext()), PrefUtils.getUserLastName(getApplicationContext()))); disposable.add( - userService.getUserById(PrefUtils.getUserId(getApplicationContext())) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -153,7 +107,46 @@ public class TutorTab extends AppCompatActivity { } })); setUpSaveListener(saveButon); + scrapButton.setOnClickListener(view -> scrapTutorTab()); } + + private void getTutorTab(){ + disposable.add( + tutorTabService.apiUsersTutorTabByTutorIdGet(PrefUtils.getUserId(getApplicationContext())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableSingleObserver() { + @Override + public void onSuccess(TutorTabViewModel tutorTabViewModel) { + + dutyHourList = tutorTabViewModel.getDutyHours(); + if(dutyHourList != null){ + dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),dutyHourList); + dutyHoursRecycller.setAdapter(dutyHoursAdapter); + addDutyButton.setOnClickListener(v -> addEmptyDuty(dutyHoursAdapter)); + } + userRoom.setText(String.format("%s", tutorTabViewModel.getRoom())); + userEmail.setText(String.format("%s", tutorTabViewModel.getEmailTutorTab())); + if (!tutorTabViewModel.getNote().equals("")) { + userNote.setText(String.format("%s", tutorTabViewModel.getNote())); + } + } + + @Override + public void onError(Throwable e) { + int code = ((HttpException) e).response().code(); + if( code == 404){ + ifTutorTabExists = false; + dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),new ArrayList()); + dutyHoursRecycller.setAdapter(dutyHoursAdapter); + addDutyButton.setOnClickListener(v -> addEmptyDuty(dutyHoursAdapter)); + } + showError(e); + } + })); + + } + private void addEmptyDuty(DutyHoursAdapter adapter){ adapter.addDuty(new DutyHourViewModel()); adapter.notifyItemInserted(adapter.getItemCount()); @@ -161,20 +154,17 @@ public class TutorTab extends AppCompatActivity { } private void setUpSaveListener(Button button) { - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - newTab = new TutorTabViewModel(PrefUtils.getUserId(getApplicationContext()), - userRoom.getText().toString(), - userEmail.getText().toString(), - userNote.getText().toString(), - dutyHoursAdapter.getDutyList()); - if(ifTutorTabExists){ - putUserTab(newTab); - }else{ - postUserTab(newTab); - ifTutorTabExists=true; - } + button.setOnClickListener(view -> { + newTab = new TutorTabViewModel(PrefUtils.getUserId(getApplicationContext()), + userRoom.getText().toString(), + userEmail.getText().toString(), + userNote.getText().toString(), + dutyHoursAdapter.getDutyList()); + if(ifTutorTabExists){ + putUserTab(newTab); + }else{ + postUserTab(newTab); + ifTutorTabExists=true; } }); } @@ -185,23 +175,34 @@ public class TutorTab extends AppCompatActivity { .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::handleResponsePut, this::handleError)); } + private void postUserTab(TutorTabViewModel tutorTabViewModel) { disposable.add(tutorTabService.apiUsersTutorTabByTutorIdPost(PrefUtils.getUserId(getApplicationContext()), tutorTabViewModel) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::handleResponsePost, this::handleError)); } + private void scrapTutorTab() { + disposable.add(tutorTabService.apiUsersScrapTutorTabByTutorIdPost(PrefUtils.getUserId(getApplicationContext())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(this::handleResponseScrap, this::handleError)); + + } + + private void handleResponseScrap() { + Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.scrap_tutor_msg), Toast.LENGTH_SHORT).show(); + getTutorTab(); + } private void handleResponsePut(Response resp) { Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.updateToast), Toast.LENGTH_SHORT).show(); - } + private void handleResponsePost(TutorTabViewModel tutorTabViewModel ) { Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.updateToast), Toast.LENGTH_SHORT).show(); - } - private void handleError(Throwable error) { if (error instanceof HttpException) { @@ -212,6 +213,10 @@ public class TutorTab extends AppCompatActivity { } else { Toast.makeText(getApplicationContext(), "Network error " + error.getMessage(), Toast.LENGTH_SHORT).show(); + + + Log.e("WMI SUCC", String.valueOf(error)); + } } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/TutorTabApi.java b/app/src/main/java/com/uam/wmi/findmytutor/service/TutorTabApi.java index 837e356..38b2349 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/service/TutorTabApi.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/service/TutorTabApi.java @@ -3,6 +3,7 @@ package com.uam.wmi.findmytutor.service; import com.uam.wmi.findmytutor.model.TutorTabViewModel; +import io.reactivex.Completable; import io.reactivex.Observable; import io.reactivex.Single; import retrofit2.Response; @@ -17,7 +18,7 @@ public interface TutorTabApi { * @return Call<Void> */ @POST("api/users/scrapTutorTab/{tutorId}") - Observable apiUsersScrapTutorTabByTutorIdPost( + Completable apiUsersScrapTutorTabByTutorIdPost( @retrofit2.http.Path("tutorId") String tutorId ); @@ -27,7 +28,7 @@ public interface TutorTabApi { * @return Call<Void> */ @POST("api/users/scrapTutorTab") - Observable apiUsersScrapTutorTabPost(); + Single apiUsersScrapTutorTabPost(); /** diff --git a/app/src/main/res/layout/content_tutor_tab.xml b/app/src/main/res/layout/content_tutor_tab.xml index ef92cd3..3862c1f 100644 --- a/app/src/main/res/layout/content_tutor_tab.xml +++ b/app/src/main/res/layout/content_tutor_tab.xml @@ -7,6 +7,8 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + + + +