Skip to content

Commit db56f7d

Browse files
committed
Approve Activity
#12 - send Approved/Refused FCM device to device notifycation
1 parent 9207533 commit db56f7d

File tree

5 files changed

+199
-15
lines changed

5 files changed

+199
-15
lines changed

app/src/main/java/com/eusecom/attendance/fragment/ApproveListFragment.java

Lines changed: 174 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import android.app.Dialog;
44
import android.app.ProgressDialog;
5+
import android.content.DialogInterface;
56
import android.content.Intent;
67
import android.os.Bundle;
78
import android.support.v4.app.Fragment;
9+
import android.support.v7.app.AlertDialog;
810
import android.support.v7.widget.LinearLayoutManager;
911
import android.support.v7.widget.RecyclerView;
1012
import android.util.Log;
1113
import android.util.Pair;
14+
import android.view.KeyEvent;
1215
import android.view.LayoutInflater;
1316
import android.view.View;
1417
import android.view.ViewGroup;
@@ -17,12 +20,19 @@
1720
import android.widget.TextView;
1821
import android.widget.Toast;
1922

23+
import com.eusecom.attendance.ApproveActivity;
2024
import com.eusecom.attendance.Constants;
25+
import com.eusecom.attendance.FbmessClient;
26+
import com.eusecom.attendance.GitHubRepoAdapter;
2127
import com.eusecom.attendance.MainActivity;
28+
import com.eusecom.attendance.NewAbsenceActivity;
2229
import com.eusecom.attendance.NewPostActivity;
2330
import com.eusecom.attendance.SettingsActivity;
2431
import com.eusecom.attendance.models.Attendance;
2532
import com.eusecom.attendance.models.DeletedAbs;
33+
import com.eusecom.attendance.models.MessData;
34+
import com.eusecom.attendance.models.Message;
35+
import com.eusecom.attendance.models.NotifyData;
2636
import com.eusecom.attendance.retrofit.RfContributor;
2737
import com.eusecom.attendance.retrofit.RfEtestApi;
2838
import com.eusecom.attendance.retrofit.RfEtestService;
@@ -47,6 +57,9 @@
4757
import com.google.gson.Gson;
4858
import com.google.gson.GsonBuilder;
4959

60+
import java.text.DateFormat;
61+
import java.text.SimpleDateFormat;
62+
import java.util.Date;
5063
import java.util.HashMap;
5164
import java.util.Map;
5265

@@ -55,6 +68,8 @@
5568
import io.reactivex.disposables.CompositeDisposable;
5669
import io.reactivex.observers.DisposableObserver;
5770
import io.reactivex.schedulers.Schedulers;
71+
import rx.Observer;
72+
import rx.Subscription;
5873

5974
import static android.text.TextUtils.isEmpty;
6075
import static java.lang.String.format;
@@ -81,6 +96,8 @@ public ApproveListFragment() {}
8196
private RfEtestApi _githubService;
8297
private CompositeDisposable _disposables;
8398

