package com.pennapps.pennmeet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import me.cloudmine.api.CMAdapter;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
import com.pennapps.pennmeet.helpers.Group;
import com.pennapps.pennmeet.helpers.User;
public class BackEndConnection {
CMAdapter cmadapter = new CMAdapter();
public BackEndConnection(){}
public void putUser(String id, User user){
Map<String, Object> map = new HashMap<String, Object>();
map.put("UserID", user.getUserID());
map.put("Groups", new JSONArray(user.getGroups()));
map.put("Email", user.getEmail());
map.put("First Name", user.getFirstName());
map.put("Last Name", user.getLastName());
map.put("Phone Number", user.getPhoneNumber());
map.put("Year", user.getYear());
map.put("Admin Rights", user.getIsAdmin());
cmadapter.updateValue("user-"+id, map);
}
public void putGroup(String id, Group group){
Map<String, Object> map = new HashMap<String, Object>();
map.put("GroupID", group.getGroupID());
map.put("Title", group.getTitle());
map.put("Description", group.getDesc());
map.put("GroupEmail", group.getEmail());
JSONArray jArray = new JSONArray();
for (int i = 0; i < group.getMembers().size(); i++){
jArray.put(group.getMembers().get(i));
}
map.put("Members", jArray);
map.put("VP", group.getVP());
map.put("President", group.getPres());
cmadapter.updateValue("group-"+id, map);
}
public User getUser(String id) throws JSONException{
JSONObject jsonObject = cmadapter.getValues(new String[] {"user-"+id});
Log.e("BackEndConnection user test", jsonObject.toString());
JSONArray groups = null;
User u = null;
Set<String> temp = new HashSet<String>();
u = new User((((JSONObject) jsonObject.get("user-"+id)).getString("UserID")), //make a new user with the parameters from the cloud
(((JSONObject) jsonObject.get("user-"+id)).getString("First Name")),
(((JSONObject) jsonObject.get("user-"+id)).getString("Last Name")),
(((JSONObject) jsonObject.get("user-"+id)).getString("Phone Number")),
(((JSONObject) jsonObject.get("user-"+id)).getBoolean("Admin Rights")),
(((JSONObject) jsonObject.get("user-"+id)).getString("Email")),
(((JSONObject) jsonObject.get("user-"+id)).getString("Year")),
(temp)); //set of groups is empty, at first
groups = (((JSONObject) jsonObject.get("user-"+id)).getJSONArray("Groups"));
if (groups != null){
for (int i = 0; i < groups.length(); i++){
u.addGroup(groups.getString(i)); // iterates through JSONArray and populates user's groups set
}
}
return u;
}
public void addGroupToUser(String userId, String groupID) throws JSONException{
JSONObject jsonObject = cmadapter.getValues(new String[] {"user-"+userId});
Log.e("BackEndConnection addGroupuser test", jsonObject.toString());
JSONArray groups = null;
groups = (((JSONObject) jsonObject.get("user-"+userId)).getJSONArray("Groups"));
groups = groups.put(groupID);
Map<String, Object> map = new HashMap<String, Object>();
map.put("UserID", (((JSONObject) jsonObject.get("user-"+userId)).getString("UserID")));
map.put("Groups", groups);
map.put("Email",(((JSONObject) jsonObject.get("user-"+userId)).getString("Email")));
map.put("First Name", (((JSONObject) jsonObject.get("user-"+userId)).getString("First Name")));
map.put("Last Name", (((JSONObject) jsonObject.get("user-"+userId)).getString("Last Name")));
map.put("Phone Number", (((JSONObject) jsonObject.get("user-"+userId)).getString("Phone Number")));
map.put("Year", (((JSONObject) jsonObject.get("user-"+userId)).getString("Year")));
map.put("Admin Rights", (((JSONObject) jsonObject.get("user-"+userId)).getBoolean("Admin Rights")));
cmadapter.updateValue("user-"+userId, map);
}
public Group getGroup(String id) throws JSONException{
JSONObject jsonObject = cmadapter.getValues(new String[] {"group-"+id});
ArrayList<String> temp = new ArrayList<String>();
Log.e("BackEndConnection test", ((JSONObject) jsonObject.get("group-"+id)).getString("GroupID"));
for (String string : temp){
Log.e("BackEndConnection test", string);
}
JSONArray mems = null;
Group g = new Group((((JSONObject) jsonObject.get("group-"+id)).getString("GroupID")),
(((JSONObject) jsonObject.get("group-"+id)).getString("Title")),
(((JSONObject) jsonObject.get("group-"+id)).getString("Description")),
(((JSONObject) jsonObject.get("group-"+id)).getString("GroupEmail")),
(temp),
(((JSONObject) jsonObject.get("group-"+id)).getString("VP")),
(((JSONObject) jsonObject.get("group-"+id)).getString("President")),
null);
//Log.e("BackEndConnection array test", ((JSONArray) ((JSONObject) jsonObject.get("group-"+id)).get("Members")).getString(0));
mems = (JSONArray) ((JSONObject) jsonObject.get("group-"+id)).get("Members");
if (mems != null){
for (int i = 0; i < mems.length(); i++){
temp.add(mems.get(i).toString());
}
}
return g;
}
}