package com.chintan.aidlserver;

import android.Manifest;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.IBinder;
import android.os.RemoteException;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;

import java.util.List;

public class AdditionService extends Service {

	@Nullable
	@Override
	public IBinder onBind(Intent intent) {
		return mBinder;
	}

	private final IAdd.Stub mBinder = new IAdd.Stub() {
		@Override
		public int addNumbers(int num1, int num2) throws RemoteException {
			return num1 + num2;
		}

		@Override
		public List<String> getStringList() throws RemoteException {
			return MainActivity.getList();
		}

		@Override
		public List<Person> getPersonList() throws RemoteException {
			return MainActivity.getPersons();
		}

		@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
		@Override
		public void placeCall(final String number) throws RemoteException {

			Intent intent = new Intent(Intent.ACTION_CALL);
			intent.setData(Uri.parse("tel:" + number));
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
			if (ActivityCompat
					.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE)
					!= PackageManager.PERMISSION_GRANTED) {

				Intent intent1 = new Intent(getApplicationContext(), MainActivity.class);
				// use System.currentTimeMillis() to have a unique ID for the pending intent
				PendingIntent pIntent = PendingIntent
						.getActivity(getApplicationContext(), (int) System.currentTimeMillis(), intent1, 0);

				// build notification
				// the addAction re-use the same intent to keep the example short
				Notification n = new Notification.Builder(getApplicationContext())
						.setContentTitle("AIDL Server App")
						.setContentText("Please grant call permission from settings")
						.setSmallIcon(R.drawable.ic_launcher)
						.setContentIntent(pIntent)
						.setAutoCancel(true).build();

				NotificationManager notificationManager =
						(NotificationManager) getSystemService(NOTIFICATION_SERVICE);

				notificationManager.notify(0, n);
				return;
			}
			startActivity(intent);
		}
	};
}