Advertisement
kitlolz012

BookForm.Java(With attach Images na )

Oct 4th, 2023
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.33 KB | Source Code | 0 0
  1. package com.example.gypsy;
  2.  
  3. import androidx.annotation.NonNull;
  4. import androidx.appcompat.app.AppCompatActivity;
  5.  
  6. import android.app.DatePickerDialog;
  7. import android.content.Intent;
  8. import android.net.Uri;
  9. import android.os.Bundle;
  10. import android.util.Log;
  11. import android.view.View;
  12. import android.widget.ArrayAdapter;
  13. import android.widget.Button;
  14. import android.widget.EditText;
  15. import android.widget.ImageView;
  16. import android.widget.NumberPicker;
  17. import android.widget.Spinner;
  18. import android.widget.Toast;
  19.  
  20. import com.google.firebase.auth.FirebaseAuth;
  21. import com.google.firebase.auth.FirebaseUser;
  22. import com.google.firebase.database.DataSnapshot;
  23. import com.google.firebase.database.DatabaseError;
  24. import com.google.firebase.database.DatabaseReference;
  25. import com.google.firebase.database.FirebaseDatabase;
  26. import com.google.firebase.database.ValueEventListener;
  27. import com.google.firebase.storage.FirebaseStorage;
  28. import com.google.firebase.storage.StorageReference;
  29. import com.google.firebase.storage.UploadTask;
  30. import com.google.android.gms.tasks.OnFailureListener;
  31. import com.google.android.gms.tasks.OnSuccessListener;
  32.  
  33. import java.util.ArrayList;
  34. import java.util.Calendar;
  35. import java.util.List;
  36.  
  37. public class BookForm extends AppCompatActivity {
  38.     private Spinner roomPreferenceSpinner;
  39.     private List<String> roomTypeList = new ArrayList<>();
  40.     private EditText fullNameET;
  41.     private EditText contactNumberET;
  42.     private EditText emailET;
  43.     private EditText checkInDateET;
  44.     private EditText checkOutDateET;
  45.     private NumberPicker adultsNumberPicker;
  46.     private NumberPicker childrenNumberPicker;
  47.     private EditText yourGcashNameET;
  48.     private EditText yourGcashNumberET;
  49.     private EditText referenceNumberET;
  50.     private Button submitButton;
  51.     private ImageView attachedImageView;
  52.     private static final int PICK_IMAGE_REQUEST = 1;
  53.     private Uri selectedImageUri; // To store the selected image URI
  54.  
  55.     @Override
  56.     protected void onCreate(Bundle savedInstanceState) {
  57.         super.onCreate(savedInstanceState);
  58.         setContentView(R.layout.activity_book_form);
  59.  
  60.         Intent intent = getIntent(); // kunin yung hotelId sa DynamicHotel para sa
  61.         String hotelId = intent.getStringExtra("hotelKey"); // personalized fields nila
  62.         Log.d("BookFormActivity", "hotelId: " + hotelId); // sa book info like roomtypes etc
  63.  
  64.         DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  65.         DatabaseReference roomPreferencesRef = databaseReference.child("hotels").child(hotelId).child("roomTypes");
  66.  
  67.         fullNameET = findViewById(R.id.fullNameET);
  68.         contactNumberET = findViewById(R.id.contactNumberET);
  69.         emailET = findViewById(R.id.emailET);
  70.         submitButton = findViewById(R.id.submitButton);
  71.         roomPreferenceSpinner = findViewById(R.id.roomPreferenceSpinner);
  72.         checkInDateET = findViewById(R.id.checkInDateET);
  73.         checkOutDateET = findViewById(R.id.checkOutDateET);
  74.         yourGcashNameET = findViewById(R.id.yourGcashNameET);
  75.         yourGcashNumberET = findViewById(R.id.yourGcashNumberET);
  76.         referenceNumberET = findViewById(R.id.referenceNumberET);
  77.         attachedImageView = findViewById(R.id.attachedImageView);
  78.  
  79.         ArrayAdapter<String> roomTypeAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, roomTypeList); // list string ng mga items
  80.         roomTypeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  // built in layout ni AS para sa dropdown selection
  81.  
  82.         roomPreferenceSpinner.setAdapter(roomTypeAdapter);
  83.  
  84.         adultsNumberPicker = findViewById(R.id.adultsNumberPicker);
  85.         childrenNumberPicker = findViewById(R.id.childrenNumberPicker);
  86.         adultsNumberPicker.setMinValue(0);
  87.         adultsNumberPicker.setMaxValue(10);
  88.         childrenNumberPicker.setMinValue(0);
  89.         childrenNumberPicker.setMaxValue(10);
  90.  
  91.         checkInDateET.setOnClickListener(new View.OnClickListener() {
  92.             @Override
  93.             public void onClick(View v) {
  94.                 showDatePickerDialog(checkInDateET);
  95.             }
  96.         });
  97.         checkOutDateET.setOnClickListener(new View.OnClickListener() {
  98.             @Override
  99.             public void onClick(View v) {
  100.                 showDatePickerDialog(checkOutDateET);
  101.             }
  102.         });
  103.  
  104.         roomPreferencesRef.addListenerForSingleValueEvent(new ValueEventListener() {
  105.             @Override
  106.             public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  107.                 if (dataSnapshot.exists()) { // then loop para mag iterate sa children ng DataSnapshot
  108.                     for (DataSnapshot preferenceSnapshot : dataSnapshot.getChildren()) {
  109.                         String roomPreference = preferenceSnapshot.getValue(String.class);
  110.                         roomTypeList.add(roomPreference);
  111.                     }
  112.                     roomTypeAdapter.notifyDataSetChanged();
  113.                 }
  114.             }
  115.  
  116.             @Override
  117.             public void onCancelled(@NonNull DatabaseError databaseError) {
  118.                 Log.e("BookForm", "error" + databaseError.getMessage());
  119.             }
  120.         });
  121.  
  122.         submitButton.setOnClickListener(new View.OnClickListener() {
  123.             @Override
  124.             public void onClick(View v) {
  125.                 if (allFields()) {
  126.                     FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
  127.  
  128.                     if (currentUser != null) {
  129.                         String userId = currentUser.getUid();
  130.                         String fullName = fullNameET.getText().toString();
  131.                         String checkInDate = checkInDateET.getText().toString();
  132.                         String checkOutDate = checkOutDateET.getText().toString();
  133.                         int adults = adultsNumberPicker.getValue();
  134.                         int children = childrenNumberPicker.getValue();
  135.                         String contactNumber = contactNumberET.getText().toString();
  136.                         String email = emailET.getText().toString();
  137.                         String roomPreference = roomPreferenceSpinner.getSelectedItem().toString();
  138.                         String yourGcashName = yourGcashNameET.getText().toString();
  139.                         String yourGcashNumber = yourGcashNumberET.getText().toString();
  140.                         String referenceNumber = referenceNumberET.getText().toString();
  141.  
  142.                         // Save the booking data, including the image
  143.                         save(userId, hotelId, fullName, checkInDate, checkOutDate,
  144.                                 adults, children, contactNumber, email, roomPreference,
  145.                                 yourGcashName, yourGcashNumber, referenceNumber);
  146.  
  147.                         Toast.makeText(BookForm.this, "Booking submitted.", Toast.LENGTH_SHORT).show();
  148.                     } else {
  149.                         Log.e("BookForm", "User is not authenticated");
  150.                     }
  151.                 } else {
  152.                     Toast.makeText(BookForm.this, "Please fill in all required fields.", Toast.LENGTH_SHORT).show();
  153.                 }
  154.             }
  155.         });
  156.  
  157.         // Attach an OnClickListener to the "Attach Photo" button
  158.         Button attachPhotoButton = findViewById(R.id.attachPhotoButton);
  159.         attachPhotoButton.setOnClickListener(new View.OnClickListener() {
  160.             @Override
  161.             public void onClick(View v) {
  162.                 openFileChooser();
  163.             }
  164.         });
  165.     }
  166.  
  167.     // Open the file chooser to select an image
  168.     private void openFileChooser() {
  169.         Intent intent = new Intent();
  170.         intent.setType("image/*");
  171.         intent.setAction(Intent.ACTION_GET_CONTENT);
  172.         startActivityForResult(intent, PICK_IMAGE_REQUEST);
  173.     }
  174.  
  175.     // Handle the selected image
  176.     @Override
  177.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  178.         super.onActivityResult(requestCode, resultCode, data);
  179.  
  180.         if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
  181.             selectedImageUri = data.getData();
  182.             attachedImageView.setImageURI(selectedImageUri);
  183.             attachedImageView.setVisibility(View.VISIBLE);
  184.         }
  185.     }
  186.  
  187.     // Save booking data and the attached image to Firebase
  188.     private void save(String userId, String hotelId, String fullName, String checkInDate, String checkOutDate,
  189.                       int adults, int children, String contactNumber, String email, String roomPreference,
  190.                       String yourGcashName, String yourGcashNumber, String referenceNumber) {
  191.         FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
  192.  
  193.         if (currentUser != null) {
  194.             String userType = "Tourist"; // select yung user type which is tourist
  195.             //  kukunin yung name for Tourist user type
  196.             String userPath = "users/" + userType + "/" + currentUser.getUid() + "/name";
  197.  
  198.             DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  199.             DatabaseReference userRef = databaseReference.child(userPath);
  200.             userRef.addListenerForSingleValueEvent(new ValueEventListener() {
  201.                 @Override
  202.                 public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  203.                     if (dataSnapshot.exists()) {
  204.                         String userName = dataSnapshot.getValue(String.class);
  205.  
  206.                         DatabaseReference hotelRef = databaseReference.child("hotels").child(hotelId).child("user_id");
  207.                         hotelRef.addListenerForSingleValueEvent(new ValueEventListener() {
  208.                             @Override
  209.                             public void onDataChange(@NonNull DataSnapshot hotelDataSnapshot) {
  210.                                 if (hotelDataSnapshot.exists()) {
  211.                                     String hotelUserId = hotelDataSnapshot.getValue(String.class);
  212.  
  213.                                     // Store the image in Firebase Storage (replace "dummy_path" with your actual storage path)
  214.                                     if (selectedImageUri != null) {
  215.                                         StorageReference storageReference = FirebaseStorage.getInstance().getReference();
  216.                                         // replace "dummy_path" with your actual storage path
  217.                                         StorageReference imageRef = storageReference.child("dummy_path/" + userId + "/" + hotelId + "/image.jpg");
  218.  
  219.                                         imageRef.putFile(selectedImageUri)
  220.                                                 .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  221.                                                     @Override
  222.                                                     public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  223.                                                         // Image uploaded successfully, you can save its download URL if needed
  224.                                                         // Uri downloadUrl = taskSnapshot.getDownloadUrl();
  225.  
  226.                                                         Log.d("BookForm", "Image uploaded successfully");
  227.                                                         // Continue with saving other booking data to Firebase
  228.                                                         // ...
  229.  
  230.                                                         // Display a success message to the user
  231.                                                         Toast.makeText(BookForm.this, "Booking submitted.", Toast.LENGTH_SHORT).show();
  232.                                                     }
  233.                                                 })
  234.                                                 .addOnFailureListener(new OnFailureListener() {
  235.                                                     @Override
  236.                                                     public void onFailure(@NonNull Exception e) {
  237.                                                         Log.e("BookForm", "Image upload failed: " + e.getMessage());
  238.                                                         // Handle image upload failure here
  239.                                                     }
  240.                                                 });
  241.                                     }
  242.  
  243.                                     // store na under booking_info and generate ng unique id
  244.                                     DatabaseReference bookingsRef = databaseReference.child("booking_info").push();
  245.                                     String bookingId = bookingsRef.getKey();
  246.  
  247.                                     bookingsRef.child("userId").setValue(userId);
  248.                                     bookingsRef.child("fullName").setValue(fullName);
  249.                                     bookingsRef.child("checkInDate").setValue(checkInDate);
  250.                                     bookingsRef.child("checkOutDate").setValue(checkOutDate);
  251.                                     bookingsRef.child("adults").setValue(adults);
  252.                                     bookingsRef.child("children").setValue(children);
  253.                                     bookingsRef.child("contactNumber").setValue(contactNumber);
  254.                                     bookingsRef.child("email").setValue(email);
  255.                                     bookingsRef.child("roomPreference").setValue(roomPreference);
  256.                                     bookingsRef.child("yourGcashName").setValue(yourGcashName);
  257.                                     bookingsRef.child("yourGcashNumber").setValue(yourGcashNumber);
  258.                                     bookingsRef.child("referenceNumber").setValue(referenceNumber);
  259.                                     bookingsRef.child("userName").setValue(userName);
  260.                                     bookingsRef.child("hotelUserId").setValue(hotelUserId);
  261.  
  262.                                     Log.d("BookForm", "Booking data saved");
  263.                                 }
  264.                             }
  265.  
  266.                             @Override
  267.                             public void onCancelled(@NonNull DatabaseError hotelDatabaseError) {
  268.                                 Log.e("BookForm", "Hotel database error: " + hotelDatabaseError.getMessage());
  269.                             }
  270.                         });
  271.                     } else {
  272.                         Log.e("BookForm", "User data does not exist in the database");
  273.                     }
  274.                 }
  275.  
  276.                 @Override
  277.                 public void onCancelled(@NonNull DatabaseError databaseError) {
  278.                     Log.e("BookForm", "Database error: " + databaseError.getMessage());
  279.                 }
  280.             });
  281.         } else {
  282.             Log.e("BookForm", "User is not authenticated");
  283.         }
  284.     }
  285.  
  286.     private void showDatePickerDialog(final EditText editText) {
  287.         final Calendar calendar = Calendar.getInstance();
  288.         int year = calendar.get(Calendar.YEAR);
  289.         int month = calendar.get(Calendar.MONTH);
  290.         int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
  291.  
  292.         DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
  293.             @Override
  294.             public void onDateSet(android.widget.DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  295.                 // Adjust month index and set the selected date in the EditText
  296.                 String selectedDate = (monthOfYear + 1) + "/" + dayOfMonth + "/" + year;
  297.                 editText.setText(selectedDate);
  298.             }
  299.         }, year, month, dayOfMonth);
  300.  
  301.         datePickerDialog.show();
  302.     }
  303.  
  304.     private boolean allFields() {
  305.         return !fullNameET.getText().toString().isEmpty() &&
  306.                 !contactNumberET.getText().toString().isEmpty() &&
  307.                 !emailET.getText().toString().isEmpty() &&
  308.                 !checkInDateET.getText().toString().isEmpty() &&
  309.                 !checkOutDateET.getText().toString().isEmpty() &&
  310.                 !roomPreferenceSpinner.getSelectedItem().toString().isEmpty() &&
  311.                 !yourGcashNameET.getText().toString().isEmpty() &&
  312.                 !yourGcashNumberET.getText().toString().isEmpty() &&
  313.                 !referenceNumberET.getText().toString().isEmpty();
  314.     }
  315. }
  316.  
Tags: Android
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement