@@ -0,0 +1,49 @@
package com.example.buster.mycrews.InitializeTasks;

import android.os.AsyncTask;
import android.util.Log;

import com.example.buster.mycrews.BE.User;
import com.example.buster.mycrews.BLL.Manager.UserManager;
import com.example.buster.mycrews.MainActivity;
import com.example.buster.mycrews.UI.User.MyEditProfileActivity;

import java.util.ArrayList;

/**
* Created by Buster on 26-05-2016.
*/
public class InitializeTaskUserUpdate extends AsyncTask<
UserManager, // collection of Users to execute
Void, // to type of progress info
User> // output of doInBackground
{

MyEditProfileActivity m_context;
User user;

public InitializeTaskUserUpdate(MyEditProfileActivity context, User user) {
m_context = context;
this.user = user;
Log.d("USERR", "TWO");
}

@Override
protected User doInBackground(UserManager... ms) {
// params comes from the execute()
try {
ms[0].update(user);
return ms[0].getUpdated();
} catch (Exception e) {
Log.d("USERR", "TASK "+e.getMessage());
return null;
}
}

// onPostExecute displays the results of the AsyncTask.doInBackground().
// this method is invoked by the GUI thread
@Override
protected void onPostExecute(final User user) {
m_context.updatedUser(user);
}
}
@@ -4,23 +4,20 @@
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.buster.mycrews.BE.User;
import com.example.buster.mycrews.BLL.Manager.UserManager;
import com.example.buster.mycrews.Controller.UserController;
import com.example.buster.mycrews.InitializeTasks.InitializeTaskUsers;
import com.example.buster.mycrews.UI.Crew.FindCrewActivity;
import com.example.buster.mycrews.UI.User.MyProfileActivity;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private UserController userController;
private ArrayList<User> users;
UserManager userManager;

@@ -62,6 +59,12 @@ public void onClick(View v) {
});
}

@Override
protected void onResume() {
super.onResume();
getUsers();
}

public void getUsers() {
InitializeTaskUsers taskUsers = new InitializeTaskUsers(this);
taskUsers.execute(userManager);
@@ -72,7 +75,6 @@ public void initializeUsers(ArrayList<User> users) {
}

void login() {

User user = null;
boolean validUser = false;
String myUsername = etUsername.getText().toString();
@@ -81,14 +83,13 @@ void login() {
if (u.getUserName().equals(myUsername)) {
user = u;
validUser = true;

}
}

//simulate login
if (validUser) {

Intent intent = new Intent(MainActivity.this, FindCrewActivity.class);
Intent intent = new Intent(MainActivity.this, MyProfileActivity.class);
intent.putExtra("LoggedInUser", user);

startActivity(intent);
@@ -108,6 +109,4 @@ void login() {
Toast.makeText(getApplicationContext(), "Invalid username or password", Toast.LENGTH_LONG).show();
}
}


}
@@ -20,7 +20,7 @@
*/
public class MenuActivity extends AppCompatActivity{

public User user;
public User loggedInUser;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
@@ -47,21 +47,24 @@ public boolean onOptionsItemSelected(MenuItem item) {
//noinspection SimplifiableIfStatement
if (id == R.id.myProfile) {
Intent intent = new Intent(MenuActivity.this, MyProfileActivity.class);
intent.putExtra("LoggedInUser", loggedInUser);
startActivity(intent);
return true;
}
if (id == R.id.myCrews) {
Intent intent = new Intent(MenuActivity.this, MyCrewsActivity.class);
intent.putExtra("LoggedInUser", loggedInUser);
startActivity(intent);
return true;
}
if (id == R.id.allCrews) {
Intent intent = new Intent(MenuActivity.this, FindCrewActivity.class);
intent.putExtra("LoggedInUser", loggedInUser);
startActivity(intent);
return true;
}
if (id == R.id.logout) {
Intent intent = new Intent(MenuActivity.this,MainActivity.class);
Intent intent = new Intent(MenuActivity.this, MainActivity.class);
startActivity(intent);
return true;
}
@@ -75,12 +78,12 @@ public void goToActivity(Class goToActivity, Crew crew){
if(crew!=null){
intent.putExtra("crew", crew);
}
intent.putExtra("LoggedInUser", user);
intent.putExtra("LoggedInUser", loggedInUser);
startActivity(intent);
}

public void setUser(User user){
this.user = user;
this.loggedInUser = user;
}


@@ -100,6 +103,6 @@ public void downloadImage(ImageView imgView, String url) {
@Override
protected void onPause() {
super.onPause();
user = null;
loggedInUser = null;
}
}
@@ -2,15 +2,31 @@

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.example.buster.mycrews.BE.Crew;
import com.example.buster.mycrews.BE.User;
import com.example.buster.mycrews.MenuActivity;
import com.example.buster.mycrews.R;

public class CrewChatActivity extends MenuActivity {

Crew crew;
final String LOGTAG = "CrewChat";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crew_chat);

Bundle extra = getIntent().getExtras();
if (extra != null) {
crew = (Crew) extra.get("crew");
loggedInUser = (User)extra.get("LoggedInUser");

} else {
Log.d(LOGTAG, "crew was null");
}

}
}
@@ -9,6 +9,7 @@

import com.example.buster.mycrews.BE.Crew;
import com.example.buster.mycrews.BE.CrewGameSuggestion;
import com.example.buster.mycrews.BE.User;
import com.example.buster.mycrews.MenuActivity;
import com.example.buster.mycrews.R;
import com.example.buster.mycrews.UI.ListViewAdapters.CrewGameSuggestionGameListViewAdapter;
@@ -32,9 +33,11 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_crew_games);

