Advertisement
kitlolz012

reserve form java code

Nov 21st, 2023
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 19.45 KB | None | 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.ClipData;
  8. import android.content.ClipboardManager;
  9. import android.content.Context;
  10. import android.content.Intent;
  11. import android.net.Uri;
  12. import android.os.AsyncTask;
  13. import android.os.Bundle;
  14. import android.util.Log;
  15. import android.view.View;
  16. import android.widget.ArrayAdapter;
  17. import android.widget.Button;
  18. import android.widget.EditText;
  19. import android.widget.ImageView;
  20. import android.widget.NumberPicker;
  21. import android.widget.ProgressBar;
  22. import android.widget.Spinner;
  23. import android.widget.TextView;
  24. import android.widget.Toast;
  25.  
  26. import com.google.android.gms.tasks.OnFailureListener;
  27. import com.google.android.gms.tasks.OnSuccessListener;
  28. import com.google.firebase.auth.FirebaseAuth;
  29. import com.google.firebase.auth.FirebaseUser;
  30. import com.google.firebase.database.DataSnapshot;
  31. import com.google.firebase.database.DatabaseError;
  32. import com.google.firebase.database.DatabaseReference;
  33. import com.google.firebase.database.FirebaseDatabase;
  34. import com.google.firebase.database.ValueEventListener;
  35. import com.google.firebase.storage.FirebaseStorage;
  36. import com.google.firebase.storage.StorageReference;
  37. import com.google.firebase.storage.UploadTask;
  38.  
  39. import java.util.ArrayList;
  40. import java.util.Calendar;
  41. import java.util.List;
  42.  
  43. public class ReserveForm extends AppCompatActivity {
  44.  
  45.     private EditText fullNameEditText;
  46.     private EditText contactNumberEditText;
  47.     private EditText emailEditText;
  48.     private EditText reservationDateEditText;
  49.     private DatabaseReference databaseReference;
  50.     private EditText yourGcashNameET;
  51.     private EditText yourGcashNumberET;
  52.     private EditText referenceNumberET;
  53.     private Button submitButton;
  54.     private ImageView attachedImageView;
  55.     private static final int PICK_IMAGE_REQUEST = 1;
  56.     private Uri selectedImageUri;
  57.  
  58.     private TextView customerstv,gcashDepositNumberET, gcashDepositNameET, reservefeeET;
  59.     private int customerCount = 0;
  60.  
  61.     ImageView imageView;
  62.     TextView textView;
  63.  
  64.     @Override
  65.     protected void onCreate(Bundle savedInstanceState) {
  66.         super.onCreate(savedInstanceState);
  67.         setContentView(R.layout.activity_reserve_form);
  68.  
  69.         Intent intent = getIntent();
  70.         String restoId = intent.getStringExtra("restoKey");
  71.         Log.d("ReserveFormActivity", "restoId: " + restoId);
  72.  
  73.         fullNameEditText = findViewById(R.id.fullNameEditText);
  74.         contactNumberEditText = findViewById(R.id.contactNumberEditText);
  75.         emailEditText = findViewById(R.id.emailEditText);
  76.         reservationDateEditText = findViewById(R.id.reservationDateEditText);
  77.         submitButton = findViewById(R.id.submitButton);
  78.         yourGcashNameET = findViewById(R.id.yourGcashNameET);
  79.         yourGcashNumberET = findViewById(R.id.yourGcashNumberET);
  80.         referenceNumberET = findViewById(R.id.referenceNumberET);
  81.         attachedImageView = findViewById(R.id.attachedImageView);
  82.  
  83.         databaseReference = FirebaseDatabase.getInstance().getReference();
  84.  
  85.         customerstv = findViewById(R.id.customerstv);
  86.  
  87.         gcashDepositNumberET = findViewById(R.id.gcashDepositNumberET);
  88.         gcashDepositNameET = findViewById(R.id.gcashDepositNameET);
  89.         reservefeeET= findViewById(R.id.reservefeeET);
  90.  
  91.         imageView = findViewById(R.id.copyImageView);
  92.         textView = findViewById(R.id.gcashDepositNumberET);
  93.  
  94.         imageView.setOnClickListener(new View.OnClickListener() {
  95.             @Override
  96.             public void onClick(View v) {
  97.                 ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
  98.                 ClipData clipData = ClipData.newPlainText("Copy",textView.getText().toString());
  99.                 clipboardManager.setPrimaryClip(clipData);
  100.                 Toast.makeText(ReserveForm.this, "Copied", Toast.LENGTH_SHORT).show();
  101.             }
  102.         });
  103.  
  104.         DatabaseReference restoRef = databaseReference.child("restaurants").child(restoId);
  105.         restoRef.addListenerForSingleValueEvent(new ValueEventListener() {
  106.             @Override
  107.             public void onDataChange(@NonNull DataSnapshot restoSnapshot) {
  108.                 if (restoSnapshot.exists()) {
  109.                     String gcashNumber = restoSnapshot.child("gcashNumber").getValue(String.class);
  110.                     String gcashName = restoSnapshot.child("gcashName").getValue(String.class);
  111.                     String reservefee = restoSnapshot.child("reservationFee").getValue(String.class);
  112.  
  113.                     if (gcashDepositNameET != null && gcashDepositNumberET != null) {
  114.                         gcashDepositNumberET.setText(gcashNumber);
  115.                         gcashDepositNameET.setText(gcashName);
  116.                         reservefeeET.setText(reservefee);
  117.                     } else {
  118.                         Log.e("BookForm", "gcashDepositNameET or gcashDepositNumberET is null");
  119.                     }
  120.                 } else {
  121.                     Log.e("ReserveForm", "Resto not found with ID: " + restoId);
  122.                 }
  123.             }
  124.  
  125.             @Override
  126.             public void onCancelled(@NonNull DatabaseError databaseError) {
  127.                 Log.e("ReserveForm", "Hotel database error: " + databaseError.getMessage());
  128.             }
  129.         });
  130.  
  131.  
  132.  
  133.         reservationDateEditText.setOnClickListener(new View.OnClickListener() {
  134.             @Override
  135.             public void onClick(View v) {
  136.                 showDatePickerDialog(reservationDateEditText);
  137.             }
  138.         });
  139.  
  140.         submitButton.setOnClickListener(new View.OnClickListener() {
  141.             @Override
  142.             public void onClick(View v) {
  143.                 if (areAllFieldsFilled()) {
  144.  
  145.                     ProgressBar loadingProgressBar = findViewById(R.id.loadingProgressBar);
  146.  
  147.                     submitButton.setVisibility(View.GONE);
  148.                     loadingProgressBar.setVisibility(View.VISIBLE);
  149.  
  150.                     new AsyncTask<Void, Void, Void>() {
  151.                         @Override
  152.                         protected Void doInBackground(Void... params) {
  153.                             try {
  154.                                 Thread.sleep(2000);
  155.                             } catch (InterruptedException e) {
  156.                                 e.printStackTrace();
  157.                             }
  158.                             return null;
  159.                         }
  160.  
  161.                         @Override
  162.                         protected void onPostExecute(Void result) {
  163.                             loadingProgressBar.setVisibility(View.GONE);
  164.                             submitButton.setVisibility(View.VISIBLE);
  165.  
  166.                             finish();
  167.                         }
  168.                     }.execute();
  169.  
  170.  
  171.                     FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
  172.                         if (currentUser != null) {
  173.  
  174.                             String userId = currentUser.getUid();
  175.                             String fullName = fullNameEditText.getText().toString();
  176.                             String contactNumber = contactNumberEditText.getText().toString();
  177.                             String reservationDate = reservationDateEditText.getText().toString();
  178.                             String email = emailEditText.getText().toString();
  179.                             int customers = Integer.parseInt(customerstv.getText().toString());
  180.                             String yourGcashName = yourGcashNameET.getText().toString();
  181.                             String yourGcashNumber = yourGcashNumberET.getText().toString();
  182.                             String referenceNumber = referenceNumberET.getText().toString();
  183.  
  184.  
  185.                             save(userId, restoId, fullName, reservationDate, contactNumber, email, customers,
  186.                                     yourGcashName, yourGcashNumber, referenceNumber);
  187.  
  188.                             Toast.makeText(ReserveForm.this, "Reservation submitted.", Toast.LENGTH_SHORT).show();
  189.  
  190.                         } else {
  191.                              Log.e("ReserveForm", "User is not authenticated");
  192.                         }
  193.                 } else {
  194.                     Toast.makeText(ReserveForm.this, "All fields are required.", Toast.LENGTH_SHORT).show();
  195.                 }
  196.             }
  197.         });
  198.  
  199.         Button attachPhotoButton = findViewById(R.id.attachPhotoButton);
  200.         attachPhotoButton.setOnClickListener(new View.OnClickListener() {
  201.             @Override
  202.             public void onClick(View v) {
  203.                 openFileChooser();
  204.             }
  205.         });
  206.     }
  207.  
  208.  
  209.     public void incrementValue(View view) {
  210.         if (customerCount < 9) {
  211.             customerCount++;
  212.             updateAdultsCount();
  213.         }
  214.     }
  215.  
  216.     public void decrementValue(View view) {
  217.         if (customerCount > 0) {
  218.             customerCount--;
  219.             updateAdultsCount();
  220.         }
  221.     }
  222.  
  223.  
  224.     private void updateAdultsCount() {
  225.         customerstv.setText(String.valueOf(customerCount));
  226.     }
  227.  
  228.  
  229.     private void openFileChooser() {
  230.         Intent intent = new Intent();
  231.         intent.setType("image/*");
  232.         intent.setAction(Intent.ACTION_GET_CONTENT);
  233.         startActivityForResult(intent, PICK_IMAGE_REQUEST);
  234.     }
  235.  
  236.     @Override
  237.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  238.         super.onActivityResult(requestCode, resultCode, data);
  239.  
  240.         if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
  241.             selectedImageUri = data.getData();
  242.             attachedImageView.setImageURI(selectedImageUri);
  243.             attachedImageView.setVisibility(View.VISIBLE);
  244.         }
  245.     }
  246.  
  247.     private void save (String userId, String restoId, String fullName,String reservationDate, String contactNumber, String email, int customers,
  248.                        String yourGcashName, String yourGcashNumber, String referenceNumber) {
  249.         FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
  250.  
  251.         if (currentUser != null) {
  252.             String userType = "Tourist";
  253.             String userPath =  "users/" + userType + "/" + currentUser.getUid() + "/name";
  254.             DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  255.             DatabaseReference userRef = databaseReference.child(userPath);
  256.             userRef.addListenerForSingleValueEvent(new ValueEventListener() {
  257.                 @Override
  258.                 public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  259.                     Log.d("ReserveForm", "onDataChange called");
  260.                     if (dataSnapshot.exists()) {
  261.                         String userName = dataSnapshot.getValue(String.class);
  262.                         Log.d("ReserveForm", "Name retrieved: " + userName);
  263.  
  264.                         DatabaseReference restaurantRef = databaseReference.child("restaurants").child(restoId).child("user_id");
  265.                         Log.d("BookForm", "hrestaurantref: " + restaurantRef);
  266.                         restaurantRef.addListenerForSingleValueEvent(new ValueEventListener() {
  267.                             @Override
  268.                             public void onDataChange(@NonNull DataSnapshot restaurantDataSnapshot) {
  269.                                 if (restaurantDataSnapshot.exists()) {
  270.                                     String restoUserId = restaurantDataSnapshot.getValue(String.class);
  271.                                     Log.d("ReserveForm", "restoUserId: " + restoUserId);
  272.  
  273.                                     if (selectedImageUri != null) {
  274.                                         StorageReference storageReference = FirebaseStorage.getInstance().getReference();
  275.                                         StorageReference imageRef = storageReference.child("payment_receipts/" + userId + "/" + restoId + "/image.jpg");
  276.  
  277.                                         imageRef.putFile(selectedImageUri)
  278.                                                 .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  279.                                                     @Override
  280.                                                     public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  281.                                                         imageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
  282.                                                             @Override
  283.                                                             public void onSuccess(Uri downloadUri) {
  284.                                                                 String imageUrl = downloadUri.toString();
  285.  
  286.  
  287.                                                                 DatabaseReference reservationsRef = databaseReference.child("reservation_info").push();
  288.                                                                 String reservationId = reservationsRef.getKey();
  289.  
  290.                                                                 reservationsRef.child("isConfirmed").setValue(false);
  291.                                                                 reservationsRef.child("isPending").setValue(true);
  292.                                                                 reservationsRef.child("isDeclined").setValue(false);
  293.  
  294.                                                                 reservationsRef.child("userId").setValue(userId);
  295.                                                                 reservationsRef.child("fullName").setValue(fullName);
  296.                                                                 reservationsRef.child("reservationDate").setValue(reservationDate);
  297.                                                                 reservationsRef.child("contactNumber").setValue(contactNumber);
  298.                                                                 reservationsRef.child("email").setValue(email);
  299.                                                                 reservationsRef.child("customers").setValue(customers);
  300.                                                                 reservationsRef.child("restoUserId").setValue(restoUserId);
  301.  
  302.                                                                 reservationsRef.child("GcashName").setValue(yourGcashName);
  303.                                                                 reservationsRef.child("yGcashNumber").setValue(yourGcashNumber);
  304.                                                                 reservationsRef.child("referenceNumber").setValue(referenceNumber);
  305.                                                                 reservationsRef.child("imageUrl").setValue(imageUrl);
  306.  
  307.                                                                 Log.d("ReservationForm", "Booking data saved");
  308.                                                             }
  309.                                                         });
  310.                                                     }
  311.                                                 })
  312.                                                 .addOnFailureListener(new OnFailureListener() {
  313.                                                     @Override
  314.                                                     public void onFailure(@NonNull Exception e) {
  315.                                                         Log.e("BookForm", "Image upload failed: " + e.getMessage());
  316.                                                     }
  317.                                                 });
  318.                                     } else {
  319.                                         Log.e("BookForm", "Selected image URI is null");
  320.                                     }
  321.                                 }
  322.                             }
  323.  
  324.                             @Override
  325.                             public void onCancelled(@NonNull DatabaseError databaseError) {
  326.                                 Log.e("BookForm", "Database error: " + databaseError.getMessage());
  327.                             }
  328.                         });
  329.                     } else {
  330.                         Log.e("BookForm", "User is not authenticated");
  331.                     }
  332.                 }
  333.                 @Override
  334.                 public void onCancelled(@NonNull DatabaseError databaseError) {
  335.                     Log.e("BookForm", "Database error: " + databaseError.getMessage());
  336.                 }
  337.             });
  338.         } else {
  339.             Log.e("BookForm", "User is not authenticated");
  340.         }
  341.     }
  342.     private void showDatePickerDialog(final EditText editText) {
  343.         final Calendar calendar = Calendar.getInstance();
  344.         int year = calendar.get(Calendar.YEAR);
  345.         int month = calendar.get(Calendar.MONTH);
  346.         int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
  347.  
  348.         DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
  349.             @Override
  350.             public void onDateSet(android.widget.DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  351.                 Calendar selectedCalendar = Calendar.getInstance();
  352.                 selectedCalendar.set(year, monthOfYear, dayOfMonth);
  353.  
  354.                 if (selectedCalendar.before(calendar)) {
  355.                     Toast.makeText(ReserveForm.this, "Please select a future date", Toast.LENGTH_SHORT).show();
  356.                 } else {
  357.                     String selectedDate = (monthOfYear + 1) + "/" + dayOfMonth + "/" + year;
  358.                     editText.setText(selectedDate);
  359.                 }
  360.             }
  361.         }, year, month, dayOfMonth);
  362.  
  363.         datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
  364.  
  365.         datePickerDialog.show();
  366.     }
  367.     private boolean areAllFieldsFilled() {
  368.         return !fullNameEditText.getText().toString().isEmpty() &&
  369.                 !contactNumberEditText.getText().toString().isEmpty() &&
  370.                 !emailEditText.getText().toString().isEmpty() &&
  371.                 !reservationDateEditText.getText().toString().isEmpty() &&
  372.                 !yourGcashNameET.getText().toString().isEmpty() &&
  373.                 !yourGcashNumberET.getText().toString().isEmpty() &&
  374.                 !referenceNumberET.getText().toString().isEmpty();
  375.     }
  376.  
  377.     public void retrieve (String restoId) {
  378.         TextView depositNumberTV = findViewById(R.id.gcashDepositNumberET);
  379.         TextView depositNameTV = findViewById(R.id.gcashDepositNameET);
  380.  
  381.         DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
  382.         DatabaseReference restoRef = databaseReference.child("restaurants").child(restoId);
  383.  
  384.         restoRef.addListenerForSingleValueEvent(new ValueEventListener() {
  385.             @Override
  386.             public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  387.                 Log.d("BookForm", "onDataChange called");
  388.                 if (dataSnapshot.exists()) {
  389.                     String gcashNumber = dataSnapshot.child("gcashNumber").getValue(String.class);
  390.                     String gcashName = dataSnapshot.child("gcashName").getValue(String.class);
  391.  
  392.                     depositNumberTV.setText(gcashNumber);
  393.                     depositNameTV.setText(gcashName);
  394.  
  395.                 }
  396.             }
  397.  
  398.             @Override
  399.             public void onCancelled(@NonNull DatabaseError databaseError) {
  400.                 Log.e("DynamicHotel", "Failed to retrieve hotel data: " + databaseError.getMessage());
  401.             }
  402.         });
  403.     }
  404.  
  405. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement