Private Parties

Private Party

Private Party is a service specially designed by Chào Bạn Villa 28 to give our guests more options for hosting memorable gatherings

Our charming French-style villa, embraced by a lush tropical garden, accommodates up to 90 guests across elegant indoor dining rooms and enchanting outdoor spaces. Whether you’re planning an intimate date, a family reunion, a corporate event, or a vibrant celebration with friends, we’ll create the perfect setting tailored to your vision. 

Our Private Party service is ideal for:

Birthday and anniversary celebrations
Year-end corporate gatherings
Family milestones and special occasions
Team building and company events

Intimate Moments, Grand Memories

For intimate gatherings, discover our quiet, secluded corners – perfect for couples or small groups seeking privacy. Larger parties can enjoy our dedicated private dining rooms or celebrate in our beautiful tropical garden area by the pool, where every moment becomes a cherished memory.

Let us transform your celebration into an unforgettable experience in our enchanting villa setting.

function updateTimeOptions() { console.log("Update time startttttttt");const selectedDate = dateField.value; console.log(selectedDate, "SELECTED DATE");timeField.innerHTML = "";// Chưa chọn ngày thì hiện toàn bộ if (!selectedDate) { originalOptions.forEach((opt) => { timeField.add(new Option(opt.text, opt.value)); }); return; }// Parse ngày được chọn (dd-mm-yyyy) const [day, month, year] = selectedDate.split("-").map(Number);const selected = new Date(year, month - 1, day); selected.setHours(0, 0, 0, 0);// Ngày hôm nay (00:00) const today = new Date(); const todayOnly = new Date(today); todayOnly.setHours(0, 0, 0, 0);// Ngày trong quá khứ -> không còn slot if (selected < todayOnly) { console.log("Past date => no time slots"); return; }// Số phút hiện tại const currentMinutes = today.getHours() * 60 + today.getMinutes();originalOptions.forEach((opt) => { if (!/^\d{1,2}:\d{2}$/.test(opt.value)) { timeField.add(new Option(opt.text, opt.value)); return; }// Nếu là ngày tương lai -> hiện hết if (selected > todayOnly) { timeField.add(new Option(opt.text, opt.value)); return; }// Chỉ lọc khi là hôm nay const [h, m] = opt.value.split(":").map(Number); const optionMinutes = h * 60 + m;if (optionMinutes > currentMinutes) { timeField.add(new Option(opt.text, opt.value)); } });// Nếu không còn slot nào thì thêm option thông báo if (timeField.options.length === 0) { timeField.add(new Option("No available time", "")); timeField.disabled = true; } else { timeField.disabled = false; } }