package com.example.agathe.tsgtest;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import com.example.agathe.tsgtest.dto.Contact;
import com.olab.smplibrary.DataResponseCallback;
import com.olab.smplibrary.SMPLibrary;
import java.util.ArrayList;
import java.util.List;
/**
* Created by agathe on 23/01/17.
*/
public class ContactManager {
private Context context;
private int deviceID;
public ContactManager(Context context, int deviceID) {
this.context = context;
this.deviceID = deviceID;
}
public void getFrequentContacts(int numberOfContacts, final VolleyCallback callback) {
SMPLibrary.GetFrequentContactsByDeviceID(context, numberOfContacts, deviceID, new DataResponseCallback(){
@Override
public void OnResponse(int response_code, String data_response) {
List<Contact> contacts = new ArrayList<>();
Log.i("MainActivity:Response", "GetFrequentContacts response code " + response_code );
Log.i("MainActivity:Response", "GetFrequentContacts - " + data_response);
String[] parts = data_response.split("phoneNumbers");
for (String contact : parts) {
if (contact.contains("+")) {
boolean dup = false;
// to avoid dublons
for (Contact c : contacts) {
if (c.getPhoneNumber().equals("+" + contact.split("\\+")[1].split("\"")[0])) {
dup = true;
}
}
if (dup == false) {
Contact c = new Contact();
c.setName(contact.split("name\":\"")[1].split("\"")[0]);
c.setPhoneNumber("+" + contact.split("\\+")[1].split("\"")[0]);
c.setRelationStrength(contact.split("relationStrength\":")[1].split("\\}")[0]);
contacts.add(c);
}
}
}
callback.onSuccess(contacts);
}
});
}
public void getBusinessContacts(int numberOfContacts, final VolleyCallback callback) {
SMPLibrary.GetBusinessContactsByDeviceID(context, numberOfContacts, deviceID, new DataResponseCallback(){
@Override
public void OnResponse( int response_code, String data_response ){
List<Contact> contacts = new ArrayList<>();
Log.i("MainActivity:Response", "GetBusinessContacts response code " + response_code );
Log.i("MainActivity:Response", "GetBusinessContacts - " + data_response);
String[] parts = data_response.split("phoneNumbers");
for (String contact : parts) {
if (contact.contains("+")) {
boolean dup = false;
// to avoid dublons
for (Contact c : contacts) {
if (c.getPhoneNumber().equals("+" + contact.split("\\+")[1].split("\"")[0])) {
dup = true;
}
}
if (dup == false) {
Contact c = new Contact();
c.setName(contact.split("name\":\"")[1].split("\"")[0]);
c.setPhoneNumber("+" + contact.split("\\+")[1].split("\"")[0]);
c.setRelationStrength(contact.split("relationStrength\":")[1].split("\\}")[0]);
contacts.add(c);
}
}
}
callback.onSuccess(contacts);
}
});
}
public void getPrivateContacts(int numberOfContacts, final VolleyCallback callback) {
SMPLibrary.GetPrivateContactsByDeviceID(context, numberOfContacts, deviceID, new DataResponseCallback(){
@Override
public void OnResponse( int response_code, String data_response ){
List<Contact> contacts = null;
Log.i("MainActivity:Response", "GetPrivateContacts response code " + response_code );
Log.i("MainActivity:Response", "GetPrivateContacts - " + data_response);
String[] parts = data_response.split("phoneNumbers");
for (String contact : parts) {
if (contact.contains("+")) {
boolean dup = false;
// to avoid dublons
for (Contact c : contacts) {
if (c.getPhoneNumber().equals("+" + contact.split("\\+")[1].split("\"")[0])) {
dup = true;
}
}
if (dup == false) {
Contact c = new Contact();
c.setName(contact.split("name\":\"")[1].split("\"")[0]);
c.setPhoneNumber("+" + contact.split("\\+")[1].split("\"")[0]);
c.setRelationStrength(contact.split("relationStrength\":")[1].split("\\}")[0]);
contacts.add(c);
}
}
}
callback.onSuccess(contacts);
}
});
}
public void getContacts(int numberOfContacts, final VolleyCallbackGlobal callback) {
final List<List<Contact>> contacts = new ArrayList<>();
SMPLibrary.GetFrequentContactsByDeviceID(context, numberOfContacts, deviceID, new DataResponseCallback(){
@Override
public void OnResponse(int response_code, String data_response ){
List<Contact> frequentContacts = new ArrayList<>();
Log.i("MainActivity:Response", "GetFrequentContacts response code " + response_code );
Log.i("MainActivity:Response", "GetFrequentContacts - " + data_response);
Contact type = new Contact();
type.setName("frequent_contacts");
frequentContacts.add(type);
String[] parts = data_response.split("phoneNumbers");
for (String contact : parts) {
if (contact.contains("+")) {
boolean dup = false;
// to avoid dublons
for (Contact c : frequentContacts) {
if (c.getPhoneNumber().equals("+" + contact.split("\\+")[1].split("\"")[0])) {
dup = true;
break;
}
}
if (dup == false) {
Contact c = new Contact();
c.setName(contact.split("name\":\"")[1].split("\"")[0]);
c.setPhoneNumber("+" + contact.split("\\+")[1].split("\"")[0]);
c.setRelationStrength(contact.split("relationStrength\":")[1].split("\\}")[0]);
frequentContacts.add(c);
}
}
}
contacts.add(frequentContacts);
}
});
SMPLibrary.GetBusinessContactsByDeviceID(context, numberOfContacts, deviceID, new DataResponseCallback(){
@Override
public void OnResponse(int response_code, String data_response ){
List<Contact> businessContacts = new ArrayList<>();
Log.i("MainActivity:Response", "GetBusinessContacts response code " + response_code );
Log.i("MainActivity:Response", "GetBusinessContacts - " + data_response);
Contact type = new Contact();
type.setName("business_contacts");
businessContacts.add(type);
String[] parts = data_response.split("phoneNumbers");
for (String contact : parts) {
if (contact.contains("+")) {
boolean dup = false;
// to avoid dublons
for (Contact c : businessContacts) {
if (c.getPhoneNumber().equals("+" + contact.split("\\+")[1].split("\"")[0])) {
dup = true;
}
}
if (dup == false) {
Contact c = new Contact();
c.setName(contact.split("name\":\"")[1].split("\"")[0]);
c.setPhoneNumber("+" + contact.split("\\+")[1].split("\"")[0]);
c.setRelationStrength(contact.split("relationStrength\":")[1].split("\\}")[0]);
businessContacts.add(c);
}
}
}
contacts.add(businessContacts);
}
});
SMPLibrary.GetPrivateContactsByDeviceID(context, numberOfContacts, deviceID, new DataResponseCallback(){
@Override
public void OnResponse(int response_code, String data_response ){
List<Contact> privateContacts = new ArrayList<>();
Log.i("MainActivity:Response", "GetPrivateContacts response code " + response_code );
Log.i("MainActivity:Response", "GetPrivateContacts - " + data_response);
Contact type = new Contact();
type.setName("private_contacts");
privateContacts.add(type);
String[] parts = data_response.split("phoneNumbers");
for (String contact : parts) {
if (contact.contains("+")) {
boolean dup = false;
// to avoid dublons
for (Contact c : privateContacts) {
if (c.getPhoneNumber().equals("+" + contact.split("\\+")[1].split("\"")[0])) {
dup = true;
}
}
if (dup == false) {
Contact c = new Contact();
c.setName(contact.split("name\":\"")[1].split("\"")[0]);
c.setPhoneNumber("+" + contact.split("\\+")[1].split("\"")[0]);
c.setRelationStrength(contact.split("relationStrength\":")[1].split("\\}")[0]);
privateContacts.add(c);
}
}
}
contacts.add(privateContacts);
callback.onSuccess(contacts);
}
});
}
public interface VolleyCallback {
void onSuccess(List<Contact> contacts);
}
public interface VolleyCallbackGlobal {
void onSuccess(List<List<Contact>> contacts);
}
}