Advertisement
kitlolz012

REservedetails.java

Nov 28th, 2023
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.15 KB | None | 0 0
  1. package com.example.gypsy;
  2.  
  3. import androidx.annotation.NonNull;
  4. import androidx.annotation.Nullable;
  5. import androidx.appcompat.app.AlertDialog;
  6. import androidx.appcompat.app.AppCompatActivity;
  7. import androidx.fragment.app.DialogFragment;
  8.  
  9. import android.content.DialogInterface;
  10. import android.content.Intent;
  11. import android.os.Bundle;
  12. import android.util.Log;
  13. import android.view.LayoutInflater;
  14. import android.view.View;
  15. import android.view.ViewGroup;
  16. import android.widget.Button;
  17. import android.widget.EditText;
  18. import android.widget.ImageView;
  19. import android.widget.ProgressBar;
  20. import android.widget.ScrollView;
  21. import android.widget.TextView;
  22. import android.widget.Toast;
  23.  
  24. import com.google.android.gms.tasks.OnCompleteListener;
  25. import com.google.android.gms.tasks.Task;
  26. import com.google.android.material.floatingactionbutton.FloatingActionButton;
  27. import com.google.firebase.auth.FirebaseAuth;
  28. import com.google.firebase.auth.FirebaseUser;
  29. import com.google.firebase.database.DataSnapshot;
  30. import com.google.firebase.database.DatabaseError;
  31. import com.google.firebase.database.DatabaseReference;
  32. import com.google.firebase.database.FirebaseDatabase;
  33. import com.google.firebase.database.Query;
  34. import com.google.firebase.database.ValueEventListener;
  35. import com.squareup.picasso.Picasso;
  36.  
  37. import java.util.HashMap;
  38. import java.util.Map;
  39.  
  40. public class ReserveDetails extends AppCompatActivity {
  41.     private TextView fullNameTextView;
  42.     private TextView contactNumberTextView, personTextView;
  43.     private TextView emailTextView;
  44.     private TextView reserveDateTextView;
  45.     private TextView gcashname, gcashnum, refnumber;
  46.     private Button  confirmButton;
  47.     private FloatingActionButton messageButton;
  48.     private ImageView imagepayment;
  49.     private String touristUserId;
  50.     private String recipientName;
  51.     private String currentUserName;
  52.     private FirebaseAuth mAuth;
  53.     private String currentUserId;
  54.  
  55.     @Override
  56.     public void onCreate(@Nullable Bundle savedInstanceState) {
  57.         super.onCreate(savedInstanceState);
  58.         setContentView(R.layout.activity_reserve_details);
  59.  
  60.         fullNameTextView = findViewById(R.id.fullNameTextView);
  61.         contactNumberTextView = findViewById(R.id.contactNumberTextView);
  62.         emailTextView = findViewById(R.id.emailTextView);
  63.         reserveDateTextView = findViewById(R.id.reserveDateTextView);
  64.         contactNumberTextView = findViewById(R.id.contactNumberTextView);
  65.         personTextView = findViewById(R.id.personTextView);
  66.         gcashnum = findViewById(R.id.gcashnum);
  67.         gcashname = findViewById(R.id.gcashname);
  68.         refnumber = findViewById(R.id.refnum);
  69.         imagepayment = findViewById(R.id.imagepayment);
  70.  
  71.         ScrollView contentLayout = findViewById(R.id.contentLayout);
  72.         ProgressBar loadingProgressBar = findViewById(R.id.loadingProgressBar);
  73.         loadingProgressBar.setVisibility(View.VISIBLE);
  74.         contentLayout.setVisibility(View.GONE);
  75.  
  76.         loadingProgressBar.setVisibility(View.VISIBLE);
  77.         contentLayout.setVisibility(View.GONE);
  78.  
  79.         confirmButton = findViewById(R.id.confirmButton);
  80.         messageButton = findViewById(R.id.messageButton);
  81.         mAuth = FirebaseAuth.getInstance();
  82.         FirebaseUser currentUser = mAuth.getCurrentUser();
  83.         if (currentUser != null) {
  84.             currentUserId = currentUser.getUid();
  85.         }
  86.  
  87.  
  88.         Intent intent = getIntent();
  89.         ReservationInfoModel selectedReserve = (ReservationInfoModel) intent.getSerializableExtra("selectedReserve");
  90.         if (selectedReserve != null) {
  91.             String userId = selectedReserve.getUserId();
  92.  
  93.             fullNameTextView.setText("Full Name: " + selectedReserve.getFullName());
  94.             contactNumberTextView.setText(selectedReserve.getContactNumber());
  95.             emailTextView.setText(selectedReserve.getEmail());
  96.  
  97.             String reservationId = selectedReserve.getReservationId();
  98.             retrieveRecipientName(userId);
  99.             retrieveAndStartChatWithCurrentUserName(currentUserId);
  100.  
  101.             messageButton.setOnClickListener(new View.OnClickListener() {
  102.                 @Override
  103.                 public void onClick(View v) {
  104.                     Intent intent = new Intent(ReserveDetails.this, TouristHotelChat.class);
  105.                     intent.putExtra("recipientUserId", userId);
  106.                     intent.putExtra("recipientUserName", recipientName);
  107.                     intent.putExtra("currentUserName", currentUserName);
  108.  
  109.                     Log.d("ReserveDetails messageButton", "recipientUserId: " + userId);
  110.                     Log.d("ReserveDetails messageButton", "recipientUserName: " + recipientName);
  111.                     Log.d("ReserveDetails messageButton", "currentUserName: " + currentUserName);
  112.  
  113.                     startActivity(intent);
  114.                 }
  115.             });
  116.  
  117.             DatabaseReference reserveRef = FirebaseDatabase.getInstance().getReference().child("reservation_info").child(reservationId);
  118.             Button declineButton = findViewById(R.id.declineButton);
  119.             declineButton.setOnClickListener(new View.OnClickListener() {
  120.                 @Override
  121.                 public void onClick(View v) {
  122.                     AlertDialog.Builder builder = new AlertDialog.Builder(ReserveDetails.this);
  123.                     builder.setTitle("Decline Booking");
  124.                     builder.setMessage("Please provide a reason for declining:");
  125.  
  126.                     final EditText input = new EditText(ReserveDetails.this);
  127.                     builder.setView(input);
  128.  
  129.                     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
  130.                         @Override
  131.                         public void onClick(DialogInterface dialog, int which) {
  132.                             String declineReason = input.getText().toString();
  133.  
  134.                             DatabaseReference reserveRef = FirebaseDatabase.getInstance().getReference().child("reservation_info").child(reservationId);
  135.  
  136.                             Map<String, Object> updates = new HashMap<>();
  137.                             updates.put("isDeclined", true);
  138.                             updates.put("isConfirmed", false);
  139.                             updates.put("isPending", false);
  140.                             updates.put("declineReason", declineReason);
  141.  
  142.                             reserveRef.updateChildren(updates).addOnCompleteListener(new OnCompleteListener<Void>() {
  143.                                 @Override
  144.                                 public void onComplete(@NonNull Task<Void> task) {
  145.                                     if (task.isSuccessful()) {
  146.                                         Toast.makeText(ReserveDetails.this, "Booking declined successfully", Toast.LENGTH_SHORT).show();
  147.  
  148.                                         // Exit the current activity
  149.                                         finish();
  150.                                     } else {
  151.                                         Toast.makeText(ReserveDetails.this, "Failed to decline booking", Toast.LENGTH_SHORT).show();
  152.                                     }
  153.                                 }
  154.                             });
  155.                         }
  156.                     });
  157.  
  158.                     builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  159.                         @Override
  160.                         public void onClick(DialogInterface dialog, int which) {
  161.                             dialog.cancel();
  162.                         }
  163.                     });
  164.  
  165.                     builder.show();
  166.                 }
  167.             });
  168.  
  169.             reserveRef.addListenerForSingleValueEvent(new ValueEventListener() {
  170.                 @Override
  171.                 public void onDataChange(DataSnapshot dataSnapshot) {
  172.                     if (dataSnapshot.exists()) {
  173.                         touristUserId = dataSnapshot.child("userId").getValue(String.class);
  174.                         Log.d("ReserveDetails", "touristUserId" + touristUserId);
  175.                         String fullName = dataSnapshot.child("fullName").getValue(String.class);
  176.                         String reservationDate = dataSnapshot.child("reservationDate").getValue(String.class);
  177.                         String contactNumberDetail = dataSnapshot.child("contactNumber").getValue(String.class);
  178.                         String email = dataSnapshot.child("email").getValue(String.class);
  179.                         Integer person = dataSnapshot.child("customers").getValue(Integer.class);
  180.                         String GcashName = dataSnapshot.child("GcashName").getValue(String.class);
  181.                         String yGcashNumber = dataSnapshot.child("yGcashNumber").getValue(String.class);
  182.                         String referenceNumber = dataSnapshot.child("referenceNumber").getValue(String.class);
  183.                         String imageUrl = dataSnapshot.child("imageUrl").getValue(String.class);
  184.  
  185.  
  186.                         reserveDateTextView.setText(reservationDate);
  187.                         fullNameTextView.setText(fullName);
  188.                         contactNumberTextView.setText(contactNumberDetail);
  189.                         personTextView.setText(String.valueOf(person));
  190.                         gcashnum.setText(yGcashNumber);
  191.                         gcashname.setText(GcashName);
  192.                         refnumber.setText(referenceNumber);
  193.                         Picasso.get().load(imageUrl).into(imagepayment);
  194.  
  195.                         loadingProgressBar.setVisibility(View.GONE);
  196.                         contentLayout.setVisibility(View.VISIBLE);
  197.  
  198.                     }
  199.                 }
  200.  
  201.                 @Override
  202.                 public void onCancelled(DatabaseError databaseError) {
  203.                     Log.e("ReserveDetails", "Database error: " + databaseError.getMessage());
  204.                 }
  205.             });
  206.  
  207.             confirmButton.setOnClickListener(new View.OnClickListener() {
  208.                 @Override
  209.                 public void onClick(View v) {
  210.                     DatabaseReference reserveRef = FirebaseDatabase.getInstance().getReference().child("reservation_info").child(reservationId);
  211.  
  212.                     reserveRef.child("isConfirmed").setValue(true).addOnCompleteListener(new OnCompleteListener<Void>() {
  213.                         @Override
  214.                         public void onComplete(@NonNull Task<Void> task) {
  215.                             if (task.isSuccessful()) {
  216.                                 reserveRef.child("isPending").setValue(false);
  217.                                 Toast.makeText(ReserveDetails.this, "Booking confirmed successfully", Toast.LENGTH_SHORT).show();
  218.  
  219.                                 // Exit the current activity
  220.                                 finish();
  221.                             } else {
  222.                                 Toast.makeText(ReserveDetails.this, "Failed to confirm booking", Toast.LENGTH_SHORT).show();
  223.                             }
  224.                         }
  225.                     });
  226.                 }
  227.             });
  228.  
  229.         }
  230.     }
  231.     private void retrieveRecipientName(String userId) {
  232.         if (userId != null && !userId.isEmpty()) {
  233.             DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("users").child("Tourist").child(userId);
  234.             usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
  235.             @Override
  236.             public void onDataChange(DataSnapshot dataSnapshot) {
  237.                 if (dataSnapshot.exists()) {
  238.                     recipientName = dataSnapshot.child("name").getValue(String.class);
  239.                     Log.d("ReserveDetails", "Recipient Name: " + recipientName);
  240.                 }
  241.             }
  242.  
  243.             @Override
  244.             public void onCancelled(DatabaseError databaseError) {
  245.                 Log.e("ReserveDetails", "Recipient name retrieval cancelled: " + databaseError.getMessage());
  246.             }
  247.         });
  248.         } else {
  249.             Log.e("ReserveDetails", "userId is null or empty");
  250.         }
  251.     }
  252.     private void retrieveAndStartChatWithCurrentUserName(String currentUserId) {
  253.         if (currentUserId != null && !currentUserId.isEmpty()) {
  254.         DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("users").child("Restaurant").child(currentUserId);
  255.         Log.d("ReserveDetails", " User ref: " + usersRef);
  256.         usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
  257.             @Override
  258.             public void onDataChange(DataSnapshot dataSnapshot) {
  259.                 if (dataSnapshot.exists()) {
  260.                     currentUserName = dataSnapshot.child("name").getValue(String.class);
  261.                     Log.d("ReserveDetails", "Current User Name: " + currentUserName);
  262.  
  263.                 }
  264.             }
  265.  
  266.             @Override
  267.             public void onCancelled(DatabaseError databaseError) {
  268.                 Log.e("ReserveDetails", "Current user name retrieval cancelled: " + databaseError.getMessage());
  269.             }
  270.         });
  271.         } else {
  272.             Log.e("ReserveDetails", "currentUserId is null or empty");
  273.         }
  274.  
  275.     }
  276.  
  277.     public void goBack(View view) {
  278.         onBackPressed();
  279.     }
  280. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement