Advertisement
kitlolz012

Bookform with alert

Nov 27th, 2023
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 25.60 KB | Source Code | 0 0
  1. package com.example.gypsy;
  2.  
  3. import androidx.annotation.NonNull;
  4. import androidx.appcompat.app.AlertDialog;
  5. import androidx.appcompat.app.AppCompatActivity;
  6. import androidx.appcompat.widget.AppCompatButton;
  7.  
  8. import android.app.DatePickerDialog;
  9. import android.content.ClipData;
  10. import android.content.ClipboardManager;
  11. import android.content.Context;
  12. import android.content.DialogInterface;
  13. import android.content.Intent;
  14. import android.net.Uri;
  15. import android.os.AsyncTask;
  16. import android.os.Bundle;
  17. import android.util.Log;
  18. import android.view.View;
  19. import android.widget.ArrayAdapter;
  20. import android.widget.Button;
  21. import android.widget.EditText;
  22. import android.widget.ImageView;
  23. import android.widget.NumberPicker;
  24. import android.widget.ProgressBar;
  25. import android.widget.Spinner;
  26. import android.widget.TextView;
  27. import android.widget.Toast;
  28.  
  29. import com.google.firebase.auth.FirebaseAuth;
  30. import com.google.firebase.auth.FirebaseUser;
  31. import com.google.firebase.database.DataSnapshot;
  32. import com.google.firebase.database.DatabaseError;
  33. import com.google.firebase.database.DatabaseReference;
  34. import com.google.firebase.database.FirebaseDatabase;
  35. import com.google.firebase.database.ServerValue;
  36. import com.google.firebase.database.ValueEventListener;
  37. import com.google.firebase.storage.FirebaseStorage;
  38. import com.google.firebase.storage.StorageReference;
  39. import com.google.firebase.storage.UploadTask;
  40.  
  41. import java.text.ParseException;
  42. import java.text.SimpleDateFormat;
  43. import java.util.ArrayList;
  44. import java.util.Calendar;
  45. import java.util.Date;
  46. import java.util.HashMap;
  47. import java.util.List;
  48. import java.util.Locale;
  49. import java.util.Map;
  50.  
  51. public class BookForm extends AppCompatActivity {
  52.     private Spinner roomPreferenceSpinner;
  53.     private List<String> roomTypeList = new ArrayList<>();
  54.     private EditText fullNameET;
  55.     private EditText contactNumberET;
  56.     private EditText emailET;
  57.     private EditText checkInDateET;
  58.     private EditText checkOutDateET;
  59.     private EditText yourGcashNameET;
  60.     private EditText yourGcashNumberET;
  61.     private EditText referenceNumberET;
  62.     private Button submitButton;
  63.     private ImageView attachedImageView;
  64.     private static final int PICK_IMAGE_REQUEST = 1;
  65.     private Uri selectedImageUri;
  66.  
  67.     private Calendar selectedCheckInDate = Calendar.getInstance();
  68.     private Calendar selectedCheckOutDate = Calendar.getInstance();
  69.     private TextView adultsNumberPicker;
  70.     private int adultCount = 0;
  71.     private TextView childrenNumberPicker, reservefeeET;
  72.     private int childrenCount = 0;
  73.     private TextView gcashDepositNameET;
  74.     private TextView gcashDepositNumberET;
  75.     Object timestamp;
  76.     ImageView imageView;
  77.     TextView textView;
  78.  
  79.     @Override
  80.     protected void onCreate(Bundle savedInstanceState) {
  81.         super.onCreate(savedInstanceState);
  82.         setContentView(R.layout.activity_book_form);
  83.  
  84.         Intent intent = getIntent(); // kunin yung hotelId sa DynamicHotel para sa
  85.         String hotelId = intent.getStringExtra("hotelKey"); // personalized fields nila
  86.         Log.d("BookFormActivity", "hotelId: " + hotelId); // sa book info like roomtypes etc
  87.  
  88.         DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  89.         DatabaseReference roomPreferencesRef = databaseReference.child("hotels").child(hotelId).child("roomTypes");
  90.  
  91.         fullNameET = findViewById(R.id.fullNameET);
  92.         contactNumberET = findViewById(R.id.contactNumberET);
  93.         emailET = findViewById(R.id.emailET);
  94.         submitButton = findViewById(R.id.submitButton);
  95.         roomPreferenceSpinner = findViewById(R.id.roomPreferenceSpinner);
  96.         checkInDateET = findViewById(R.id.checkInDateET);
  97.         checkOutDateET = findViewById(R.id.checkOutDateET);
  98.         yourGcashNameET = findViewById(R.id.yourGcashNameET);
  99.         yourGcashNumberET = findViewById(R.id.yourGcashNumberET);
  100.         referenceNumberET = findViewById(R.id.referenceNumberET);
  101.         attachedImageView = findViewById(R.id.attachedImageView);
  102.         reservefeeET = findViewById(R.id.reservefeeET);
  103.  
  104.         imageView = findViewById(R.id.copyImageView);
  105.         textView = findViewById(R.id.gcashDepositNumberET);
  106.  
  107.         AlertDialog alertDialog = showTermsDialog();
  108.  
  109.         if (alertDialog != null && alertDialog.isShowing()) {
  110.             alertDialog.dismiss();
  111.         }
  112.  
  113.         imageView.setOnClickListener(new View.OnClickListener() {
  114.             @Override
  115.             public void onClick(View v) {
  116.                 ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
  117.                 ClipData clipData = ClipData.newPlainText("Copy",textView.getText().toString());
  118.                 clipboardManager.setPrimaryClip(clipData);
  119.                 Toast.makeText(BookForm.this, "Copied", Toast.LENGTH_SHORT).show();
  120.             }
  121.         });
  122.  
  123.  
  124.  
  125.  
  126.         ArrayAdapter<String> roomTypeAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, roomTypeList);
  127.         roomTypeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  128.  
  129.         roomPreferenceSpinner.setAdapter(roomTypeAdapter);
  130.  
  131.         adultsNumberPicker = findViewById(R.id.adultsNumberPicker);
  132.         childrenNumberPicker = findViewById(R.id.childrenNumberPicker);
  133.  
  134.  
  135.         checkInDateET.setOnClickListener(v -> {
  136.             selectedCheckInDate = Calendar.getInstance();
  137.             showDatePickerDialog(selectedCheckInDate, Calendar.getInstance());
  138.         });
  139.  
  140.         checkOutDateET.setOnClickListener(v -> {
  141.             selectedCheckOutDate = Calendar.getInstance();
  142.             showDatePickerDialog(selectedCheckOutDate, selectedCheckInDate);
  143.         });
  144.  
  145.         roomPreferencesRef.addListenerForSingleValueEvent(new ValueEventListener() {
  146.             @Override
  147.             public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  148.                 if (dataSnapshot.exists()) {
  149.                     roomTypeList.clear();
  150.                     for (DataSnapshot preferenceSnapshot : dataSnapshot.getChildren()) {
  151.                         String roomPreference = preferenceSnapshot.getValue(String.class);
  152.                         roomTypeList.add(roomPreference);
  153.                     }
  154.                     roomTypeAdapter.notifyDataSetChanged();
  155.                 }
  156.             }
  157.  
  158.             @Override
  159.             public void onCancelled(@NonNull DatabaseError databaseError) {
  160.                 Log.e("BookForm", "Error: " + databaseError.getMessage());
  161.             }
  162.         });
  163.  
  164.         gcashDepositNameET = findViewById(R.id.gcashDepositNameET);
  165.         gcashDepositNumberET = findViewById(R.id.gcashDepositNumberET);
  166.         reservefeeET = findViewById(R.id.reservefeeET);
  167.  
  168.  
  169.         DatabaseReference hotelRef = databaseReference.child("hotels").child(hotelId);
  170.         hotelRef.addListenerForSingleValueEvent(new ValueEventListener() {
  171.             @Override
  172.             public void onDataChange(@NonNull DataSnapshot hotelSnapshot) {
  173.                 if (hotelSnapshot.exists()) {
  174.                     String gcashNumber = hotelSnapshot.child("gcashNumber").getValue(String.class);
  175.                     String gcashName = hotelSnapshot.child("gcashName").getValue(String.class);
  176.                     String resrevefee = hotelSnapshot.child("reservationFee").getValue(String.class);
  177.  
  178.  
  179.                     if (gcashDepositNameET != null && gcashDepositNumberET != null) {
  180.                         gcashDepositNumberET.setText(gcashNumber);
  181.                         gcashDepositNameET.setText(gcashName);
  182.                         reservefeeET.setText(resrevefee);
  183.                     } else {
  184.                         Log.e("BookForm", "gcashDepositNameET or gcashDepositNumberET is null");
  185.                     }
  186.                 } else {
  187.                     Log.e("BookForm", "Hotel not found with ID: " + hotelId);
  188.                 }
  189.             }
  190.  
  191.             @Override
  192.             public void onCancelled(@NonNull DatabaseError databaseError) {
  193.                 Log.e("BookeForm", "Hotel database error: " + databaseError.getMessage());
  194.             }
  195.         });
  196.  
  197.  
  198.         submitButton.setOnClickListener(new View.OnClickListener() {
  199.             @Override
  200.             public void onClick(View v) {
  201.                 if (allFields()) {
  202.                     FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
  203.  
  204.                     if (currentUser != null) {
  205.                         String enteredEmail = emailET.getText().toString();
  206.                         String registeredEmail = currentUser.getEmail();
  207.  
  208.                         if (enteredEmail.equals(registeredEmail)) {
  209.                             // Email is correct, continue with the submission
  210.  
  211.                             // Assuming you have a reference to your loadingProgressBar
  212.                             ProgressBar loadingProgressBar = findViewById(R.id.loadingProgressBar);
  213.  
  214.                             // Show loading indicator
  215.                             submitButton.setVisibility(View.GONE);
  216.                             loadingProgressBar.setVisibility(View.VISIBLE);
  217.  
  218.                             new AsyncTask<Void, Void, Void>() {
  219.                                 @Override
  220.                                 protected Void doInBackground(Void... params) {
  221.                                     try {
  222.                                         Thread.sleep(5000); // Simulating a 2-second delay
  223.                                     } catch (InterruptedException e) {
  224.                                         e.printStackTrace();
  225.                                     }
  226.                                     return null;
  227.                                 }
  228.  
  229.                                 @Override
  230.                                 protected void onPostExecute(Void result) {
  231.                                     // After the form submission is complete, hide the loading indicator
  232.                                     loadingProgressBar.setVisibility(View.GONE);
  233.                                     submitButton.setVisibility(View.VISIBLE);
  234.  
  235.                                     // Continue with the form submission
  236.                                     String userId = currentUser.getUid();
  237.                                     String fullName = fullNameET.getText().toString();
  238.                                     String checkInDate = checkInDateET.getText().toString();
  239.                                     String checkOutDate = checkOutDateET.getText().toString();
  240.                                     int adults = Integer.parseInt(adultsNumberPicker.getText().toString());
  241.                                     int children = Integer.parseInt(childrenNumberPicker.getText().toString());
  242.                                     String contactNumber = contactNumberET.getText().toString();
  243.                                     String email = emailET.getText().toString();
  244.                                     String roomPreference = roomPreferenceSpinner.getSelectedItem().toString();
  245.                                     String yourGcashName = yourGcashNameET.getText().toString();
  246.                                     String yourGcashNumber = yourGcashNumberET.getText().toString();
  247.                                     String referenceNumber = referenceNumberET.getText().toString();
  248.  
  249.                                     canSubmitBooking(userId, hotelId, fullName, checkInDate, checkOutDate, adults,
  250.                                             children, contactNumber, email, roomPreference, yourGcashName, yourGcashNumber, referenceNumber);
  251.  
  252.  
  253.  
  254.                                     finish();
  255.                                     showProfileCheckAlert();
  256.                                 }
  257.                             }.execute();
  258.  
  259.                             showProfileCheckAlert();
  260.  
  261.                         } else {
  262.                             // Display an error message because the entered email is not the same as the registered email.
  263.                             Toast.makeText(BookForm.this, "Please enter the email associated with your account.", Toast.LENGTH_SHORT).show();
  264.                         }
  265.                     } else {
  266.                         Log.e("BookForm", "User is not authenticated");
  267.                     }
  268.                 } else {
  269.                     Toast.makeText(BookForm.this, "Please fill in all required fields.", Toast.LENGTH_SHORT).show();
  270.                 }
  271.             }
  272.         });
  273.  
  274.  
  275.         Button attachPhotoButton = findViewById(R.id.attachPhotoButton);
  276.         attachPhotoButton.setOnClickListener(new View.OnClickListener() {
  277.             @Override
  278.             public void onClick(View v) {
  279.                 openFileChooser();
  280.             }
  281.         });
  282.  
  283.     }
  284.  
  285.  
  286.  
  287.  
  288.     public void incrementValue(View view) {
  289.         if (adultCount < 9) {
  290.             adultCount++;
  291.             updateAdultsCount();
  292.         }
  293.     }
  294.     public void decrementValue(View view) {
  295.         if (adultCount > 0) {
  296.             adultCount--;
  297.             updateAdultsCount();
  298.         }
  299.     }
  300.     private void updateAdultsCount() {
  301.         adultsNumberPicker.setText(String.valueOf(adultCount));
  302.     }
  303.     public void incrementValue2(View view) {
  304.         if (childrenCount < 9) {
  305.             childrenCount++;
  306.             updateChildrenCount();
  307.         }
  308.     }
  309.     public void decrementValue2(View view) {
  310.         if (childrenCount > 0) {
  311.             childrenCount--;
  312.             updateChildrenCount();
  313.         }
  314.     }
  315.     private void updateChildrenCount() {
  316.         childrenNumberPicker.setText(String.valueOf(childrenCount));
  317.     }
  318.  
  319.     private void openFileChooser() {
  320.         Intent intent = new Intent();
  321.         intent.setType("image/*");
  322.         intent.setAction(Intent.ACTION_GET_CONTENT);
  323.         startActivityForResult(intent, PICK_IMAGE_REQUEST);
  324.     }
  325.  
  326.     @Override
  327.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  328.         super.onActivityResult(requestCode, resultCode, data);
  329.  
  330.         if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
  331.             selectedImageUri = data.getData();
  332.             attachedImageView.setImageURI(selectedImageUri);
  333.             attachedImageView.setVisibility(View.VISIBLE);
  334.         }
  335.     }
  336.  
  337.     private void showProfileCheckAlert() {
  338.         AlertDialog.Builder builder = new AlertDialog.Builder(BookForm.this);
  339.         builder.setTitle("Booking Submitted");
  340.         //palitan nalang ung message kung ano angkop
  341.         builder.setMessage("Your booking has been submitted. Please check always your profile for the booking status.");
  342.         builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
  343.             public void onClick(DialogInterface dialog, int which) {
  344.                 // Do nothing here as the user will be redirected to the profile
  345.             }
  346.         });
  347.         builder.show();
  348.     }
  349.  
  350.  
  351.     private void showDatePickerDialog(final Calendar selectedDate, final Calendar minDate) {
  352.         DatePickerDialog datePickerDialog = new DatePickerDialog(
  353.                 BookForm.this,
  354.                 (view, year, monthOfYear, dayOfMonth) -> {
  355.                     selectedDate.set(year, monthOfYear, dayOfMonth);
  356.  
  357.                     Calendar currentDate = Calendar.getInstance();
  358.                     currentDate.set(Calendar.HOUR_OF_DAY, 0);
  359.                     currentDate.set(Calendar.MINUTE, 0);
  360.                     currentDate.set(Calendar.SECOND, 0);
  361.                     currentDate.set(Calendar.MILLISECOND, 0);
  362.  
  363.                     if (!selectedDate.before(currentDate)) {
  364.                         updateDateField(selectedDate);
  365.                     } else {
  366.                         Toast.makeText(getApplicationContext(), "Please select a valid date", Toast.LENGTH_SHORT).show();
  367.                     }
  368.                 },
  369.                 selectedDate.get(Calendar.YEAR),
  370.                 selectedDate.get(Calendar.MONTH),
  371.                 selectedDate.get(Calendar.DAY_OF_MONTH)
  372.         );
  373.  
  374.         datePickerDialog.getDatePicker().setMinDate(minDate.getTimeInMillis());
  375.  
  376.         datePickerDialog.show();
  377.     }
  378.     private void updateDateField(Calendar selectedDate) {
  379.         SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy", Locale.getDefault());
  380.  
  381.         // Update the corresponding EditText field
  382.         if (selectedDate.equals(selectedCheckInDate)) {
  383.             checkInDateET.setText(dateFormat.format(selectedDate.getTime()));
  384.         } else if (selectedDate.equals(selectedCheckOutDate)) {
  385.             checkOutDateET.setText(dateFormat.format(selectedDate.getTime()));
  386.         }
  387.     }
  388.  
  389.  
  390.  
  391.     private boolean allFields() {
  392.         return !fullNameET.getText().toString().isEmpty() &&
  393.                 !contactNumberET.getText().toString().isEmpty() &&
  394.                 !emailET.getText().toString().isEmpty() &&
  395.                 !checkInDateET.getText().toString().isEmpty() &&
  396.                 !checkOutDateET.getText().toString().isEmpty() &&
  397.                 !roomPreferenceSpinner.getSelectedItem().toString().isEmpty() &&
  398.                 !yourGcashNameET.getText().toString().isEmpty() &&
  399.                 !yourGcashNumberET.getText().toString().isEmpty() &&
  400.                 !referenceNumberET.getText().toString().isEmpty() &&
  401.                 selectedImageUri != null;
  402.     }
  403.  
  404.     private void canSubmitBooking(String userId, String hotelId, String fullName, String checkInDate, String checkOutDate,
  405.                                   int adults, int children, String contactNumber, String email, String roomPreference,
  406.                                   String yourGcashName, String yourGcashNumber, String referenceNumber) {
  407.  
  408.         DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  409.  
  410.         DatabaseReference userBookingsRef = databaseReference.child("booking_info");
  411.         userBookingsRef.orderByChild("userId").equalTo(userId).addListenerForSingleValueEvent(new ValueEventListener() {
  412.             @Override
  413.             public void onDataChange(DataSnapshot dataSnapshot) {
  414.                 boolean canSubmit = true;
  415.                 for (DataSnapshot bookingSnapshot : dataSnapshot.getChildren()) {
  416.                     String existingCheckInDate = bookingSnapshot.child("checkInDate").getValue(String.class);
  417.                     String existingCheckOutDate = bookingSnapshot.child("checkOutDate").getValue(String.class);
  418.  
  419.                     SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
  420.                     Date currentDate = new Date();
  421.                     Date existingCheckIn = null;
  422.                     Date existingCheckOut = null;
  423.  
  424.                     try {
  425.                         existingCheckIn = sdf.parse(existingCheckInDate);
  426.                         existingCheckOut = sdf.parse(existingCheckOutDate);
  427.                     } catch (ParseException e) {
  428.                         e.printStackTrace();
  429.                     }
  430.                     if (existingCheckIn != null && existingCheckOut != null) {
  431.                         if (!(existingCheckOut.before(existingCheckIn) && existingCheckIn.before(existingCheckOut) ||
  432.                                 existingCheckIn.after(existingCheckOut) && existingCheckIn.after(existingCheckIn))) {
  433.                             canSubmit = false;
  434.                             break;
  435.                         }
  436.                     }
  437.  
  438.                     if (existingCheckOut != null && currentDate.before(existingCheckOut)) {
  439.                         canSubmit = false;
  440.                         break;
  441.                     }
  442.                 }
  443.  
  444.                 if (canSubmit) {
  445.                     saveBooking(userId, hotelId, fullName, checkInDate, checkOutDate, adults, children, contactNumber, email, roomPreference, yourGcashName, yourGcashNumber, referenceNumber, timestamp);
  446.                 } else {
  447.                     Toast.makeText(BookForm.this, "You cannot submit a new booking until your current booking has ended.", Toast.LENGTH_SHORT).show();
  448.                 }
  449.             }
  450.  
  451.             @Override
  452.             public void onCancelled(DatabaseError databaseError) {
  453.                 Log.e("BookForm", "Database error: " + databaseError.getMessage());
  454.             }
  455.         });
  456.     }
  457.  
  458.     private boolean isDateRangeOverlap(String start1, String end1, String start2, String end2) {
  459.         try {
  460.             SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
  461.             Date startDate1 = sdf.parse(start1);
  462.             Date endDate1 = sdf.parse(end1);
  463.             Date startDate2 = sdf.parse(start2);
  464.             Date endDate2 = sdf.parse(end2);
  465.  
  466.             return !(endDate1.before(startDate2) || endDate2.before(startDate1));
  467.         } catch (ParseException e) {
  468.             e.printStackTrace();
  469.             return false;
  470.         }
  471.     }
  472.  
  473.  
  474.     private void saveBooking(String userId, String hotelId, String fullName, String checkInDate, String checkOutDate,
  475.                              int adults, int children, String contactNumber, String email, String roomPreference,
  476.                              String yourGcashName, String yourGcashNumber, String referenceNumber, Object timestamp) {
  477.  
  478.         DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  479.         DatabaseReference hotelRef = databaseReference.child("hotels").child(hotelId).child("user_id");
  480.         Log.d("BookForm", "hotelref: " + hotelRef);
  481.  
  482.         hotelRef.addListenerForSingleValueEvent(new ValueEventListener() {
  483.             @Override
  484.             public void onDataChange(@NonNull DataSnapshot hotelDataSnapshot) {
  485.                 if (hotelDataSnapshot.exists()) {
  486.                     String hotelUserId = hotelDataSnapshot.getValue(String.class);
  487.                     Log.d("BookForm", "HotelUserId: " + hotelUserId);
  488.  
  489.                     DatabaseReference bookingsRef = databaseReference.child("booking_info").push();
  490.                     String bookingId = bookingsRef.getKey();
  491.  
  492.                     bookingsRef.child("isConfirmed").setValue(false);
  493.                     bookingsRef.child("isPending").setValue(true);
  494.                     bookingsRef.child("isDeclined").setValue(false);
  495.  
  496.                     bookingsRef.child("userId").setValue(userId);
  497.                     bookingsRef.child("fullName").setValue(fullName);
  498.                     bookingsRef.child("checkInDate").setValue(checkInDate);
  499.                     bookingsRef.child("checkOutDate").setValue(checkOutDate);
  500.                     bookingsRef.child("adults").setValue(adults);
  501.                     bookingsRef.child("children").setValue(children);
  502.                     bookingsRef.child("contactNumber").setValue(contactNumber);
  503.                     bookingsRef.child("email").setValue(email);
  504.                     bookingsRef.child("roomPreference").setValue(roomPreference);
  505.                     bookingsRef.child("GcashName").setValue(yourGcashName);
  506.                     bookingsRef.child("yGcashNumber").setValue(yourGcashNumber);
  507.                     bookingsRef.child("referenceNumber").setValue(referenceNumber);
  508.                     bookingsRef.child("hotelUserId").setValue(hotelUserId);
  509.  
  510.                     bookingsRef.child("timestamp").setValue(ServerValue.TIMESTAMP);
  511.  
  512.  
  513.                     if (selectedImageUri != null) {
  514.                         saveBookingWithImage(bookingsRef, userId, hotelId);
  515.                     } else {
  516.                         Log.d("BookForm", "Booking data saved successfully.");
  517.                         Toast.makeText(BookForm.this, "Booking submitted successfully.", Toast.LENGTH_SHORT).show();
  518.                     }
  519.                 }
  520.             }
  521.  
  522.             @Override
  523.             public void onCancelled(@NonNull DatabaseError hotelDatabaseError) {
  524.                 Log.e("BookForm", "Hotel database error: " + hotelDatabaseError.getMessage());
  525.             }
  526.         });
  527.  
  528.     }
  529.  
  530.     private void saveBookingWithImage(DatabaseReference bookingsRef, String userId, String hotelId) {
  531.         StorageReference storageReference = FirebaseStorage.getInstance().getReference();
  532.         StorageReference imageRef = storageReference.child("payment_receipts/" + userId + "/" + hotelId + "/image.jpg");
  533.  
  534.         imageRef.putFile(selectedImageUri)
  535.                 .addOnSuccessListener(taskSnapshot -> {
  536.                     imageRef.getDownloadUrl().addOnSuccessListener(downloadUri -> {
  537.                         String imageUrl = downloadUri.toString();
  538.                         bookingsRef.child("imageUrl").setValue(imageUrl);
  539.                         Log.d("BookForm", "Booking data with image URL saved successfully.");
  540.                         Toast.makeText(this, "Booking submitted successfully.", Toast.LENGTH_SHORT).show();
  541.                     });
  542.                 })
  543.                 .addOnFailureListener(e -> {
  544.                     Log.e("BookForm", "Image upload failed: " + e.getMessage());
  545.                     Toast.makeText(this, "Failed to upload image.", Toast.LENGTH_SHORT).show();
  546.                 });
  547.     }
  548.  
  549.  
  550.  
  551.     private AlertDialog showTermsDialog() {
  552.         AlertDialog.Builder builder = new AlertDialog.Builder(this);
  553.         View customView = getLayoutInflater().inflate(R.layout.dialog_payment, null);
  554.         builder.setView(customView);
  555.  
  556.         AlertDialog alertDialog = builder.create();
  557.  
  558.         AppCompatButton understandButton = customView.findViewById(R.id.understandButton);
  559.         understandButton.setOnClickListener(new View.OnClickListener() {
  560.             @Override
  561.             public void onClick(View v) {
  562.                 alertDialog.dismiss();
  563.             }
  564.         });
  565.  
  566.         alertDialog.show();
  567.  
  568.         return alertDialog;
  569.     }
  570.  
  571.  
  572.  
  573.     public void goBack(View view) {
  574.         onBackPressed();
  575.     }
  576. }
  577.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement