package alm.motiv.AlmendeMotivator;
import alm.motiv.AlmendeMotivator.facebook.FacebookMainActivity;
import alm.motiv.AlmendeMotivator.facebook.FacebookManager;
import alm.motiv.AlmendeMotivator.models.Message;
import alm.motiv.AlmendeMotivator.models.User;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.*;
import com.facebook.*;
import com.facebook.model.GraphUser;
import com.google.analytics.tracking.android.EasyTracker;
import com.mongodb.*;
import org.json.JSONObject;
import java.util.ArrayList;
public class MessageActivity extends Activity{
Intent home;
Intent k;
private String[] mMenuOptions;
private ListView mDrawerList;
private DrawerLayout mDrawerLayout;
private ListView listView;
private ArrayList<String> runningMessages = new ArrayList<String>();
private ArrayList<String> nameArray = new ArrayList<String>();
private ProgressDialog simpleWaitDialog;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_messagesmenu);
UpdateMessages u = new UpdateMessages();
u.execute();
//showMessages();
mMenuOptions = getResources().getStringArray(R.array.profile_array);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item_menu, mMenuOptions));
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
}
//on menu pressed
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
mDrawerLayout.openDrawer(Gravity.LEFT);
return true;
} else {
return super.onKeyUp(keyCode, event);
}
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
Menu.selectItem(position, MessageActivity.this);
}
}
class GetNameThread extends AsyncTask<String, String, String> {
protected String doInBackground(String... args) {
if(Cookie.getInstance().internet){
try{
Session session = Session.getActiveSession();
Request request = new Request(session, "me", null, HttpMethod.GET);
Response response = request.executeAndWait();
for (int i = 0; i < runningMessages.size(); i++){
request = new Request(session, runningMessages.get(i), null, HttpMethod.GET);
response = request.executeAndWait();
if (response.getError() != null) {
System.out.println("NOPE");
} else {
GraphUser graphUser = response.getGraphObjectAs(GraphUser.class);
nameArray.add(graphUser.getName());
System.out.println(graphUser.getName());
}
}
}catch(Exception e){
System.out.println(e);
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
try {
simpleWaitDialog.dismiss();
simpleWaitDialog = null;
} catch (Exception e) {
// nothing
}
showMessages();
}
}
@Override
public void onStart() {
super.onStart();
//google analytics
EasyTracker.getInstance(this).activityStart(this); // Add this method.
}
@Override
public void onStop() {
super.onStop();
//google analytics
EasyTracker.getInstance(this).activityStop(this); // Add this method.
}
public void createMessage(View v){
k = new Intent(MessageActivity.this, MessageCreateActivity.class);
finish();
startActivity(k);
}
class UpdateMessages extends AsyncTask<String, String, String> {
protected String doInBackground(String... args) {
if(Cookie.getInstance().internet){
try{
MongoClient client = Database.getInstance();
DB db = client.getDB(Database.uri.getDatabase());
DBCollection userCollection = db.getCollection("messages");
userCollection.setObjectClass(Message.class);
getMessages(userCollection);
}catch (Exception e){
System.out.println(e);
}
}
return null;
}
@Override
protected void onPreExecute() {
simpleWaitDialog = ProgressDialog.show(MessageActivity.this,
"Please wait", "Processing");
}
@Override
protected void onPostExecute(String string) {
try {
simpleWaitDialog.dismiss();
simpleWaitDialog = null;
} catch (Exception e) {
// nothing
}
showMessages();
}
}
public void getMessages(DBCollection userCollection){
try{
DBObject query = QueryBuilder.start("Author").is(Cookie.getInstance().userEntryId).get();
DBCursor myCursor = userCollection.find(query);
while(myCursor.hasNext()){
DBObject testObj = myCursor.next();
runningMessages.add(testObj.get("Receiver").toString());
}
query = QueryBuilder.start("Receiver").is(Cookie.getInstance().userEntryId).get();
myCursor = userCollection.find(query);
while(myCursor.hasNext()){
DBObject testObj = myCursor.next();
runningMessages.add(testObj.get("Author").toString());
}
GetNameThread dbT = new GetNameThread();
dbT.execute();
}catch (Exception e){
System.out.println(e);
}
}
public void showMessages(){
listView = (ListView) findViewById(R.id.messageList);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.list_item_detail_message, nameArray);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new MessageClickListener());
}
private class MessageClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
//GA NAAR DE JUISTE MESSAGE
String butName = runningMessages.get(position);
k = new Intent(MessageActivity.this, MessageViewActivity.class);
k.putExtra("challenger", Cookie.getInstance().userEntryId);
k.putExtra("challengee", butName);
finish();
startActivity(k);
}
}
@Override
public void onBackPressed() {
finish();
home = new Intent(MessageActivity.this, ChallengeOverviewActivity.class);
startActivity(home);
return;
}
}