Advertisement
kitlolz012

reserveform inaus lang konti

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