99+
private Subscription subscription;
100+
84101
@Override
85102
public void onCreate(Bundle savedInstanceState) {
86103
super.onCreate(savedInstanceState);
@@ -292,6 +309,9 @@ public void onDestroy() {
292309
if (mAdapter != null) {
293310
mAdapter.cleanup();
294311
}
312+
if (subscription != null && !subscription.isUnsubscribed()) {
313+
subscription.unsubscribe();
314+
}
295315
_disposables.dispose();
296316
}
297317

@@ -317,10 +337,10 @@ private void approvePost(String postkey, int anodaj, Attendance model) {
317337
String savetofir = SettingsActivity.getFir(getActivity());
318338
String whoapprove = SettingsActivity.getUsOsc(getActivity());
319339

320-
_disposables.add(_githubService.contributors(savetofir, postkey, whoapprove, approveabs_json)
340+
_disposables.add(_githubService.contributors(savetofir, postkey, whoapprove, approveabs_json, anodaj)
321341
.flatMap(Observable::fromIterable)
322342
.flatMap(contributor -> {
323-
Observable<RfUser> _userObservable = _githubService.user(contributor.login)
343+
Observable<RfUser> _userObservable = _githubService.user(savetofir, postkey, whoapprove, approveabs_json, anodaj, contributor.login)
324344
.filter(user -> !isEmpty(user.name) && !isEmpty(user.email));
325345

326346
return Observable.zip(_userObservable,
@@ -339,19 +359,31 @@ public void onComplete() {
339359

340360
@Override
341361
public void onError(Throwable e) {
342-
Log.d(TAG, "error while getting the list of contributors along with full " + "names");
362+
String snext = "Error " + e + getResources().getString(R.string.abs_savednot);
363+
Toast.makeText(getActivity(), snext, Toast.LENGTH_LONG).show();
343364
}
344365

345366
@Override
346367
public void onNext(Pair pair) {
347368
RfUser user = ((Pair<RfUser, RfContributor>)pair).first;
348369
RfContributor contributor = ((Pair<RfUser, RfContributor>)pair).second;
349370

371+
String snext = "";
350372

351-
String snext = " " + user.name + " "
373+
String snextx = " " + user.name + " "
352374
+ user.email + " "
353375
+ contributor.contributions + " "
354-
+ contributor.memo;
376+
+ contributor.memo + " "
377+
+ contributor.saved;
378+
379+
if(contributor.saved == 1 ) {
380+
snext = getResources().getString(R.string.abs_saved) + snextx;
381+
approveFBPost(abskeydel, contributor.anodaj, model);
382+
}else{
383+
snext = getResources().getString(R.string.abs_savednot);
384+
approveFBPost(abskeydel, contributor.anodaj, model);
385+
}
386+
355387

356388
Log.d(TAG, "onnext " + snext);
357389
Toast.makeText(getActivity(), snext, Toast.LENGTH_LONG).show();
@@ -363,6 +395,10 @@ public void onNext(Pair pair) {
363395

364396
private void getDialog(String postkey, Attendance model) {
365397

398+
//if savetofir > 0 then save to server
399+
String savetofir = SettingsActivity.getFir(getActivity());
400+
int savetofiri = Integer.parseInt(savetofir);
401+
366402
// custom dialog
367403
final Dialog dialog = new Dialog(getActivity());
368404
dialog.setContentView(R.layout.approve_dialog);
@@ -380,7 +416,11 @@ private void getDialog(String postkey, Attendance model) {
380416

381417
public void onClick(View v) {
382418
dialog.dismiss();
383-
approvePost(abskeydel, 1, model);
419+
if(savetofiri>0){
420+
approvePost(abskeydel, 1, model);
421+
}else{
422+
approvePost(abskeydel, 1, model);
423+
}
384424
}
385425
});
386426
Button buttonRefuse = (Button) dialog.findViewById(R.id.buttonRefuse);
@@ -389,13 +429,56 @@ public void onClick(View v) {
389429

390430
public void onClick(View v) {
391431
dialog.dismiss();
392-
approvePost(abskeydel, 0, model);
432+
if(savetofiri>0){
433+
approvePost(abskeydel, 0, model);
434+
}else{
435+
approvePost(abskeydel, 0, model);
436+
}
393437

394438

395439
}
396440
});
397441
dialog.show();
398442

443+
}//end getdialog
444+
445+
private void approveFBPost(String postkey, int anodaj, Attendance model) {
446+
447+
//Toast.makeText(getActivity(), "Set approved=1", Toast.LENGTH_LONG).show();
448+
String Notititle = SettingsActivity.getUsname(getActivity()) + " " + model.dmxa + " " + model.dmna;
449+
long timestampod = Long.parseLong(model.daod) * 1000L;
450+
String datefroms = getDate(timestampod );
451+
long timestampdo = Long.parseLong(model.dado) * 1000L;
452+
String datetos = getDate(timestampdo );
453+
String Notibody ="";
454+
455+
if( anodaj == 1 ) {
456+
Notibody = getString(R.string.isapproved) + " " + model.dmxa + " " + model.dmna + " "
457+
+ getString(R.string.from) + " " + datefroms + " " + getString(R.string.to) + " " + datetos
458+
+ " " + model.hodxb + " " + getString(R.string.hodiny);
459+
}else{
460+
Notibody = getString(R.string.isrefused) + " " + model.dmxa + " " + model.dmna + " "
461+
+ getString(R.string.from) + " " + datefroms + " " + getString(R.string.to) + " " + datetos
462+
+ " " + model.hodxb + " " + getString(R.string.hodiny);
463+
}
464+
465+
String approvetopic = "/topics/approve" + SettingsActivity.getUsIco(getActivity());
466+
//FirebaseRetrofitMessaging firebasemessaging = new FirebaseRetrofitMessaging("/topics/news", Notititle, Notibody);
467+
FirebaseRxApproveMessaging firebasemessaging = new FirebaseRxApproveMessaging(approvetopic, Notititle, Notibody, anodaj);
468+
subscription = firebasemessaging.SendNotification();
469+
470+
}
471+
472+
private String getDate(long timeStamp){
473+
474+
try{
475+
DateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
476+
Date netDate = (new Date(timeStamp));
477+
return sdf.format(netDate);
478+
}
479+
catch(Exception ex){
480+
return "xx";
481+
}
399482
}
400483

401484

@@ -429,4 +512,88 @@ public void onPause() {
429512
isrunning=false;
430513
}
431514

515+
public class FirebaseRxApproveMessaging {
516+
517+
String to, title, body;
518+
int anodaj;
519+
private GitHubRepoAdapter adapter = new GitHubRepoAdapter();
520+
private Subscription subscription;
521+
522+
523+
public FirebaseRxApproveMessaging(String to, String title, String body, int anodaj) {
524+
this.to = to;
525+
this.title = title;
526+
this.body = body;
527+
this.anodaj = anodaj;
528+
}
529+
530+
531+
public Subscription SendNotification() {
532+
533+
MessData messdata = new MessData("This is a GCM Topic Message!");
534+
NotifyData notifydata = new NotifyData(title, body);
535+
Message message = new Message(to, notifydata, "");
536+
537+
subscription = FbmessClient.getInstance()
538+
.sendmyMessage("xxxxx", message)
539+
.subscribeOn(rx.schedulers.Schedulers.io())
540+
.observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
541+
.subscribe(new Observer<Message>() {
542+
@Override
543+
public void onCompleted() {
544+
545+
//hideProgressDialog();
546+
String notis="";
547+
if( anodaj == 1 ) {
548+
notis = getString(R.string.isapproved);
549+
}else{
550+
notis = getString(R.string.isrefused);
551+
}
552+
//Log.d(TAG, "In onCompleted()");
553+
AlertDialog dialog = new AlertDialog.Builder(getActivity())
554+
.setTitle(getString(R.string.absence))
555+
.setMessage(notis)
556+
.setPositiveButton(getString(R.string.textok), new DialogInterface.OnClickListener() {
557+
public void onClick(DialogInterface dialog, int which) {
558+
559+
//getActivity().finish();
560+
}
561+
})
562+
563+
.show();
564+
565+
dialog.setOnKeyListener(new Dialog.OnKeyListener() {
566+
567+
@Override
568+
public boolean onKey(DialogInterface arg0, int keyCode,
569+
KeyEvent event) {
570+
// TODO Auto-generated method stub
571+
if (keyCode == KeyEvent.KEYCODE_BACK) {
572+
//getActivity().finish();
573+
dialog.dismiss();
574+
}
575+
return true;
576+
}
577+
});
578+
}
579+
580+
581+
@Override
582+
public void onError(Throwable e) {
583+
e.printStackTrace();
584+
Log.d(TAG, "In onError()");
585+
}
586+
587+
@Override
588+
public void onNext(Message message) {
589+
Log.d(TAG, "In onNext()");
590+
Log.d("message", message.getMessage_id());
591+
//adapter.setGitHubRepos(gitHubRepos);
592+
}
593+
});
594+
return subscription;
595+
}
596+
597+
}//end of FirebaseRxApproveMessaging
598+
432599
}

app/src/main/java/com/eusecom/attendance/retrofit/RfContributor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@ public class RfContributor {
44
public String login;
55
public long contributions;
66
public String memo;
7+
public int anodaj;
8+
public int saved;
9+
public int emailed;
710
}

app/src/main/java/com/eusecom/attendance/retrofit/RfEtestApi.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,10 @@ public interface RfEtestApi {
7777
* See https://developer.github.com/v3/repos/#list-contributors
7878
*/
7979
@FormUrlEncoded
80-
@POST("/attendance/contributor.php")
80+
@POST("/attendance/save_absence.php")
8181
Observable<List<RfContributor>> contributors(@Field("savetofir") String savetofir, @Field("keyf") String keyf,
82-
@Field("whoapprove") String whoapprove, @Field("approveabs_json") String approveabs_json);
82+
@Field("whoapprove") String whoapprove, @Field("approveabs_json") String approveabs_json,
83+
@Field("anodaj") int anodaj);
8384

8485
@GET("/attendance/contributor.php")
8586
Observable<List<RfContributor>> contributorsGET(@Query("owner") String owner,
@@ -103,8 +104,14 @@ Observable<List<RfContributor>> contributors_orig(@Path("owner") String owner,
103104
/**
104105
* See https://developer.github.com/v3/users/
105106
*/
107+
@FormUrlEncoded
108+
@POST("/attendance/email_absence.php")
109+
Observable<RfUser> user(@Field("savetofir") String savetofir, @Field("keyf") String keyf,
110+
@Field("whoapprove") String whoapprove, @Field("approveabs_json") String approveabs_json,
111+
@Field("anodaj") int anodaj, @Field("user") String user);
112+
106113
@GET("/attendance/user.php")
107-
Observable<RfUser> user(@Query("user") String user);
114+
Observable<RfUser> userold(@Query("user") String user);
108115

109116
@GET("/users/{user}")
110117
Observable<RfUser> user_orig(@Path("user") String user);

app/src/main/res/values/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,12 @@
209209
<string name="abssave">Absence saved.</string>
210210
<string name="mesapprovesent">Absence sent to approve.</string>
211211
<string name="idliketoget">I am asking a</string>
212+
<string name="abs_saved">The absence has saved to server</string>
213+
<string name="abs_savednot">The absence has not saved to server</string>
214+
<string name="absapproved">Absence approved.</string>
215+
<string name="absapprovedok">Absence was approved.</string>
216+
<string name="isapproved">Approved absence </string>
217+
<string name="isrefused">Refused absence </string>
212218

213219
<!-- chees finder-->
214220
<string name="nothing_found">No cheeses found</string>

app/src/main/res/xml/settings.xml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<EditTextPreference
66
android:key="servername"
7-
android:defaultValue="www.ala.sk/androideshop"
7+
android:defaultValue="http:\\www.eshoptest.sk"
88
android:summary="@string/servername_summary"
99
android:title="@string/servername_title" />
1010

@@ -19,10 +19,11 @@
1919
android:title="@string/userpsw_title" />
2020

2121
<EditTextPreference
22-
android:key="fir"
23-
android:enabled="true"
24-
android:summary="@string/fir_summary"
25-
android:title="@string/fir_title" />
22+
android:key="fir"
23+
android:defaultValue="0"
24+
android:enabled="true"
25+
android:summary="@string/fir_summary"
26+
android:title="@string/fir_title" />
2627

2728
<EditTextPreference
2829
android:key="usname"

0 commit comments

Comments
 (0)