let username = "guest"; let password = "pass"; let venueInfo = document.getElementById("venue-info"); let venueDate = document.getElementById("venueDate"); let getVenuesBtn = document.getElementById("getVenues"); let hiddenDivs = []; function createHeader(username, password) { let auth = `Basic ${btoa(`${username}:${password}`)}`; let headers = { 'Content-type': 'application/json', "Authorization": auth }; return headers; } let headers = createHeader(username, password); getVenuesBtn.addEventListener("click", load) async function load() { let vd = venueDate.value; try { venueInfo.innerHTML=""; let response = await fetch(`https://baas.kinvey.com/rpc/kid_BJ_Ke8hZg/custom/calendar?query=${vd}`, { method: "POST", headers: headers }); let events = await response.json(); events.forEach(id => { getInfoAboutVenue(id); }); } catch { alert("No events in the calendar!"); } } async function getInfoAboutVenue(id) { try { let response = await fetch(`https://baas.kinvey.com/appdata/kid_BJ_Ke8hZg/venues/${id}`, { method: "GET", headers: headers }); let eventInfo = await response.json(); display(eventInfo); } catch { alert("couldn't fetch info about the events") } } function display(eventInfo) { console.log(`i got this fucker ${eventInfo}`) let tmplt = document.createElement("div"); tmplt.setAttribute("id", `${eventInfo._id}`) tmplt.innerHTML = ` ${eventInfo.name} `; venueInfo.appendChild(tmplt); let detailsBtn = document.getElementById(`btn${eventInfo._id}`); let hiddenDiv = document.getElementById(tmplt.id).getElementsByClassName("venue-details")[0]; hiddenDiv.setAttribute("id", `hidden ${tmplt.id}`) hiddenDivs.push(hiddenDiv); detailsBtn.addEventListener("click", function () { showDetails(tmplt.id, eventInfo.price, eventInfo.name) }) } function showDetails(id, price, name) { hiddenDivs.forEach(hd => { if (hd.id.split(" ")[1] == id) { hd.style.display = "block"; } else { hd.style.display = "none"; } }) let purchaseButton = document.getElementById(id).getElementsByClassName("purchase")[0]; purchaseButton.addEventListener("click", function () { purchase(id, price, name) }) } function purchase(id, price, name) { let quantitySelect = document.getElementById(id).getElementsByClassName("quantity")[0]; let q = quantitySelect.value; let totalPrice = Number(price) * Number(q); //confirmation window let confirmDiv = document.createElement("div"); confirmDiv.innerHTML = ` Confirm purchase
${name} ${q} x ${price} Total: ${totalPrice} lv
` confirmDiv.setAttribute("id", `confirm${id}`); venueInfo.innerHTML = ""; venueInfo.appendChild(confirmDiv); let confirmButton = document.getElementById(confirmDiv.id).getElementsByTagName("input")[0]; confirmButton.addEventListener("click", function () { confirmPurchase(id, q) }) } async function confirmPurchase(id, q) { try { console.log(`confirm purchase ${id},${q}`); let response = await fetch(`https://baas.kinvey.com/rpc/kid_BJ_Ke8hZg/custom/purchase?venue=${id}&qty=${q} `, { method: "POST", headers: headers }); let ticket = await response.json(); let ticketHtml = ticket.html; let ticketDiv = document.createElement("div"); ticketDiv.innerHTML = ticketHtml; let paragraph = document.createElement("p"); paragraph.textContent = "You may print this page as your ticket"; venueInfo.innerHTML = ""; venueInfo.append(paragraph, ticketDiv); } catch { alert("Purchase failed") } }