listView = (ListView) findViewById(R.id.crewGameList);

Bundle extra = getIntent().getExtras();
if (extra != null) {
crew = (Crew) extra.get("crew");
loggedInUser = (User)extra.get("LoggedInUser");

} else {
Log.d(LOGTAG, "crew was null");
@@ -48,6 +48,7 @@ protected void onCreate(Bundle savedInstanceState) {
Bundle extra = getIntent().getExtras();
if (extra != null) {
crew = (Crew) extra.get("crew");
loggedInUser = (User)extra.get("LoggedInUser");

} else {
Log.d(LOGTAG, "crew was null");
@@ -1,32 +1,22 @@
package com.example.buster.mycrews.UI.Crew;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.buster.mycrews.BE.Crew;
import com.example.buster.mycrews.BE.CrewGameSuggestion;
import com.example.buster.mycrews.BE.User;
import com.example.buster.mycrews.BLL.Manager.GenerelLogic.CrewLogic;
import com.example.buster.mycrews.Controller.UserController;
import com.example.buster.mycrews.MenuActivity;
import com.example.buster.mycrews.R;

import java.util.ArrayList;
import java.util.List;

public class CrewProfileActivity extends MenuActivity {

Crew crew;
UserController userController;
//User me;
String LOGTAG = "crewProfile";

Button btnApply;
@@ -45,8 +35,6 @@ public class CrewProfileActivity extends MenuActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crew_profile);
//userController = UserController.getInstance();
//me = userController.getCurrentUser();
crewLogic = new CrewLogic();

crewImage = (ImageView) findViewById(R.id.myCrewImage);
@@ -60,21 +48,15 @@ protected void onCreate(Bundle savedInstanceState) {
btnLeader = (Button) findViewById(R.id.btnAdmin);





Bundle extra = getIntent().getExtras();
if(extra!=null) {
crew = (Crew)extra.get("crew");
User user = (User)extra.get("LoggedInUser");
setUser(user);
loggedInUser = (User)extra.get("LoggedInUser");
setupCrewInfo();
}else{
System.exit(0);
}



setupButtons();
setupText();

@@ -114,7 +96,7 @@ public void onClick(View v) {
}
});

if(crewLogic.isCrewMember(crew, user.getId())){
if(crewLogic.isCrewMember(crew, loggedInUser.getId())){
btnApply.setClickable(false);
btnChat.setClickable(true);
btnGame.setClickable(true);
@@ -123,15 +105,15 @@ public void onClick(View v) {
btnChat.setClickable(false);
btnGame.setClickable(false);
}
if(!crewLogic.isCrewLeader(crew, user.getId())){
if(!crewLogic.isCrewLeader(crew, loggedInUser.getId())){
btnLeader.setVisibility(btnLeader.GONE);
}
}

private void goToActivity(Class activity) {
Intent intent = new Intent(this, activity);
intent.putExtra("crew", crew);
intent.putExtra("UserLoggedIn", user);
intent.putExtra("UserLoggedIn", loggedInUser);
startActivity(intent);
}

@@ -142,8 +124,6 @@ private void applyForMemberShip() {
void setupCrewInfo(){
crewName.setText(crew.getCrewName());
crewLeader.setText(crew.getCrewLeader().getUserName());


}

}
@@ -41,8 +41,7 @@ protected void onCreate(Bundle savedInstanceState) {

Bundle extra = getIntent().getExtras();
if(extra!=null) {
User user = (User)extra.get("LoggedInUser");
setUser(user);
loggedInUser = (User)extra.get("LoggedInUser");
}else{
System.exit(0);
}
@@ -67,11 +66,6 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {

}

@Override
public void setUser(User user) {
super.setUser(user);
}

private void seachCrewsList(){
crewSearch = new ArrayList<>();
String search = etSearchField.getText().toString();
@@ -90,7 +84,7 @@ private void crewDetails(int pos){
Intent intent = new Intent(FindCrewActivity.this, CrewProfileActivity.class);
Crew crew = crewSearch.get(pos);
intent.putExtra("crew", crew);
intent.putExtra("LoggedInUser", user);
intent.putExtra("LoggedInUser", loggedInUser);
startActivity(intent);
}

@@ -8,8 +8,8 @@
import android.widget.TextView;

import com.example.buster.mycrews.BE.Crew;
import com.example.buster.mycrews.BE.User;
import com.example.buster.mycrews.BLL.Manager.CrewManager;
import com.example.buster.mycrews.Controller.UserController;
import com.example.buster.mycrews.InitializeTasks.InitializeTaskUserCrews;
import com.example.buster.mycrews.MenuActivity;
import com.example.buster.mycrews.R;
@@ -34,14 +34,18 @@ public class MyCrewsActivity extends MenuActivity {
ImageView crewImage3;

CrewManager crewManager;
UserController userController;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_crews);

userController = UserController.getInstance();
Bundle extra = getIntent().getExtras();
if (extra != null) {
loggedInUser = (User)extra.get("LoggedInUser");
} else {
System.exit(0);
}

crewManager = CrewManager.getInstance();
loadMyCrews();
@@ -89,14 +93,15 @@ public void onClick(View v) {
}

void loadMyCrews(){
InitializeTaskUserCrews task = new InitializeTaskUserCrews(this, userController.getCurrentUser().getId());
InitializeTaskUserCrews task = new InitializeTaskUserCrews(this, loggedInUser.getId());
task.execute(crewManager);
}

void goToCrew(int crew){
Intent intent;
if(crews.size()>= crew+1) {
intent = new Intent(MyCrewsActivity.this, CrewProfileActivity.class);
intent.putExtra("LoggedInUser", loggedInUser);
intent.putExtra("crew", crews.get(crew));
startActivity(intent);
}else{
@@ -3,12 +3,14 @@
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;

import com.example.buster.mycrews.Controller.UserController;
import com.example.buster.mycrews.BE.User;
import com.example.buster.mycrews.BLL.Manager.UserManager;
import com.example.buster.mycrews.InitializeTasks.InitializeTaskUserUpdate;
import com.example.buster.mycrews.MenuActivity;
import com.example.buster.mycrews.R;

@@ -17,14 +19,24 @@
*/
public class MyEditProfileActivity extends MenuActivity {

private String loggedInUserId = UserController.getInstance().getCurrentUser().getId();
//private String loggedInUserId = UserController.getInstance().getCurrentUser().getId();
private ImageButton btnSaveProfile;
private EditText etUserName, etFirstName, etLastName, etPhoneNumber;

UserManager userManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_my_profile);
userManager = UserManager.getInstance();

Bundle extra = getIntent().getExtras();
if(extra!=null) {
loggedInUser = (User)extra.get("LoggedInUser");
}else{
System.exit(0);
}

// Lock the screen orientation to portrait (turn-safe activity)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
@@ -37,26 +49,27 @@ protected void onCreate(Bundle savedInstanceState) {
public void onClick(View v) {
// update user in mongo database
updateUserInDatabase();

// update 'MyProfileActivity.class' by creating an intent and putting in the new data
Intent sendDataBackIntent = new Intent(getApplicationContext(), MyProfileActivity.class);
sendDataBackIntent.putExtra("userName", etUserName.getText().toString());
sendDataBackIntent.putExtra("firstName", etFirstName.getText().toString());
sendDataBackIntent.putExtra("lastName", etLastName.getText().toString());
sendDataBackIntent.putExtra("phoneNumber", etPhoneNumber.getText().toString());

// populate result and return it to 'MyProfileActivity.class
setResult(RESULT_OK, sendDataBackIntent);
finish();
}
});
}

private void updateUserInDatabase() {
// go through gateway and update user in mongo database
System.out.print("TO DO : UPDATE USER IN MONGO DATABASE");
User userToUpdate;
String id = loggedInUser.getId();
String username = etUserName.getText().toString();
String firstname = etFirstName.getText().toString();
String lastname = etLastName.getText().toString();
int phone = Integer.parseInt(etPhoneNumber.getText().toString());

userToUpdate = new User(id, username, firstname, lastname, phone);
Log.d("USERR", "ONE");
InitializeTaskUserUpdate task = new InitializeTaskUserUpdate(this, userToUpdate);
task.execute(userManager);

}



private void populateEditTexts() {
etUserName.setText(getIntent().getStringExtra("userName"));
etFirstName.setText(getIntent().getStringExtra("firstName"));
@@ -71,4 +84,21 @@ private void initComponents() {
etLastName = (EditText) findViewById(R.id.etLastname);
etPhoneNumber = (EditText) findViewById(R.id.etPhoneNumber);
}

public void updatedUser(User user) {
loggedInUser = user;
// update 'MyProfileActivity.class' by creating an intent and putting in the new data
Intent sendDataBackIntent = new Intent(getApplicationContext(), MyProfileActivity.class);
sendDataBackIntent.putExtra("userName", user.getUserName());
sendDataBackIntent.putExtra("firstName", user.getFirstName());
sendDataBackIntent.putExtra("lastName", user.getLastName());
sendDataBackIntent.putExtra("phoneNumber", String.valueOf(user.getPhoneNumber()));

// populate result and return it to 'MyProfileActivity.class
/*
setResult(RESULT_OK, sendDataBackIntent);
finish();
*/
}
}
@@ -3,7 +3,6 @@
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
@@ -14,7 +13,6 @@
import android.widget.Toast;

import com.example.buster.mycrews.BE.User;
import com.example.buster.mycrews.Controller.UserController;
import com.example.buster.mycrews.MenuActivity;
import com.example.buster.mycrews.R;

@@ -24,8 +22,7 @@

public class MyProfileActivity extends MenuActivity {

private UserController userController;
private User loggedInUser;


private final int CAPTURE_PICTURE_REQUEST_CODE = 100, ACTIVITY_EDIT_PROFILE_REQUEST_CODE = 200;

@@ -39,8 +36,15 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_profile);

userController = UserController.getInstance();
loggedInUser = userController.getCurrentUser();

Bundle extra = getIntent().getExtras();
if(extra!=null) {
loggedInUser = (User)extra.get("LoggedInUser");

}else{
System.exit(0);
}


// Lock the screen orientation to portrait (turn-safe activity)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
@@ -67,6 +71,7 @@ private void editUserProfile() {
// create intent
Intent editUserProfileIntent = new Intent(getApplicationContext(), MyEditProfileActivity.class);
// put extras in intent (even though we can already access 'logged in user' globally because of the static singleton class), this is just for show.
editUserProfileIntent.putExtra("LoggedInUser", loggedInUser);
editUserProfileIntent.putExtra("userName", tvUserName.getText());
editUserProfileIntent.putExtra("firstName", tvFirstName.getText());
editUserProfileIntent.putExtra("lastName", tvLastName.getText());
@@ -75,6 +80,31 @@ private void editUserProfile() {
startActivityForResult(editUserProfileIntent, ACTIVITY_EDIT_PROFILE_REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// handle the returned result from 'Camera intent'
if (requestCode == CAPTURE_PICTURE_REQUEST_CODE && resultCode == RESULT_OK) {
String filename = photoFile.toString();
displayPicture(filename);
}
// handle the returned result from 'edit user profile intent'
if (requestCode == ACTIVITY_EDIT_PROFILE_REQUEST_CODE && resultCode == RESULT_OK) {

// update the logged in users info
loggedInUser.setUserName("" + data.getStringExtra("userName"));
loggedInUser.setFirstName("" + data.getStringExtra("firstName"));
loggedInUser.setLastName("" + data.getStringExtra("lastName"));
loggedInUser.setPhoneNumber(Integer.parseInt(data.getStringExtra("phoneNumber")));

// update textviews with data from the newly updated logged in user
tvUserName.setText("" + loggedInUser.getUserName());
tvFirstName.setText("" + loggedInUser.getFirstName());
tvLastName.setText("" + loggedInUser.getLastName());
tvPhoneNumber.setText("" + loggedInUser.getPhoneNumber());
}
}

private void populateTextViews() {
tvUserName.setText("" + loggedInUser.getUserName());
tvFirstName.setText("" + loggedInUser.getFirstName());
@@ -127,23 +157,6 @@ private File getOutputMediaFile() {
return null;
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// handle the returned result from 'Camera intent'
if (requestCode == CAPTURE_PICTURE_REQUEST_CODE && resultCode == RESULT_OK) {
String filename = photoFile.toString();
displayPicture(filename);
}
// handle the returned result from 'edit user profile intent'
if (requestCode == ACTIVITY_EDIT_PROFILE_REQUEST_CODE && resultCode == RESULT_OK) {
tvUserName.setText("" + data.getStringExtra("userName"));
tvFirstName.setText("" + data.getStringExtra("firstName"));
tvLastName.setText("" + data.getStringExtra("lastName"));
tvPhoneNumber.setText("" + data.getStringExtra("phoneNumber"));
}
}

private void displayPicture(String filename) {
File myUserPhoto = new File(filename);
if (!myUserPhoto.exists()) {