public class BookRoomActivity extends AppCompatActivity {
String staffPromotionCode;
EditText etRoomName,etprice,etDate,etCapacity,etPromotion;
Button btnBook;
FirebaseFirestore db;
final boolean[]promotionCodeMatched = {false};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_book_room);
// Retrieve promotion code set by staff from intent
Intent z = getIntent();
staffPromotionCode = z.getStringExtra("Promotion");
btnBook = findViewById(R.id.btnBook);
etRoomName = findViewById(R.id.etRoomName);
etprice = findViewById(R.id.etPrice);
etDate = findViewById(R.id.etDate);
etCapacity = findViewById(R.id.etCapacity);
etPromotion = findViewById(R.id.etPromotion);
db = FirebaseFirestore.getInstance();
Intent i = getIntent();
Room room = (Room) i.getSerializableExtra("updatedRoom");
if (room != null){
etRoomName.setText(room.getRoomName());
etPromotion.setText(room.getRoomName());
etCapacity.setText(String.valueOf(room.getCapacity()));
etDate.setText(String.valueOf(room.getDate()));
etprice.setText(String.valueOf(room.getPrice()));
} else {
Toast.makeText(BookRoomActivity.this, "Error: Room details not found", Toast.LENGTH_SHORT).show();
}
btnBook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Retrieve details from EditText fields
String roomName = etRoomName.getText().toString().trim();
double price = Double.parseDouble(etprice.getText().toString().trim());
int date = Integer.parseInt(etDate.getText().toString());
int capacity = Integer.parseInt(etCapacity.getText().toString().trim());
String promotion = etPromotion.getText().toString().trim();
final boolean[] promotionCodeMatched = {false}; // Declare and initialize promotionCodeMatched
// Retrieve promotion code set by staff from intent
Intent z = getIntent();
staffPromotionCode = z.getStringExtra("Promotion");
// Retrieve user-entered promotion code
String enteredPromotionCode = promotion.trim().toLowerCase();
// Check if the entered promotion code matches the staff-set promotion code
if (enteredPromotionCode.equals(staffPromotionCode)) {
promotionCodeMatched[0] = true;
} else {
// Fetch the room details from Firestore
db.collection("rooms")
.whereEqualTo("roomName", roomName)
.get()
.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Room room = document.toObject(Room.class);
String firestorePromotionCode = room.getPromotion().trim().toLowerCase();
if (enteredPromotionCode.equals(firestorePromotionCode)) {
promotionCodeMatched[0] = true;
break;
}
}
if (!promotionCodeMatched[0]) {
Toast.makeText(BookRoomActivity.this, "Incorrect promotion code applied!", Toast.LENGTH_LONG).show();
} else {
// Promotion code matched, proceed with booking
// Create Room object
Room newRoom = new Room(0, date, capacity, roomName, promotion, price);
// Store Room object in Firestore
CollectionReference roomsCollection = db.collection("rooms");
roomsCollection.add(newRoom)
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(DocumentReference documentReference) {
// Room booking successful
Toast.makeText(BookRoomActivity.this, "Room booked successfully!", Toast.LENGTH_LONG).show();
finish(); // Finish the activity and go back to the previous activity
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Room booking failed
Toast.makeText(BookRoomActivity.this, "Failed to book room: " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
} else {
// Handle query failure
Toast.makeText(BookRoomActivity.this, "Failed to retrieve promotion code: " + task.getException(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
});;}}"
Я столкнулся с проблемой при реализации функции промокода. Моя цель состоит в том, чтобы, когда пользователь вводит промо-код, который соответствует коду, хранящемуся в моей базе данных Firebase, приложение должно вернуться к предыдущему действию и отобразить всплывающее сообщение «Комната успешно забронирована». Однако даже когда я ввожу правильный промо-код, приложение постоянно отображает сообщение «Применен неправильный промо-код!». вместо этого тост. Не могли бы вы помочь мне понять, почему это происходит, и предложить решение?
Итак, я попытался проверить свои поля Firestore, а также поискать в Google и попытаться использовать аналогичные решения, но, похоже, ничего не помогло, и это было лучшее, что я смог найти.
У меня есть класс BookRoomActivity: [code]public class BookRoomActivity extends AppCompatActivity { String staffPromotionCode; EditText etRoomName,etprice,etDate,etCapacity,etPromotion; Button btnBook; FirebaseFirestore db;
// Store Room object in Firestore CollectionReference roomsCollection = db.collection("rooms"); roomsCollection.add(newRoom) .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(DocumentReference documentReference) { // Room booking successful Toast.makeText(BookRoomActivity.this, "Room booked successfully!", Toast.LENGTH_LONG).show(); finish(); // Finish the activity and go back to the previous activity } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Room booking failed Toast.makeText(BookRoomActivity.this, "Failed to book room: " + e.getMessage(), Toast.LENGTH_SHORT).show(); } }); } } else { // Handle query failure Toast.makeText(BookRoomActivity.this, "Failed to retrieve promotion code: " + task.getException(), Toast.LENGTH_SHORT).show(); } } }); } } });;}}" [/code] Я столкнулся с проблемой при реализации функции промокода. Моя цель состоит в том, чтобы, когда пользователь вводит промо-код, который соответствует коду, хранящемуся в моей базе данных Firebase, приложение должно вернуться к предыдущему действию и отобразить всплывающее сообщение «Комната успешно забронирована». Однако даже когда я ввожу правильный промо-код, приложение постоянно отображает сообщение «Применен неправильный промо-код!». вместо этого тост. Не могли бы вы помочь мне понять, почему это происходит, и предложить решение? [img]https://i.stack.imgur.com/rDi5D.png[/img]
Итак, я попытался проверить свои поля Firestore, а также поискать в Google и попытаться использовать аналогичные решения, но, похоже, ничего не помогло, и это было лучшее, что я смог найти.
У меня есть класс BookRoomActivity, как показано ниже
public class BookRoomActivity extends AppCompatActivity {
String staffPromotionCode;
EditText etRoomName,etprice,etDate,etCapacity,etPromotion;
Button btnBook;
FirebaseFirestore db;
У меня есть класс BookRoomActivity, как показано ниже
public class BookRoomActivity extends AppCompatActivity {
String staffPromotionCode;
EditText etRoomName,etprice,etDate,etCapacity,etPromotion;
Button btnBook;
FirebaseFirestore db;
У меня есть класс BookRoomActivity:
public class BookRoomActivity extends AppCompatActivity {
String staffPromotionCode;
EditText etRoomName,etprice,etDate,etCapacity,etPromotion;
Button btnBook;
FirebaseFirestore db;
Я делаю анимацию: animation = FuncAnimation(fig, update,frames=len(time_values), интервал=250, повтор=False) с простой функцией обновления кадра я хочу сохранить его в формате MP4: animation.save(f'{save_path}/heat_map.mp4', Writer='ffmpeg',...