I'm creating an android app using parse database .
In this app I have created a meeting invite function for the users . one user can invite another user. and a push notification system also there for the invite function if someone invites other person a push notification goes to that person ..
meeting invite and push notification are working fine,
when logged in user is A he won't be able to request himself to a meeting . it means if user A is logged in user, he should be excluded from meeting invites .
But I'm unable to add that logic here ,
if anyone can please help me in this ??
java class
public class SingleIndividualInvite extends AppCompatActivity {
String objectId;
protected Button btYes, btNo;
protected TextView txtv;
protected TextView txtv1;
protected ImageView txtv2;
protected ImageView txtv3;
protected TextView individualOrganization;
Button emailPerson;
Button callPerson;
Button callPersonTelephone;
String personEmail, personNumber, personNumberTelephone;
LinearLayout messageLayout, buttonLayout;
ParseObject thisPerson, thisEvent;
TextView inviteMessage;
String currentUserName;
String receiverUserName;
String currentMeeting;
ParseUser parseUser = ParseUser.getCurrentUser();
boolean myInvite;
String eventName, eventID, senderName, senderID, receiverName, receiverID, meetingStatus;
String[] month = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
Calendar itemCalendar = Calendar.getInstance();
Calendar currentCalendar = Calendar.getInstance();
boolean noRequest = true, canRequest = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// finally change the color
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.setStatusBarColor(Color.parseColor("#083266"));
}
setContentView(R.layout.activity_single_individual_event);
txtv =(TextView)findViewById(R.id.txt123);
txtv1 =(TextView)findViewById(R.id.coporateSector);
txtv2 =(ImageView)findViewById(R.id.txt12345);
txtv3 =(ImageView)findViewById(R.id.txt123456);
individualOrganization =(TextView) findViewById(R.id.individualOrganization);
btYes = (Button) findViewById(R.id.button6);
btNo = (Button) findViewById(R.id.button7);
messageLayout = (LinearLayout) findViewById(R.id.statusLayout);
buttonLayout = (LinearLayout) findViewById(R.id.buttonLayout);
inviteMessage = (TextView) findViewById(R.id.inviteMessage);
Intent i =getIntent();
objectId = i.getStringExtra("objectId");
eventID = i.getStringExtra("eventId");
eventName = i.getStringExtra("eventName");
ParseQuery<ParseObject> query = ParseQuery.getQuery("_User");
query.setLimit(2000);
query.getInBackground(objectId, new GetCallback<ParseObject>() {
public void done(final ParseObject object, ParseException e) {
if (e == null) {
thisPerson = object;
String username = object.getString("firstname");
txtv.setText(username + " " + object.getString("lastname"));
String position = object.getString("position");
txtv1.setText(position);
String organizationName = object.getString("organizationName");
individualOrganization.setText(organizationName);
URL url = null;
try {
url = new URL("" + object.getString("image"));
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
Glide.with(getApplicationContext())
.load(String.valueOf(url))
.into(txtv2);
try {
url = new URL("" + object.getString("image"));
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
Glide.with(getApplicationContext())
.load(String.valueOf(url))
.centerCrop()
.into(txtv3);
try {
ParseRelation<ParseUser> relation = object.getRelation("attenders");
ParseQuery<ParseUser> query = relation.getQuery();
query.whereEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
ParseUser user = query.getFirst();
// setButton(true);
// updateList();
} catch (ParseException pe) {
// setButton(false);
}
try{
JSONObject jsonObject = parseObjectToJson(object);
Log.d("Object", jsonObject.toString());
Log.d("Email", "+" + object.get("email"));
personNumber = jsonObject.getString("telephone");
personEmail = jsonObject.getString("email");
}catch (Exception je){
}
currentUserName = parseUser.getString("firstname") + " " + parseUser.getString("lastname");
receiverUserName = thisPerson.getString("firstname") + " " + thisPerson.getString("lastname");
ParseQuery<ParseObject> eventQuery = ParseQuery.getQuery("Event");
eventQuery.getInBackground(eventID, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if(e == null){
thisEvent = object;
currentCalendar.set(Calendar.HOUR, 0);
currentCalendar.set(Calendar.MINUTE, 0);
currentCalendar.getTime();
String[] itemCalendarDetails = thisEvent.getString("date").split(" ");
int itemMonth = 0;
for(int j=0; j<month.length; j++){
if(itemCalendarDetails[1].equals(month[j])){
itemMonth = j;
break;
}
}
itemCalendar.set(Integer.parseInt(itemCalendarDetails[3]), itemMonth,
Integer.parseInt(itemCalendarDetails[2].substring(0, itemCalendarDetails[2].length()-2)));
if(itemCalendar.after(currentCalendar)) {
canRequest = true;
fetchMeeting();
}else{
canRequest = false;
setLayout();
}
}else{
}
}
});
} else {
}
individualOrganization.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String organizationID = thisPerson.getString("organizationID");
if(organizationID == null || organizationID.equals("")){
Toast.makeText(SingleIndividualInvite.this, "Sorry No Organization Available!", Toast.LENGTH_SHORT).show();
}else{
Intent i = new Intent(getApplicationContext(), SingleCorporate.class);
i.putExtra("objectId", organizationID);
i.putExtra("image", organizationID);
startActivity(i);
}
}
});
}
});
btYes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setButton(true);
ParseUser parseUser = ParseUser.getCurrentUser();
if(noRequest){
noRequest = false;
myInvite = true;
meetingStatus = "NA";
sendCustomPush(thisPerson.getString("push_id"), true);
try{
ParseObject meetingObject = new ParseObject("Meeting");
meetingObject.put("senderName", currentUserName);
meetingObject.put("recieverName", receiverUserName);
meetingObject.put("eventName", eventName);
meetingObject.put("accepted", false);
meetingObject.put("sender", ParseObject.createWithoutData("_User", parseUser.getObjectId()));
meetingObject.put("reciever", ParseObject.createWithoutData("_User", thisPerson.getObjectId()));
meetingObject.put("event", ParseObject.createWithoutData("Event", eventID));
meetingObject.save();
}catch (ParseException pe){
pe.printStackTrace();
Toast.makeText(getApplicationContext(), "Cannot invite right now!", Toast.LENGTH_SHORT).show();
}
}else{
myInvite = false;
noRequest = false;
meetingStatus = "ACCEPTED";
sendCustomPush(thisPerson.getString("push_id"), false);
ParseQuery<ParseObject> invitedMe = ParseQuery.getQuery("Meeting");
invitedMe.include("reciever");
invitedMe.include("sender");
invitedMe.include("event");
invitedMe.whereEqualTo("sender", ParseObject.createWithoutData("_User", thisPerson.getObjectId()));
invitedMe.whereEqualTo("reciever", ParseObject.createWithoutData("_User", parseUser.getObjectId()));
invitedMe.whereEqualTo("event", ParseObject.createWithoutData("Event", eventID));
invitedMe.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if(e == null){
objects.get(0).put("accepted", true);
objects.get(0).saveInBackground();
}else {
}
}
});
}
}
});
btNo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ParseUser parseUser = ParseUser.getCurrentUser();
setButton(false);
if(noRequest){
Toast.makeText(SingleIndividualInvite.this, "Kindly Request for a meeting First!", Toast.LENGTH_SHORT).show();
}else {
if(myInvite){
myInvite = true;
noRequest = false;
meetingStatus = "NA";
ParseQuery<ParseObject> invitedThem = ParseQuery.getQuery("Meeting");
invitedThem.whereEqualTo("objectId", currentMeeting);
invitedThem.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if(e==null) {
for (ParseObject delete : objects) {
try{
delete.delete();
Toast.makeText(getApplicationContext(), "Invite Cancelled", Toast.LENGTH_SHORT).show();
}catch (ParseException pe){
pe.printStackTrace();
Toast.makeText(getApplicationContext(), "Cannot retrieve Meeting!", Toast.LENGTH_SHORT).show();
}
}
}else{
Toast.makeText(getApplicationContext(), "Cannot retrieve Meeting!", Toast.LENGTH_SHORT).show();
}
}
});
}else {
myInvite = false;
noRequest = false;
meetingStatus = "NA";
ParseQuery<ParseObject> invitedMe = ParseQuery.getQuery("Meeting");
invitedMe.include("reciever");
invitedMe.include("sender");
invitedMe.include("event");
invitedMe.whereEqualTo("sender", ParseObject.createWithoutData("_User", thisPerson.getObjectId()));
invitedMe.whereEqualTo("reciever", ParseObject.createWithoutData("_User", parseUser.getObjectId()));
invitedMe.whereEqualTo("event", ParseObject.createWithoutData("Event", eventID));
invitedMe.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if(e == null){
objects.get(0).put("accepted", true);
objects.get(0).saveInBackground();
}else {
}
}
});
}
}
setLayout();
}
});
}
public void setButton(boolean status){
if(status){
btYes.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
btYes.setTextColor(Color.WHITE);
btYes.setClickable(false);
btNo.setBackgroundColor(Color.WHITE);
btNo.setTextColor(getResources().getColor(R.color.colorPrimary));
btNo.setClickable(true);
}else{
btYes.setBackgroundColor(Color.WHITE);
btYes.setTextColor(getResources().getColor(R.color.colorPrimary));
btYes.setClickable(true);
btNo.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
btNo.setTextColor(Color.WHITE);
btNo.setClickable(false);
}
}
private JSONObject parseObjectToJson(ParseObject parseObject) throws ParseException, JSONException {
JSONObject jsonObject = new JSONObject();
parseObject.fetchIfNeeded();
Set<String> keys = parseObject.keySet();
for (String key : keys) {
Object objectValue = parseObject.get(key);
if (objectValue instanceof ParseObject) {
jsonObject.put(key, parseObjectToJson(parseObject.getParseObject(key)));
} else if (objectValue instanceof ParseRelation) {
} else {
jsonObject.put(key, objectValue.toString());
}
}
return jsonObject;
}
public void sendCustomPush(String receiverPushID, boolean isRequesting){
String payBody;
if(receiverPushID.equals("") || receiverPushID == null){
Toast.makeText(getApplicationContext(), "Invite Sent. User is not registered for push!", Toast.LENGTH_SHORT).show();
}else{
if(isRequesting){
payBody = "{\r\n " +
"\"app_id\": \"APP_ID HERE \",\r\n " +
"\"include_player_ids\": [\"" + receiverPushID + "\"]," + "\r\n " +
"\"data\": {\"eventName\": \"" + eventName +"\", \"eventId\":\""+ eventID + "\", \"personId\":\"" + thisPerson.getObjectId() + "\"},\r\n " +
"\"contents\": {\"en\": \"" + currentUserName + " has requested for a meeting with you.\"},\r\n " +
"\"headings\": {\"en\": \"Meeting Alert!\"}" +
"\r\n}";
}else{
payBody = "{\r\n " +
"\"app_id\": \" APP_ID HERE \",\r\n " +
"\"include_player_ids\": [\"" + receiverPushID + "\"]," + "\r\n " +
"\"data\": {\"eventName\": \"" + eventName +"\", \"eventId\":\""+ eventID + "\", \"personId\":\"" + thisPerson.getObjectId() + "\"},\r\n " +
"\"contents\": {\"en\": \"" + currentUserName + " has accepted your meeting request.\"},\r\n " +
"\"headings\": {\"en\": \"Meeting Alert!\"}" +
"\r\n}";
}
OutputStreamWriter pushPayLoadWriter = null;
Scanner pushPayLoadReader = null;
HttpURLConnection pushRequest = null;
try{
URL postURL = new URL(" ");
pushRequest = (HttpURLConnection) postURL.openConnection();
pushRequest.setRequestMethod("POST");
pushRequest.setUseCaches(false);
pushRequest.setRequestProperty("Accept", "application/json");
pushRequest.setRequestProperty("Content-Type", "application/json");
pushRequest.setRequestProperty("X-Parse-Client-Key", "");
pushRequest.connect();
pushPayLoadWriter = new OutputStreamWriter(pushRequest.getOutputStream());
pushPayLoadWriter.write(payBody);
pushPayLoadWriter.flush();
pushPayLoadReader = new Scanner(pushRequest.getInputStream());
String responseLoad = "";
while(pushPayLoadReader.hasNext()){
responseLoad += pushPayLoadReader.next();
}
Log.d("Push Request Response", responseLoad);
}catch (Exception ue){
ue.printStackTrace();
}finally {
pushRequest.disconnect();
}
}
}
public void fetchMeeting(){
//Handling Meeting Invite
ParseQuery<ParseObject> invitedThem = ParseQuery.getQuery("Meeting");
invitedThem.include("reciever");
invitedThem.include("sender");
invitedThem.include("event");
invitedThem.whereEqualTo("event", ParseObject.createWithoutData("Event", eventID));
invitedThem.whereEqualTo("sender", ParseObject.createWithoutData("_User", parseUser.getObjectId()));
invitedThem.whereEqualTo("reciever", ParseObject.createWithoutData("_User", thisPerson.getObjectId()));
invitedThem.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if(e == null){
if(objects.size() == 0){
myInvite = false;
Log.d("No Request", "No Request");
ParseQuery<ParseObject> invitedMe = ParseQuery.getQuery("Meeting");
invitedMe.include("reciever");
invitedMe.include("sender");
invitedMe.include("event");
invitedMe.whereEqualTo("event", ParseObject.createWithoutData("Event", eventID));
invitedMe.whereEqualTo("sender", ParseObject.createWithoutData("_User", thisPerson.getObjectId()));
invitedMe.whereEqualTo("reciever", ParseObject.createWithoutData("_User", parseUser.getObjectId()));
invitedMe.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if(e == null){
if(objects.size() == 0){
noRequest = true;
setLayout();
}else{
if(objects.get(0).getBoolean("accepted")){
meetingStatus = "ACCEPTED";
}else{
meetingStatus = "NA";
}
noRequest = false;
setLayout();
}
}else{
Toast.makeText(SingleIndividualInvite.this, "Unable to fetch Meeting. Please Try Again!", Toast.LENGTH_SHORT).show();
}
}
});
}else{
if(objects.get(0).getBoolean("accepted")){
meetingStatus = "ACCEPTED";
}else{
meetingStatus = "NA";
}
noRequest = false;
myInvite = true;
setLayout();
}
}else{
Toast.makeText(SingleIndividualInvite.this, "Unable to fetch Meeting. Please Try Again!", Toast.LENGTH_SHORT).show();
}
}
});
}
public void setLayout(){
if(canRequest){
if(noRequest){
setButton(false);
buttonLayout.setVisibility(View.VISIBLE);
inviteMessage.setVisibility(View.VISIBLE);
messageLayout.setVisibility(View.VISIBLE);
inviteMessage.setText("Do you want to invite this person for a meeting?");
}else{
if(myInvite){
setButton(true);
inviteMessage.setVisibility(View.VISIBLE);
messageLayout.setVisibility(View.VISIBLE);
if(meetingStatus.equals("ACCEPTED")){
buttonLayout.setVisibility(View.INVISIBLE);
inviteMessage.setText("You request has been accepted, be ready fo the meeting.");
}else{
buttonLayout.setVisibility(View.VISIBLE);
inviteMessage.setText("You have already requested a meeting with this attendee and it's waiting for approval.");
}
}else{
inviteMessage.setVisibility(View.VISIBLE);
messageLayout.setVisibility(View.VISIBLE);
buttonLayout.setVisibility(View.VISIBLE);
if(meetingStatus.equals("ACCEPTED")){
setButton(true);
inviteMessage.setText("You have already accepted the meeting request. Press NO to cancel it!");
}else{
setButton(false);
inviteMessage.setText("You have been requested for a meeting. Do you wish to accept it?");
}
}
}
}else{
buttonLayout.setVisibility(View.INVISIBLE);
inviteMessage.setVisibility(View.VISIBLE);
messageLayout.setVisibility(View.VISIBLE);
inviteMessage.setText("Sorry, you cannot respond to this event. This event has already passed.");
}
}
}
hi, I guys I found answer
if(ParseUser.getCurrentUser().getObjectId().equals(objectId)){
btYes.setVisibility(View.INVISIBLE);
btNo.setVisibility(View.INVISIBLE);
}