Advertisement
kitlolz012

BookForm.Java(No attach Images )

Oct 4th, 2023
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.09 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.os.Bundle;
  9. import android.util.Log;
  10. import android.view.View;
  11. import android.widget.ArrayAdapter;
  12. import android.widget.Button;
  13. import android.widget.EditText;
  14. import android.widget.NumberPicker;
  15. import android.widget.Spinner;
  16. import android.widget.Toast;
  17.  
  18. import com.google.firebase.auth.FirebaseAuth;
  19. import com.google.firebase.auth.FirebaseUser;
  20. import com.google.firebase.database.DataSnapshot;
  21. import com.google.firebase.database.DatabaseError;
  22. import com.google.firebase.database.DatabaseReference;
  23. import com.google.firebase.database.FirebaseDatabase;
  24. import com.google.firebase.database.ValueEventListener;
  25.  
  26. import java.util.ArrayList;
  27. import java.util.Calendar;
  28. import java.util.List;
  29.  
  30. public class BookForm extends AppCompatActivity {
  31.     private Spinner roomPreferenceSpinner;
  32.     private List<String> roomTypeList = new ArrayList<>();
  33.     private EditText fullNameET;
  34.     private EditText contactNumberET;
  35.     private EditText emailET;
  36.     private EditText checkInDateET;
  37.     private EditText checkOutDateET;
  38.     private NumberPicker adultsNumberPicker;
  39.     private NumberPicker childrenNumberPicker;
  40.     private EditText yourGcashNameET;
  41.     private EditText yourGcashNumberET;
  42.     private EditText referenceNumberET;
  43.     private Button submitButton;
  44.  
  45.     @Override
  46.     protected void onCreate(Bundle savedInstanceState) {
  47.         super.onCreate(savedInstanceState);
  48.         setContentView(R.layout.activity_book_form);
  49.  
  50.         Intent intent = getIntent(); // kunin yung hotelId sa DynamicHotel para sa
  51.         String hotelId = intent.getStringExtra("hotelKey"); // personalized fields nila
  52.         Log.d("BookFormActivity", "hotelId: " + hotelId);  // sa book info like roomtypes etc
  53.  
  54.         DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  55.         DatabaseReference roomPreferencesRef = databaseReference.child("hotels").child(hotelId).child("roomTypes");
  56.  
  57.         fullNameET = findViewById(R.id.fullNameET);
  58.         contactNumberET = findViewById(R.id.contactNumberET);
  59.         emailET = findViewById(R.id.emailET);
  60.         submitButton = findViewById(R.id.submitButton);
  61.         roomPreferenceSpinner = findViewById(R.id.roomPreferenceSpinner);
  62.         checkInDateET = findViewById(R.id.checkInDateET);
  63.         checkOutDateET = findViewById(R.id.checkOutDateET);
  64.         yourGcashNameET = findViewById(R.id.yourGcashNameET);
  65.         yourGcashNumberET = findViewById(R.id.yourGcashNumberET);
  66.         referenceNumberET = findViewById(R.id.referenceNumberET);
  67.  
  68.         ArrayAdapter<String> roomTypeAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, roomTypeList);
  69.         roomTypeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  70.         roomPreferenceSpinner.setAdapter(roomTypeAdapter);
  71.  
  72.         adultsNumberPicker = findViewById(R.id.adultsNumberPicker);
  73.         childrenNumberPicker = findViewById(R.id.childrenNumberPicker);
  74.         adultsNumberPicker.setMinValue(0);
  75.         adultsNumberPicker.setMaxValue(10);
  76.         childrenNumberPicker.setMinValue(0);
  77.         childrenNumberPicker.setMaxValue(10);
  78.  
  79.         checkInDateET.setOnClickListener(new View.OnClickListener() {
  80.             @Override
  81.             public void onClick(View v) {
  82.                 showDatePickerDialog(checkInDateET);
  83.             }
  84.         });
  85.         checkOutDateET.setOnClickListener(new View.OnClickListener() {
  86.             @Override
  87.             public void onClick(View v) {
  88.                 showDatePickerDialog(checkOutDateET);
  89.             }
  90.         });
  91.         roomPreferencesRef.addListenerForSingleValueEvent(new ValueEventListener() {
  92.             @Override
  93.             public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  94.                 if (dataSnapshot.exists()) { // then loop para mag iterate sa children ng DataSnapshot
  95.                     for (DataSnapshot preferenceSnapshot : dataSnapshot.getChildren()) {
  96.                         String roomPreference = preferenceSnapshot.getValue(String.class);
  97.                         roomTypeList.add(roomPreference);
  98.                     }
  99.                     roomTypeAdapter.notifyDataSetChanged();
  100.                 }
  101.             }
  102.  
  103.             @Override
  104.             public void onCancelled(@NonNull DatabaseError databaseError) {
  105.                 Log.e("BookForm", "error" + databaseError.getMessage());
  106.             }
  107.         });
  108.  
  109.         submitButton.setOnClickListener(new View.OnClickListener() {
  110.             @Override
  111.             public void onClick(View v) {
  112.                 if (allFields()) {
  113.                     FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
  114.  
  115.                     if (currentUser != null) {
  116.                         String userId = currentUser.getUid();
  117.                         String fullName = fullNameET.getText().toString();
  118.                         String checkInDate = checkInDateET.getText().toString();
  119.                         String checkOutDate = checkOutDateET.getText().toString();
  120.                         int adults = adultsNumberPicker.getValue();
  121.                         int children = childrenNumberPicker.getValue();
  122.                         String contactNumber = contactNumberET.getText().toString();
  123.                         String email = emailET.getText().toString();
  124.                         String roomPreference = roomPreferenceSpinner.getSelectedItem().toString();
  125.                         String yourGcashName = yourGcashNameET.getText().toString();
  126.                         String yourGcashNumber = yourGcashNumberET.getText().toString();
  127.                         String referenceNumber = referenceNumberET.getText().toString();
  128.  
  129.                         save(userId, hotelId, fullName, checkInDate, checkOutDate,
  130.                                 adults, children, contactNumber, email, roomPreference,
  131.                                 yourGcashName, yourGcashNumber, referenceNumber);
  132.  
  133.                         Toast.makeText(BookForm.this, "Booking submitted.", Toast.LENGTH_SHORT).show();
  134.                     } else {
  135.                         Log.e("BookForm", "User is not authenticated");
  136.                     }
  137.                 } else {
  138.                     Toast.makeText(BookForm.this, "Please fill in all required fields.", Toast.LENGTH_SHORT).show();
  139.                 }
  140.             }
  141.         });
  142.     }
  143.  
  144.     private void save(String userId, String hotelId, String fullName, String checkInDate, String checkOutDate,
  145.                       int adults, int children, String contactNumber, String email, String roomPreference,
  146.                       String yourGcashName, String yourGcashNumber, String referenceNumber) {
  147.         FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
  148.  
  149.         if (currentUser != null) {
  150.             String userType = "Tourist";  // select yung user type which is tourist
  151.             //  kukunin yung name for Tourist user type
  152.             String userPath = "users/" + userType + "/" + currentUser.getUid() + "/name";
  153.  
  154.             DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  155.             DatabaseReference userRef = databaseReference.child(userPath);
  156.             userRef.addListenerForSingleValueEvent(new ValueEventListener() {
  157.                 @Override
  158.                 public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  159.                     if (dataSnapshot.exists()) {
  160.                         String userName = dataSnapshot.getValue(String.class);
  161.  
  162.                         DatabaseReference hotelRef = databaseReference.child("hotels").child(hotelId).child("user_id");
  163.                         hotelRef.addListenerForSingleValueEvent(new ValueEventListener() {
  164.                             @Override
  165.                             public void onDataChange(@NonNull DataSnapshot hotelDataSnapshot) {
  166.                                 if (hotelDataSnapshot.exists()) {
  167.                                     String hotelUserId = hotelDataSnapshot.getValue(String.class);
  168.  
  169.                                     // store na under booking_info and generate ng unique id
  170.                                     DatabaseReference bookingsRef = databaseReference.child("booking_info").push();
  171.                                     String bookingId = bookingsRef.getKey();
  172.  
  173.                                     bookingsRef.child("userId").setValue(userId);
  174.                                     bookingsRef.child("fullName").setValue(fullName);
  175.                                     bookingsRef.child("checkInDate").setValue(checkInDate);
  176.                                     bookingsRef.child("checkOutDate").setValue(checkOutDate);
  177.                                     bookingsRef.child("adults").setValue(adults);
  178.                                     bookingsRef.child("children").setValue(children);
  179.                                     bookingsRef.child("contactNumber").setValue(contactNumber);
  180.                                     bookingsRef.child("email").setValue(email);
  181.                                     bookingsRef.child("roomPreference").setValue(roomPreference);
  182.                                     bookingsRef.child("yourGcashName").setValue(yourGcashName);
  183.                                     bookingsRef.child("yourGcashNumber").setValue(yourGcashNumber);
  184.                                     bookingsRef.child("referenceNumber").setValue(referenceNumber);
  185.                                     bookingsRef.child("userName").setValue(userName);
  186.                                     bookingsRef.child("hotelUserId").setValue(hotelUserId);
  187.  
  188.                                     Log.d("BookForm", "Booking data saved");
  189.                                 }
  190.                             }
  191.  
  192.                             @Override
  193.                             public void onCancelled(@NonNull DatabaseError hotelDatabaseError) {
  194.                                 Log.e("BookForm", "Hotel database error: " + hotelDatabaseError.getMessage());
  195.                             }
  196.                         });
  197.                     } else {
  198.                         Log.e("BookForm", "User data does not exist in the database");
  199.                     }
  200.                 }
  201.  
  202.                 @Override
  203.                 public void onCancelled(@NonNull DatabaseError databaseError) {
  204.                     Log.e("BookForm", "Database error: " + databaseError.getMessage());
  205.                 }
  206.             });
  207.         } else {
  208.             Log.e("BookForm", "User is not authenticated");
  209.         }
  210.     }
  211.  
  212.     private void showDatePickerDialog(final EditText editText) {
  213.         final Calendar calendar = Calendar.getInstance();
  214.         int year = calendar.get(Calendar.YEAR);
  215.         int month = calendar.get(Calendar.MONTH);
  216.         int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
  217.  
  218.         DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
  219.             @Override
  220.             public void onDateSet(android.widget.DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  221.                 // Adjust month index and set the selected date in the EditText
  222.                 String selectedDate = (monthOfYear + 1) + "/" + dayOfMonth + "/" + year;
  223.                 editText.setText(selectedDate);
  224.             }
  225.         }, year, month, dayOfMonth);
  226.  
  227.         datePickerDialog.show();
  228.     }
  229.  
  230.     private boolean allFields() {
  231.         return !fullNameET.getText().toString().isEmpty() &&
  232.                 !contactNumberET.getText().toString().isEmpty() &&
  233.                 !emailET.getText().toString().isEmpty() &&
  234.                 !checkInDateET.getText().toString().isEmpty() &&
  235.                 !checkOutDateET.getText().toString().isEmpty() &&
  236.                 !roomPreferenceSpinner.getSelectedItem().toString().isEmpty() &&
  237.                 !yourGcashNameET.getText().toString().isEmpty() &&
  238.                 !yourGcashNumberET.getText().toString().isEmpty() &&
  239.                 !referenceNumberET.getText().toString().isEmpty();
  240.     }
  241. }
  242.  
Tags: Android
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement