Advertisement
kitlolz012

BookingDetail.java

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