Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.gypsy;
- import androidx.annotation.NonNull;
- import androidx.appcompat.app.AppCompatActivity;
- import android.app.DatePickerDialog;
- import android.content.ClipData;
- import android.content.ClipboardManager;
- import android.content.Context;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.NumberPicker;
- import android.widget.ProgressBar;
- import android.widget.Spinner;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.google.android.gms.tasks.OnFailureListener;
- import com.google.android.gms.tasks.OnSuccessListener;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.database.DataSnapshot;
- import com.google.firebase.database.DatabaseError;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.database.ValueEventListener;
- import com.google.firebase.storage.FirebaseStorage;
- import com.google.firebase.storage.StorageReference;
- import com.google.firebase.storage.UploadTask;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.List;
- public class ReserveForm extends AppCompatActivity {
- private EditText fullNameEditText;
- private EditText contactNumberEditText;
- private EditText emailEditText;
- private EditText reservationDateEditText;
- private DatabaseReference databaseReference;
- private EditText yourGcashNameET;
- private EditText yourGcashNumberET;
- private EditText referenceNumberET;
- private Button submitButton;
- private ImageView attachedImageView;
- private static final int PICK_IMAGE_REQUEST = 1;
- private Uri selectedImageUri;
- private TextView customerstv,gcashDepositNumberET, gcashDepositNameET, reservefeeET;
- private int customerCount = 0;
- ImageView imageView;
- TextView textView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_reserve_form);
- Intent intent = getIntent();
- String restoId = intent.getStringExtra("restoKey");
- Log.d("ReserveFormActivity", "restoId: " + restoId);
- fullNameEditText = findViewById(R.id.fullNameEditText);
- contactNumberEditText = findViewById(R.id.contactNumberEditText);
- emailEditText = findViewById(R.id.emailEditText);
- reservationDateEditText = findViewById(R.id.reservationDateEditText);
- submitButton = findViewById(R.id.submitButton);
- yourGcashNameET = findViewById(R.id.yourGcashNameET);
- yourGcashNumberET = findViewById(R.id.yourGcashNumberET);
- referenceNumberET = findViewById(R.id.referenceNumberET);
- attachedImageView = findViewById(R.id.attachedImageView);
- databaseReference = FirebaseDatabase.getInstance().getReference();
- customerstv = findViewById(R.id.customerstv);
- gcashDepositNumberET = findViewById(R.id.gcashDepositNumberET);
- gcashDepositNameET = findViewById(R.id.gcashDepositNameET);
- reservefeeET= findViewById(R.id.reservefeeET);
- imageView = findViewById(R.id.copyImageView);
- textView = findViewById(R.id.gcashDepositNumberET);
- imageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
- ClipData clipData = ClipData.newPlainText("Copy",textView.getText().toString());
- clipboardManager.setPrimaryClip(clipData);
- Toast.makeText(ReserveForm.this, "Copied", Toast.LENGTH_SHORT).show();
- }
- });
- DatabaseReference restoRef = databaseReference.child("restaurants").child(restoId);
- restoRef.addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(@NonNull DataSnapshot restoSnapshot) {
- if (restoSnapshot.exists()) {
- String gcashNumber = restoSnapshot.child("gcashNumber").getValue(String.class);
- String gcashName = restoSnapshot.child("gcashName").getValue(String.class);
- String reservefee = restoSnapshot.child("reservationFee").getValue(String.class);
- if (gcashDepositNameET != null && gcashDepositNumberET != null) {
- gcashDepositNumberET.setText(gcashNumber);
- gcashDepositNameET.setText(gcashName);
- reservefeeET.setText(reservefee);
- } else {
- Log.e("BookForm", "gcashDepositNameET or gcashDepositNumberET is null");
- }
- } else {
- Log.e("ReserveForm", "Resto not found with ID: " + restoId);
- }
- }
- @Override
- public void onCancelled(@NonNull DatabaseError databaseError) {
- Log.e("ReserveForm", "Hotel database error: " + databaseError.getMessage());
- }
- });
- reservationDateEditText.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- showDatePickerDialog(reservationDateEditText);
- }
- });
- submitButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (areAllFieldsFilled()) {
- ProgressBar loadingProgressBar = findViewById(R.id.loadingProgressBar);
- submitButton.setVisibility(View.GONE);
- loadingProgressBar.setVisibility(View.VISIBLE);
- new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... params) {
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- return null;
- }
- @Override
- protected void onPostExecute(Void result) {
- loadingProgressBar.setVisibility(View.GONE);
- submitButton.setVisibility(View.VISIBLE);
- finish();
- }
- }.execute();
- FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
- if (currentUser != null) {
- String userId = currentUser.getUid();
- String fullName = fullNameEditText.getText().toString();
- String contactNumber = contactNumberEditText.getText().toString();
- String reservationDate = reservationDateEditText.getText().toString();
- String email = emailEditText.getText().toString();
- int customers = Integer.parseInt(customerstv.getText().toString());
- String yourGcashName = yourGcashNameET.getText().toString();
- String yourGcashNumber = yourGcashNumberET.getText().toString();
- String referenceNumber = referenceNumberET.getText().toString();
- save(userId, restoId, fullName, reservationDate, contactNumber, email, customers,
- yourGcashName, yourGcashNumber, referenceNumber);
- Toast.makeText(ReserveForm.this, "Reservation submitted.", Toast.LENGTH_SHORT).show();
- } else {
- Log.e("ReserveForm", "User is not authenticated");
- }
- } else {
- Toast.makeText(ReserveForm.this, "All fields are required.", Toast.LENGTH_SHORT).show();
- }
- }
- });
- Button attachPhotoButton = findViewById(R.id.attachPhotoButton);
- attachPhotoButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openFileChooser();
- }
- });
- }
- public void incrementValue(View view) {
- if (customerCount < 9) {
- customerCount++;
- updateAdultsCount();
- }
- }
- public void decrementValue(View view) {
- if (customerCount > 0) {
- customerCount--;
- updateAdultsCount();
- }
- }
- private void updateAdultsCount() {
- customerstv.setText(String.valueOf(customerCount));
- }
- private void openFileChooser() {
- Intent intent = new Intent();
- intent.setType("image/*");
- intent.setAction(Intent.ACTION_GET_CONTENT);
- startActivityForResult(intent, PICK_IMAGE_REQUEST);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
- selectedImageUri = data.getData();
- attachedImageView.setImageURI(selectedImageUri);
- attachedImageView.setVisibility(View.VISIBLE);
- }
- }
- private void save (String userId, String restoId, String fullName,String reservationDate, String contactNumber, String email, int customers,
- String yourGcashName, String yourGcashNumber, String referenceNumber) {
- FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
- if (currentUser != null) {
- String userType = "Tourist";
- String userPath = "users/" + userType + "/" + currentUser.getUid() + "/name";
- DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
- DatabaseReference userRef = databaseReference.child(userPath);
- userRef.addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- Log.d("ReserveForm", "onDataChange called");
- if (dataSnapshot.exists()) {
- String userName = dataSnapshot.getValue(String.class);
- Log.d("ReserveForm", "Name retrieved: " + userName);
- DatabaseReference restaurantRef = databaseReference.child("restaurants").child(restoId).child("user_id");
- Log.d("BookForm", "hrestaurantref: " + restaurantRef);
- restaurantRef.addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(@NonNull DataSnapshot restaurantDataSnapshot) {
- if (restaurantDataSnapshot.exists()) {
- String restoUserId = restaurantDataSnapshot.getValue(String.class);
- Log.d("ReserveForm", "restoUserId: " + restoUserId);
- if (selectedImageUri != null) {
- StorageReference storageReference = FirebaseStorage.getInstance().getReference();
- StorageReference imageRef = storageReference.child("payment_receipts/" + userId + "/" + restoId + "/image.jpg");
- imageRef.putFile(selectedImageUri)
- .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
- @Override
- public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
- imageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
- @Override
- public void onSuccess(Uri downloadUri) {
- String imageUrl = downloadUri.toString();
- DatabaseReference reservationsRef = databaseReference.child("reservation_info").push();
- String reservationId = reservationsRef.getKey();
- reservationsRef.child("isConfirmed").setValue(false);
- reservationsRef.child("isPending").setValue(true);
- reservationsRef.child("isDeclined").setValue(false);
- reservationsRef.child("userId").setValue(userId);
- reservationsRef.child("fullName").setValue(fullName);
- reservationsRef.child("reservationDate").setValue(reservationDate);
- reservationsRef.child("contactNumber").setValue(contactNumber);
- reservationsRef.child("email").setValue(email);
- reservationsRef.child("customers").setValue(customers);
- reservationsRef.child("restoUserId").setValue(restoUserId);
- reservationsRef.child("GcashName").setValue(yourGcashName);
- reservationsRef.child("yGcashNumber").setValue(yourGcashNumber);
- reservationsRef.child("referenceNumber").setValue(referenceNumber);
- reservationsRef.child("imageUrl").setValue(imageUrl);
- Log.d("ReservationForm", "Booking data saved");
- }
- });
- }
- })
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(@NonNull Exception e) {
- Log.e("BookForm", "Image upload failed: " + e.getMessage());
- }
- });
- } else {
- Log.e("BookForm", "Selected image URI is null");
- }
- }
- }
- @Override
- public void onCancelled(@NonNull DatabaseError databaseError) {
- Log.e("BookForm", "Database error: " + databaseError.getMessage());
- }
- });
- } else {
- Log.e("BookForm", "User is not authenticated");
- }
- }
- @Override
- public void onCancelled(@NonNull DatabaseError databaseError) {
- Log.e("BookForm", "Database error: " + databaseError.getMessage());
- }
- });
- } else {
- Log.e("BookForm", "User is not authenticated");
- }
- }
- private void showDatePickerDialog(final EditText editText) {
- final Calendar calendar = Calendar.getInstance();
- int year = calendar.get(Calendar.YEAR);
- int month = calendar.get(Calendar.MONTH);
- int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
- DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
- @Override
- public void onDateSet(android.widget.DatePicker view, int year, int monthOfYear, int dayOfMonth) {
- Calendar selectedCalendar = Calendar.getInstance();
- selectedCalendar.set(year, monthOfYear, dayOfMonth);
- if (selectedCalendar.before(calendar)) {
- Toast.makeText(ReserveForm.this, "Please select a future date", Toast.LENGTH_SHORT).show();
- } else {
- String selectedDate = (monthOfYear + 1) + "/" + dayOfMonth + "/" + year;
- editText.setText(selectedDate);
- }
- }
- }, year, month, dayOfMonth);
- datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
- datePickerDialog.show();
- }
- private boolean areAllFieldsFilled() {
- return !fullNameEditText.getText().toString().isEmpty() &&
- !contactNumberEditText.getText().toString().isEmpty() &&
- !emailEditText.getText().toString().isEmpty() &&
- !reservationDateEditText.getText().toString().isEmpty() &&
- !yourGcashNameET.getText().toString().isEmpty() &&
- !yourGcashNumberET.getText().toString().isEmpty() &&
- !referenceNumberET.getText().toString().isEmpty();
- }
- public void retrieve (String restoId) {
- TextView depositNumberTV = findViewById(R.id.gcashDepositNumberET);
- TextView depositNameTV = findViewById(R.id.gcashDepositNameET);
- DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
- DatabaseReference restoRef = databaseReference.child("restaurants").child(restoId);
- restoRef.addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- Log.d("BookForm", "onDataChange called");
- if (dataSnapshot.exists()) {
- String gcashNumber = dataSnapshot.child("gcashNumber").getValue(String.class);
- String gcashName = dataSnapshot.child("gcashName").getValue(String.class);
- depositNumberTV.setText(gcashNumber);
- depositNameTV.setText(gcashName);
- }
- }
- @Override
- public void onCancelled(@NonNull DatabaseError databaseError) {
- Log.e("DynamicHotel", "Failed to retrieve hotel data: " + databaseError.getMessage());
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement