[2025-10-16 13:04:09] slim-app.INFO: Petition {"incoming":{"Method":"GET","api":"yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du","Route":"https://omnibees.clubsolaris.com/Omnibees/full_test?api_key=yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du","Data":{"api_key":"yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du"}},"response":{"status":200,"type":"text/html; charset=UTF-8","body":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Document</title>\n  \n  <style>\n    body {\n      background: #d5d2d2 !important;\n      font-family: Arial, sans-serif;\n    }\n    #rooms_list.disabled {\n      pointer-events: none;\n    }\n  </style>\n\n  <!-- You MUST include jQuery 3.4+ before Fomantic -->\n  <script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js\"></script>\n  <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.9.4/semantic.min.css\">\n  <script src=\"https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.9.4/semantic.min.js\"></script>\n\n  <script src=\"https://pfau-software.de/json-viewer/dist/iife/index.js\"></script>\n  <script>\n    function setActiveMenuItem() {\n      const path = window.location.hash;\n      const menuItems = document.querySelectorAll('.ui.menu .item');\n      menuItems.forEach(item => {\n        if (item.getAttribute('href') === path) {\n          item.classList.add('active');\n        } else {\n          item.classList.remove('active');\n        }\n      });\n    }\n\n    function createInput(id, name, placeholder,type,value) {\n      const input = document.createElement(\"input\");\n      input.id = id;\n      input.name = name;\n      input.placeholder = placeholder;\n      input.className = \"ui input\";\n      input.type = type;\n      input.value = value;\n      return input;\n    }\n\n    function createFormField(id, name, placeholder,type,value,label_text) {\n      const field = document.createElement(\"div\");\n      field.className = \"field\";\n      const label = document.createElement(\"label\");\n      label.htmlFor = id;\n      label.textContent = label_text ?? placeholder;\n      field.appendChild(label);\n      field.appendChild(createInput(id, name, placeholder,type,value));\n      return field;\n    }\n\n    function pings(event) {\n      const jsonViewerContainer = document.getElementById(\"jsonViewerContainer\");\n      jsonViewerContainer.classList.add(\"loading\");\n      jsonViewerContainer.classList.add(\"disabled\");\n      fetch('/Omnibees/ping?api_key=yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du')\n        .then(response => response.json())\n        .then(data => {\n          jsonViewer.data = data;\n        })\n        .catch(error => console.error('Error:', error))\n        .finally(() => {\n          jsonViewerContainer.classList.remove(\"loading\");\n          jsonViewerContainer.classList.remove(\"disabled\");\n          event.target.classList.add(\"active\");\n          setActiveMenuItem();\n        });\n    }\n\n    function hotelSearch(event) {\n      const jsonViewerContainer = document.getElementById(\"jsonViewerContainer\");\n      jsonViewerContainer.classList.add(\"loading\");\n      jsonViewerContainer.classList.add(\"disabled\");\n      fetch('/Omnibees/HotelSearch?api_key=yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du&checkIn=2023-10-01&checkOut=2023-10-02&cityCode=NYC')\n        .then(response => response.json())\n        .then(data => {\n          jsonViewer.data = data;\n        })\n        .catch(error => console.error('Error:', error))\n        .finally(() => {\n          jsonViewerContainer.classList.remove(\"loading\");\n          jsonViewerContainer.classList.remove(\"disabled\");\n          event.target.classList.add(\"active\");\n          setActiveMenuItem();\n        });\n    }\n\n    function GetHotelDescriptiveInfo(event, hotelCode = 198335) {\n      const jsonViewerContainer = document.getElementById(\"jsonViewerContainer\");\n      jsonViewerContainer.classList.add(\"loading\");\n      jsonViewerContainer.classList.add(\"disabled\");\n      fetch(`/Omnibees/GetHotelDescriptiveInfo?api_key=yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du&hotelCode=${hotelCode}`)\n        .then(response => response.json())\n        .then(data => {\n          jsonViewer.data = data;\n          let resort_data = data.HotelDescriptiveContentsType.HotelDescriptiveContents[0];\n          let policies = ``;\n          resort_data.Policies.ChildTerms.forEach(policy => {\n            policies += `<p>${policy.Name} - ${policy.MinAge} to ${policy.MaxAge}</p>`;\n          });\n\n          let amenities = ``;\n          resort_data.HotelInfo.HotelAmenities.forEach(amenity => {\n            amenities += `<li>${amenity.HotelAmenity}</li>`;\n          });\n          \n          let hotel_card = `\n          <div class=\"ui card\">\n            <div class=\"content\">\n              <a class=\"header\">${resort_data.HotelRef.HotelName}</a>\n              <div class=\"meta\">\n                <span class=\"date\">\n                 Checkin Time: ${resort_data.HotelInfo.CheckInHours.Start} - Checkout Time: ${resort_data.HotelInfo.CheckInHours.End}\n                </span>\n              </div>\n              <div class=\"description\">\n                ${resort_data.HotelInfo.Descriptions.DescriptiveText}\n              </div>\n            </div>\n            <div class=\"extra content\">\n              Age Policies:\n              ${policies}\n              <br/>\n              Amenities:\n              <ul>${amenities}</ul>\n            </div>\n          </div>\n          `;\n\n          document.getElementById(\"viewArea\").innerHTML = \"\";\n          document.getElementById(\"viewArea\").innerHTML = hotel_card;\n        })\n        .catch(error => console.error('Error:', error))\n        .finally(() => {\n          jsonViewerContainer.classList.remove(\"loading\");\n          jsonViewerContainer.classList.remove(\"disabled\");\n          event.target.classList.add(\"active\");\n          setActiveMenuItem();\n        });\n    }\n\n    function ResortSelector(Container,resorts){\n      let hotel_selector = createDropdown(\"hotel_selector\", \"hotel_selector\", resorts);\n\n      let resort_selector = document.createElement(\"div\");\n      resort_selector.className = \"field\";\n\n      let resort_label = document.createElement(\"label\");\n      resort_label.textContent = \"Select a hotel\";\n      resort_label.htmlFor = \"hotel_selector\";\n\n      resort_selector.appendChild(resort_label);\n      resort_selector.appendChild(hotel_selector);\n\n      Container.appendChild(resort_selector);\n\n      let rates_selector = document.createElement(\"div\");\n      rates_selector.className = \"field\";\n      let rates_label = document.createElement(\"label\");\n      rates_label.textContent = \"Select a rate plan\";\n      rates_label.htmlFor = \"rates_selector\";\n\n      rates_selector.appendChild(rates_label);\n      let rates_selector_input = document.createElement(\"select\");\n      rates_selector_input.id = \"rates_selector\";\n      rates_selector_input.name = \"rates_selector\";\n      rates_selector_input.className = \"ui loading disabled dropdown\";\n      rates_selector.appendChild(rates_selector_input);\n      Container.appendChild(rates_selector);\n\n      // Initialize the dropdown\n      $(hotel_selector).dropdown(\n        { \n          placeholder: 'Select a hotel', \n          onChange: function(value) {\n            \n            GetHotelRatePlans(event, value, function(data){\n              // Clear previous options\n              rates_selector_input.innerHTML = '';\n              \n              // Populate the rates selector with new options\n              data.RatePlans.RatePlan\t.forEach(rate => {\n                let option = document.createElement(\"option\");\n                option.value = rate.RatePlanID;\n                option.textContent = rate.RatePlanName;\n                rates_selector_input.appendChild(option);\n              });\n\n              // Reinitialize the dropdown\n              $(rates_selector_input).dropdown();\n              $(rates_selector_input).parent().removeClass(\"disabled loading\");\n            }\n          );\n      } });\n    }\n    \n    function createRatesSelector(rates,selector){\n\n    }\n\n    function Calendars(Container){\n      let cin = createDateField(\"checkIn\", \"checkIn\", \"2025-10-01\");\n      let cinContainer = document.createElement(\"div\");\n      cinContainer.className = \"field\";\n      \n      let cinLabel = document.createElement(\"label\");\n      cinLabel.textContent = \"Check In\";\n      cinLabel.htmlFor = \"checkIn\";\n      cinContainer.appendChild(cinLabel);\n      cinContainer.appendChild(cin);\n\n\n      let cout = createDateField(\"checkOut\", \"checkOut\", \"2025-10-02\");\n      let coutContainer = document.createElement(\"div\");\n      coutContainer.className = \"field\";\n\n      let coutLabel = document.createElement(\"label\");\n      coutLabel.textContent = \"Check Out\";\n      coutLabel.htmlFor = \"checkOut\";\n      coutContainer.appendChild(coutLabel);\n      coutContainer.appendChild(cout);\n\n\n      Container.appendChild(cinContainer);\n      Container.appendChild(coutContainer);\n\n      $(cin).calendar({\n        type: 'date',\n        endCalendar: $(\"#checkOut\"),\n        formatter: {\n          date: 'YYYY-MM-DD'\n        }\n      });\n      $(cout).calendar({\n        type: 'date',\n        startCalendar: $(\"#checkIn\"),\n        formatter: {\n          date: 'YYYY-MM-DD'\n        }\n      });\n\n    }\n\n    function PaxSelector(Container){\n\n      let adults = document.createElement(\"input\");\n      adults.type = \"number\";\n      adults.name = \"adults\";\n      adults.id = \"adults\";\n      adults.value = 1;\n      adults.className = \"ui input\";\n      \n      let adultsLabel = document.createElement(\"label\");\n      adultsLabel.textContent = \"Adults\";\n      adultsLabel.htmlFor = \"adults\";\n      \n      let adultsDiv = document.createElement(\"div\");\n      adultsDiv.className = \"ui input\";\n      adultsDiv.appendChild(adults);\n\n      let adultsField = document.createElement(\"div\");\n      adultsField.className = \"field\";\n      adultsField.appendChild(adultsLabel);\n      adultsField.appendChild(adultsDiv);\n      Container.appendChild(adultsField);\n\n      let childs = document.createElement(\"input\");\n      childs.type = \"number\";\n      childs.name = \"childs\";\n      childs.id = \"childs\";\n      childs.value = 0;\n      childs.className = \"ui input\";\n      \n      let childsLabel = document.createElement(\"label\");\n      childsLabel.textContent = \"Childs\";\n      childsLabel.htmlFor = \"childs\";\n      \n      let childsDiv = document.createElement(\"div\");\n      childsDiv.className = \"ui input\";\n      childsDiv.appendChild(childs);\n\n      let childsField = document.createElement(\"div\");\n      childsField.className = \"field\";\n      childsField.appendChild(childsLabel);\n      childsField.appendChild(childsDiv);\n      Container.appendChild(childsField);\n\n      let childs_ages = document.createElement(\"input\");\n      childs_ages.type = \"text\";\n      childs_ages.name = \"childs_ages\";\n      childs_ages.id = \"childs_ages\";\n      childs_ages.value = \"\";\n      childs_ages.className = \"ui input\";\n\n      let childs_agesLabel = document.createElement(\"label\");\n      childs_agesLabel.textContent = \"Childs Ages\";\n      childs_agesLabel.htmlFor = \"childs_age\";\n\n      let childsDiv_age = document.createElement(\"div\");\n      childsDiv_age.className = \"ui input\";\n      childsDiv_age.appendChild(childs_ages);\n\n      let childsField_age = document.createElement(\"div\");\n      childsField_age.className = \"field\";\n      childsField_age.appendChild(childs_agesLabel);\n      childsField_age.appendChild(childsDiv_age);\n      Container.appendChild(childsField_age);\n    }\n\n    function ShowReservationStartForm(event){\n      let viewArea = document.getElementById(\"viewArea\");\n      viewArea.innerHTML = \"\";\n      \n      let Container = document.createElement(\"div\");\n      Container.className = \"ui form segment\";\n      viewArea.appendChild(Container);\n\n      let header = document.createElement(\"h3\");\n      header.textContent = \"Hotel Availability Calendar\";\n      header.className = \"ui header\";\n      Container.appendChild(header);\n      \n      let resorts = [\n        { value: 6220, text: \"Royal Solaris Los Cabos\" },\n        { value: 5975, text: \"Royal Solaris Cancun\" },\n        { value: 6219, text: \"GR Solaris\" },\n        { value: 6215, text: \"GR Caribe\" },\n        { value: 20189, text: \"GR Solaris Lighthouse\" }\n      ];\n\n      let main_row = document.createElement(\"div\");\n      main_row.className = \"two fields\";\n      Container.appendChild(main_row);\n\n      ResortSelector(main_row, resorts);\n      \n\n\n      let second_row = document.createElement(\"div\");\n      second_row.className = \"fields\";\n      Container.appendChild(second_row);\n\n      Calendars(second_row);\n\n      let third_row = document.createElement(\"div\");\n      third_row.className = \"fields\";\n      Container.appendChild(third_row);\n      PaxSelector(second_row);\n\n      let fourth_row = document.createElement(\"div\");\n      fourth_row.className = \"fields\";\n      Container.appendChild(fourth_row);\n\n\n      let searchButton = document.createElement(\"button\");\n      searchButton.className = \"ui primary button\";\n      searchButton.textContent = \"Search Availability\";\n      searchButton.onclick = function() {\n        GetHotelAvail(event);\n      };\n\n      \n\n      let btnContainer = document.createElement(\"div\");\n      btnContainer.className = \"sixteen wide field\";\n      btnContainer.appendChild(searchButton);\n\n      let searchButton2 = document.createElement(\"button\");\n      searchButton2.className = \"ui orange button\";\n      searchButton2.textContent = \"second search\";\n      searchButton2.onclick = function() {\n        HotelAvailCalendar(event);\n      };\n      btnContainer.appendChild(searchButton2);\n\n      fourth_row.appendChild(btnContainer);\n\n\n      let rooms_segment = document.createElement(\"div\");\n      rooms_segment.className = \"ui segment\";\n\n      let rooms_list = document.createElement(\"div\");\n      rooms_list.className = \"ui list\";\n      rooms_list.id = \"rooms_list\";\n\n      let rooms_header = document.createElement(\"h4\");\n      rooms_header.textContent = \"Available Rooms\";\n      rooms_header.className = \"ui header\";\n      rooms_segment.appendChild(rooms_header);\n\n      rooms_segment.appendChild(rooms_list);\n\n      viewArea.appendChild(rooms_segment);\n\n      let warnings_area = document.createElement(\"div\");\n      warnings_area.className = \"ui list\";\n      warnings_area.id = \"warnings_area\";\n      viewArea.appendChild(warnings_area);\n\n      event.target.classList.add(\"active\");\n      setActiveMenuItem();\n    }\n\n\n    function showRooms(rooms,rates,reservation_details){\n\n      let rooms_list = document.getElementById(\"rooms_list\");\n      rooms_list.innerHTML = \"\"; // Clear previous rooms\n\n      if (!rooms || rooms.length === 0) {\n        let noRoomsMessage = document.createElement(\"div\");\n        noRoomsMessage.textContent = \"No rooms available for the selected dates.\";\n        noRoomsMessage.className = \"ui message\";\n        rooms_list.appendChild(noRoomsMessage);\n        return;\n      }\n      \n\n      rooms.forEach(room => {\n        let roomItem = document.createElement(\"div\");\n        roomItem.className = \"item\";\n\n        let roomContent = document.createElement(\"div\");\n        roomContent.className = \"content\";\n\n        let roomHeader = document.createElement(\"div\");\n        roomHeader.className = \"header\";\n        roomHeader.textContent = `${room.RoomID} - ${room.RoomName}`;\n\n        let roomDescription = document.createElement(\"div\");\n        roomDescription.className = \"description\";\n        roomDescription.textContent = `${room.RoomDescription.Description}`;\n\n        roomContent.appendChild(roomHeader);\n        roomContent.appendChild(roomDescription);\n        roomItem.appendChild(roomContent);\n\n        rooms_list.appendChild(roomItem);\n\n        let floatingDiv = document.createElement(\"div\");\n        floatingDiv.className = \"right floated content\";\n\n        let price = document.createElement(\"div\");\n        price.className = \"ui small header\";\n        price.setAttribute('data-idroom', room.RoomID);\n        floatingDiv.appendChild(price);\n\n        let bookButton = document.createElement(\"button\");\n        bookButton.className = \"ui orange button\";\n        bookButton.textContent = \"Book Now\";\n        bookButton.onclick = function() {\n          // Implement booking functionality here\n          //alert(`Booking for room: ${room.RoomID}`);\n          reservation_details.roomCode = room.RoomID;\n          startCheckout(reservation_details);\n        };\n        floatingDiv.appendChild(bookButton);\n        roomItem.appendChild(floatingDiv);\n      });\n\n    }\n\n    function HotelAvailCalendar(){\n       let hotelCode = document.getElementById(\"hotel_selector\").value;\n      let checkIn = document.getElementById(\"checkIn_field\").value;\n      let checkOut = document.getElementById(\"checkOut_field\").value;\n      let adultsCount = document.getElementById(\"adults\").value;\n      let childsCount = document.getElementById(\"childs\").value;\n      let ratesPlan = document.getElementById(\"rates_selector\").value;\n\n      jsonViewerContainer.classList.add(\"loading\");\n      jsonViewerContainer.classList.add(\"disabled\");\n\n      const postData = {\n        api_key: 'yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du',\n        hotelCode: hotelCode,\n        checkIn: checkIn,\n        checkOut: checkOut,\n        ratesPlan: ratesPlan,\n        guests: {\n          adults: adultsCount,\n          children: childsCount\n        }\n      };\n\n      fetch(`/Omnibees/HotelAvailCalendar`,{\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            // You can also use 'application/x-www-form-urlencoded' if needed\n          },\n          body: JSON.stringify(postData)\n        })\n        .then(response => response.json())\n        .then(data => {\n          jsonViewer.data = data;\n        })\n        \n        .catch(error => console.error('Error:', error))\n        .finally(() => {\n          jsonViewerContainer.classList.remove(\"loading\");\n          jsonViewerContainer.classList.remove(\"disabled\");\n          \n        });\n    }\n\n    function GetHotelRatePlans(event,resort,action){\n      const jsonViewerContainer = document.getElementById(\"jsonViewerContainer\");\n      jsonViewerContainer.classList.add(\"loading\");\n      jsonViewerContainer.classList.add(\"disabled\");\n\n      fetch(`/Omnibees/GetHotelRatePlans?api_key=yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du&hotelCode=${resort}`)\n        .then(response => response.json())\n        .then(data => {\n          if(typeof action === 'function') {\n            action(data);\n          } else {\n            jsonViewer.data = data;\n          }\n        })\n        .catch(error => console.error('Error:', error))\n        .finally(() => {\n          if(typeof action !== 'function') {\n            jsonViewerContainer.classList.remove(\"loading\");\n            jsonViewerContainer.classList.remove(\"disabled\");\n            event.target.classList.add(\"active\");\n            setActiveMenuItem();\n          }\n        });\n    }\n\n    function GetHotelAvail(event) {\n      const jsonViewerContainer = document.getElementById(\"jsonViewerContainer\");\n      jsonViewerContainer.classList.add(\"loading\");\n      jsonViewerContainer.classList.add(\"disabled\");\n      var warnings_area = document.getElementById(\"warnings_area\");\n      warnings_area.innerHTML = \"\"; // Clear previous warnings\n\n      let checkIn = document.getElementById(\"checkIn_field\").value;\n      let checkOut = document.getElementById(\"checkOut_field\").value;\n      let hotelCode = document.getElementById(\"hotel_selector\").value;\n      let ratesPlan = document.getElementById(\"rates_selector\").value;\n      let adults = document.getElementById(\"adults\").value;\n      let children = document.getElementById(\"childs\").value;\n      let children_ages = document.getElementById(\"childs_ages\").value;\n\n      fetch(`/Omnibees/GetHotelAvail`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          api_key: 'yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du',\n          checkIn: checkIn,\n          checkOut: checkOut,\n          hotelCode: hotelCode,\n          ratesPlan: ratesPlan,\n          adults: adults,\n          children: children,\n          children_ages: children_ages\n        })\n      })\n        .then(response => response.json())\n        .then(data => {\n          jsonViewer.data = data;\n          return data;\n        })\n        .then(data => {\n          if(data.WarningsType !== null){\n            data.WarningsType.forEach(warning => {\n              console.warn('Warning:', warning);\n              let warning_item = document.createElement(\"div\");\n              warning_item.className = \"item\";\n              warning_item.textContent = warning;\n              warnings_area.appendChild(warning_item);\n            });\n          }else{\n\n            let reservation_details = {\n              checkIn: checkIn,\n              checkOut: checkOut,\n              hotelCode: hotelCode,\n              ratesPlan: ratesPlan,\n              adults: adults,\n              children: children,\n              children_ages: children_ages\n            };\n\n            showRooms(data.RoomStaysType.RoomStays[0].RoomTypes,data.RoomStaysType.RoomStays[0].RoomRates,reservation_details);\n\n            data.RoomStaysType.RoomStays[0].RoomRates\t.forEach(roomRate => {\n\n              let tot = roomRate.Total.AmountAfterTax;\n              $(`[data-idroom=${roomRate.RoomID}]`).text(`$: ${tot} USD`);\n            });\n          }\n          \n        })\n        .catch(error => console.error('Error:', error))\n        .finally(() => {\n          jsonViewerContainer.classList.remove(\"loading\");\n          jsonViewerContainer.classList.remove(\"disabled\");\n          event.target.classList.add(\"active\");\n          setActiveMenuItem();\n        });\n    }\n\n    function createDateField(name,id, value) {\n      let dateField = document.createElement(\"input\");\n      dateField.type = \"text\";\n      dateField.name = name;\n      dateField.id = id + \"_field\";\n      dateField.value = value;\n\n      let div = document.createElement(\"div\");\n      div.className = \"ui input left icon\";\n      div.appendChild(dateField);\n\n      let icon = document.createElement(\"i\");\n      icon.className = \"calendar icon\";\n      div.appendChild(icon);\n\n      let Container = document.createElement(\"div\");\n      Container.className = \"ui calendar\";\n      Container.id = id;\n\n      Container.appendChild(div);\n\n      return Container;\n    }\n\n    function createDropdown(name, id, options) {\n      let select = document.createElement(\"select\");\n      select.name = name;\n      select.id = id;\n      select.className = \"ui dropdown\";\n      let defaultOption = document.createElement(\"option\");\n      defaultOption.value = \"\";\n      defaultOption.textContent = \"Select an option\";\n      select.appendChild(defaultOption);\n      options.forEach(option => {\n        let opt = document.createElement(\"option\");\n        opt.value = option.value;\n        opt.textContent = option.text;\n        select.appendChild(opt);\n      });\n\n      return select;\n    }\n\n    function localStart() {\n      $(\".generalRequest\").unbind().click(function(event) {\n        event.preventDefault();\n        const rute = $(this).data(\"rute\");\n        const jsonViewerContainer = document.getElementById(\"jsonViewerContainer\");\n        jsonViewerContainer.classList.add(\"loading\");\n        jsonViewerContainer.classList.add(\"disabled\");\n        postSecuence = false;\n        if($(this).data(\"postsecuence\"))\n          postSecuence = $(this).data(\"postsecuence\");\n        \n        let postData = {};\n\n        if ($(this).data(\"form\")) {\n          const form = document.getElementById($(this).data(\"form\"));\n          const formData = new FormData(form);\n          formData.forEach((value, key) => {\n            postData[key] = value;\n          });\n        }\n\n        fetch(`/Omnibees/${rute}?api_key=yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du`,{\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            // You can also use 'application/x-www-form-urlencoded' if needed\n          },\n          body: JSON.stringify(postData)\n        })\n          .then(response => response.json())\n          .then(data => {\n            jsonViewer.data = data;\n            console.log(\"Data fetched:\", data);\n            console.log(\"Post secuence:\", postSecuence);\n            if(postSecuence){\n              console.log(\"Executing post secuence\" + postSecuence);\n              window[postSecuence](data);\n            }\n          })\n          .catch(error => console.error('Error:', error))\n          .finally(() => {\n            jsonViewerContainer.classList.remove(\"loading\");\n            jsonViewerContainer.classList.remove(\"disabled\");\n            event.target.classList.add(\"active\");\n            setActiveMenuItem();\n          });\n      });\n    }\n\n    function startCheckout(reservation_details){\n      let container = document.createElement(\"div\");\n      container.className = \"ui segment\";\n\n      let title = document.createElement(\"h3\");\n      title.textContent = \"Checkout\";\n      container.appendChild(title);\n\n      var form = document.createElement(\"form\");\n      form.className = \"ui form\";\n\n      form.appendChild(createFormField(\"resortCode\", \"resortCode\", \"resortCode\", \"text\", reservation_details.hotelCode));\n      form.appendChild(createFormField(\"roomCode\", \"roomCode\", \"roomCode\", \"text\", reservation_details.roomCode));\n      form.appendChild(createFormField(\"RatePlanID\", \"RatePlanID\", \"RatePlanID\", \"text\", reservation_details.ratesPlan));\n      form.appendChild(createFormField(\"checkIn\", \"checkIn\", \"checkIn\", \"text\", reservation_details.checkIn));\n      form.appendChild(createFormField(\"checkOut\", \"checkOut\", \"checkOut\", \"text\", reservation_details.checkOut));\n      form.appendChild(createFormField(\"adults\", \"adults\", \"adults\", \"text\", reservation_details.adults));\n      form.appendChild(createFormField(\"children\", \"children\", \"children\", \"text\", reservation_details.children));\n      form.appendChild(createFormField(\"children_ages\", \"children_ages\", \"children_ages\", \"text\", reservation_details.children_ages));\n\n      let title_pax = document.createElement(\"h3\");\n      title_pax.textContent = \"Pax contact details\";\n      form.appendChild(title_pax);\n\n      let contactArea = document.createElement(\"div\");\n\n      for(let i=0; i < parseInt(reservation_details.adults); i++){\n        let paxForm = contactForPax(i+1);\n        contactArea.appendChild(paxForm);\n      }\n      form.appendChild(contactArea);\n\n      container.appendChild(form);\n      document.getElementById(\"viewArea\").appendChild(container);\n      document.getElementById(\"rooms_list\").classList.add(\"disabled\");\n\n      let SendHotelReservation = document.createElement(\"div\");\n      SendHotelReservation.className = \"ui teal button\";\n      SendHotelReservation.textContent = \"Send Hotel Reservation\";\n      SendHotelReservation.onclick = function() {\n        // Implement booking functionality here\n        //alert(`Sending reservation`);\n        SendHotelReservationFunction(form);\n      };\n      form.appendChild(SendHotelReservation);\n    }\n\n    function contactForPax(index){\n      let container = document.createElement(\"div\");\n      container.className = \"ui segment\";\n\n      let title = document.createElement(\"h3\");\n      title.textContent = \"Contact for Pax #\" + index;\n      container.appendChild(title);\n\n      let form = document.createElement(\"div\");\n      form.className = \"ui form\";\n\n      let first_name = document.createElement(\"input\");\n      first_name.type = \"text\";\n      first_name.name = \"first_name_\" + index;\n      first_name.placeholder = \"First Name\";\n      form.appendChild(first_name);\n\n      let last_name = document.createElement(\"input\");\n      last_name.type = \"text\";\n      last_name.name = \"last_name_\" + index;\n      last_name.placeholder = \"Last Name\";\n      form.appendChild(last_name);\n\n      let email = document.createElement(\"input\");\n      email.type = \"email\";\n      email.name = \"email_\" + index;\n      email.placeholder = \"Email\";\n      form.appendChild(email);\n\n      let phone = document.createElement(\"input\");\n      phone.type = \"tel\";\n      phone.name = \"phone_\" + index;\n      phone.placeholder = \"Phone\";\n      form.appendChild(phone);\n      container.appendChild(form);\n      return container\n    }\n\n\n    function SendHotelReservationFunction(form) {\n      var warnings_area = document.getElementById(\"warnings_area\");\n      warnings_area.innerHTML = \"\";\n      let formData = new FormData(form);\n      let jsonData = {};\n\n      formData.forEach( (value, key) => {\n        jsonData[key] = value;\n      });\n\n      jsonData.api_key = 'yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du';\n\n      fetch(`/Omnibees/SendHotelResInitiate`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify(jsonData)\n      })\n        .then(response => response.json())\n        .then(data => {\n          jsonViewer.data = data;\n          return data;\n        })\n        .then(data => {\n          if(data.WarningsType !== null){\n            data.WarningsType.forEach(warning => {\n              console.warn('Warning:', warning);\n              let warning_item = document.createElement(\"div\");\n              warning_item.className = \"item\";\n              warning_item.textContent = warning;\n              warnings_area.appendChild(warning_item);\n            });\n          }else{\n            if(data.HotelReservationsType !== null){\n              if(data.HotelReservationsType.HotelReservations.length >0){\n                var reservation_code = data.HotelReservationsType.HotelReservations[0].UniqueID.ID;\n                var transaction_id = data.TransactionIdentifier;\n                console.log('Reservation Code:', reservation_code);\n                console.log('Transaction ID:', transaction_id);\n                alert(`Reservation successful! Your reservation code is: ${reservation_code}`);\n                ShowCommitArea(reservation_code, transaction_id);\n              }\n            }\n          }\n          \n        })\n        .catch(error => console.error('Error:', error))\n        .finally(() => {\n          jsonViewerContainer.classList.remove(\"loading\");\n          jsonViewerContainer.classList.remove(\"disabled\");\n          //event.target.classList.add(\"active\");\n          setActiveMenuItem();\n        });\n    }\n\n    function ShowCommitArea(reservation_code, transaction_id) {\n      var commit_area = document.createElement(\"div\");\n      commit_area.className = \"ui segment\";\n\n      let title = document.createElement(\"h3\");\n      title.textContent = \"Commit Reservation\";\n      commit_area.appendChild(title);\n\n      let form = document.createElement(\"form\");\n      form.className = \"ui form\";\n\n      form.appendChild(createFormField(\"reservationId\", \"reservationId\", \"Reservation ID\", \"text\", reservation_code));\n\n      form.appendChild(createFormField(\"transactionId\", \"transactionId\", \"Transaction ID\", \"text\", transaction_id));\n\n      var button = document.createElement(\"div\");\n      button.className = \"ui teal button\";\n      button.textContent = \"Commit Reservation\";\n      button.onclick = function() {\n        sendCommit(reservation_code, transaction_id);\n      };\n      form.appendChild(button);\n\n      commit_area.appendChild(form);\n      document.getElementById(\"viewArea\").appendChild(commit_area);\n    }\n\n    function sendCommit(reservationId, transactionId) {\n      var commitData = {\n        reservationId: reservationId,\n        transactionId: transactionId,\n        api_key: 'yOhwJPXl1kMW9Zs2Cv7tszKBD90iH9Du'\n      };\n\n      fetch(`/Omnibees/SendHotelResCommit`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify(commitData)\n      })\n        .then(response => response.json())\n        .then(data => {\n          if(data.WarningsType !== null){\n            data.WarningsType.forEach(warning => {\n              console.warn('Warning:', warning);\n              let warning_item = document.createElement(\"div\");\n              warning_item.className = \"item\";\n              warning_item.textContent = warning;\n              warnings_area.appendChild(warning_item);\n            });\n          }else{\n            if(data.ResResponseType == \"Commited\"){\n              alert(`Reservation committed successfully!`);\n            }else{\n              alert(`Reservation commit failed: ${data.ResResponseType}`);\n            }\n          }\n          \n        })\n        .catch(error => console.error('Error:', error));\n    }\n\n    function showReservationList(data){\n      let viewArea = document.getElementById(\"viewArea\");\n      viewArea.innerHTML = \"\";\n      let container = document.createElement(\"div\");\n      container.className = \"ui segment\";\n      viewArea.appendChild(container);\n      let title = document.createElement(\"h3\");\n      title.textContent = \"Reservations List\";\n      container.appendChild(title);\n\n      let list = document.createElement(\"div\");\n      list.className = \"ui list\";\n      container.appendChild(list);\n\n      data.HotelReservationsType.HotelReservations.forEach(reservation => {\n        let item = document.createElement(\"div\");\n        item.className = \"item\";\n\n        let content = document.createElement(\"div\");\n        content.className = \"content\";\n\n        let header = document.createElement(\"div\");\n        header.className = \"header\";\n        header.textContent = `Reservation ID: ${reservation.UniqueID.ID} `;\n\n        let description = document.createElement(\"div\");\n        description.className = \"description\";\n        description.innerHTML = ``;\n        reservation.RoomStaysType.RoomStays.forEach(room => {\n          description.innerHTML += `<p>Room: ${room.IndexNumber} \n          - CheckIn: ${room.RoomRates.EffectiveDate} \n          - CheckOut: ${room.RoomRates.ExpireDate} \n          - Total: ${room.Total.AmountAfterTax}\n          </p>`;\n        });\n        content.appendChild(description);\n\n        content.appendChild(header);\n        item.appendChild(content);\n        list.appendChild(item);\n      });\n    }\n\n  </script>\n</head>\n<body onload=\"localStart()\">\n  <br>\n  <div class=\"ui container\">\n    <div class=\"ui grid\">\n      <div class=\"sixteen wide column\">\n        <div class=\"ui header\">\n          Omnibees API Test\n        </div>\n      </div>\n      <div class=\" row\">\n        <div class=\"six wide column\">\n          <div class=\"ui vertical fluid  menu\">\n            <a class=\"item\" href=\"#Omnibees/ping\" onClick=\"pings(event);\">Ping</a>\n\n            <a class=\"item generalRequest\" href=\"#Omnibees/GetCountry\" data-rute=\"GetCountry\">GetCountry</a>\n            <a class=\"item generalRequest\" href=\"#Omnibees/GetState\" data-rute=\"GetState\" data-form=\"getStateForm\">GetState</a>\n            <div class=\"item\">\n              <form action=\"\" id=\"getStateForm\">\n                <div class=\"ui form\">\n                  <div class=\"field\">\n                    <label for=\"country_uid\">Country Code</label>\n                    <input type=\"text\" id=\"country_uid\" name=\"country_uid\" value=\"\" placeholder=\"\">\n                  </div>\n                  <div class=\"field\">\n                    <label for=\"state_search_code\">state search code</label>\n                    <input type=\"text\" id=\"state_search_code\" name=\"state_search_code\" value=\"\" placeholder=\"\">\n                  </div>\n                  <div class=\"field\">\n                    <label for=\"zone_search_code\">zone search code</label>\n                    <input type=\"text\" id=\"zone_search_code\" name=\"zone_search_code\" value=\"\" placeholder=\"\">\n                  </div>\n                  \n                </div>\n              </form>\n\n            </div>\n            <a class=\"item generalRequest\" href=\"#Omnibees/GetCity\" data-rute=\"GetCity\" data-form=\"getCityForm\">GetCity</a>\n            <div class=\"item\">\n              <form action=\"\" id=\"getCityForm\">\n                <div class=\"ui form\">\n                  <div class=\"field\">\n                    <label for=\"country_uid_city\">Country Code</label>\n                    <input type=\"text\" id=\"country_uid_city\" name=\"country_uid\" value=\"\" placeholder=\"\">\n                  </div>\n                  <div class=\"field\">\n                    <label for=\"state_search_code_city\">state search code</label>\n                    <input type=\"text\" id=\"state_search_code_city\" name=\"state_search_code\" value=\"\" placeholder=\"\">\n                  </div>\n                  \n                </div>\n              </form>\n\n            </div>\n            <a class=\"item generalRequest\" href=\"#Omnibees/GetZones\" data-rute=\"GetZones\" data-form=\"getZonesForm\">GetZones</a>\n            <div class=\"item\">\n              <form action=\"\" id=\"getZonesForm\">\n                <div class=\"ui form\">\n                  <div class=\"field\">\n                    <label for=\"country_uid_zone\">Country Code</label>\n                    <input type=\"text\" id=\"country_uid_zone\" name=\"country_uid\" value=\"\" placeholder=\"\">\n                  </div>\n                  <div class=\"field\">\n                    <label for=\"state_search_code_zone\">state search code</label>\n                    <input type=\"text\" id=\"state_search_code_zone\" name=\"state_search_code\" value=\"\" placeholder=\"\">\n                  </div>\n                  <div class=\"field\">\n                    <label for=\"zone_search_code_zone\">zone search code</label>\n                    <input type=\"text\" id=\"zone_search_code_zone\" name=\"zone_search_code\" value=\"\" placeholder=\"\">\n                  </div>\n                  <div class=\"field\">\n                    <label for=\"cities_data_uid_zone\">cities data uid</label>\n                    <input type=\"text\" id=\"cities_data_uid_zone\" name=\"cities_data_uid\" value=\"\" placeholder=\"\">\n                  </div>\n                  \n                </div>\n              </form>\n\n            </div>\n            <div class=\"ui divider\"></div>\n            <a class=\"item\" href=\"#Omnibees/HotelSearch\" onClick=\"hotelSearch(event)\">HotelSearch</a>\n            <div class=\"item\">\n              <div class=\"header\">GetHotelDescriptiveInfo</div>\n              <div class=\"menu\">\n              \n                  <a href=\"#viewHotel_198335\" class=\"item\" onClick=\"GetHotelDescriptiveInfo(event,6220)\"> Hotel 6220 - Royal cabo </a>\n              </div>\n            </div>\n            \n            <a class=\"item\" href=\"#Omnibees/HotelAvailCalendar\" onClick=\"ShowReservationStartForm(event)\">Reservation Start</a>\n            <div class=\"item\">\n              <form action=\"\" id=\">HotelAvailCalendarForm\">\n                <div class=\"ui form\">\n                  <div class=\"field\">\n                    <label for=\"resort_uuid_bookings\">Resort UUID</label>\n                    <input type=\"text\" id=\"resort_uuid_bookings\" name=\"resort_uuid\" value=\"\" placeholder=\"\">\n                  </div>\n                  <div class=\"field\">\n                    <label for=\"from_bookings\">Start date</label>\n                    <input type=\"date\" id=\"from_bookings\" name=\"start_date\" value=\"\" placeholder=\"\">\n                  </div>\n\n                  <div class=\"field\">\n                    <label for=\"to_bookings\">End date</label>\n                    <input type=\"date\" id=\"to_bookings\" name=\"end_date\" value=\"\" placeholder=\"\">\n                  </div>\n\n                </div>\n              </form>\n            </div>\n            <div class=\"item\">\n              <div class=\"header\">GetHotelRatePlans</div>\n              <div class=\"menu\">\n              \n                  <a href=\"#viewHotel_6220\" class=\"item\" onClick=\"GetHotelRatePlans(event,6220,'')\"> Hotel 6220 - Royal cabo </a>\n              </div>\n            </div>\n            <a class=\"item\" href=\"#Omnibees/SendHotelRes\">SendHotelRes</a>\n            <a class=\"item\" href=\"#Omnibees/SendHotelResCommit\">SendHotelResCommit</a>\n            <a class=\"item\" href=\"#Omnibees/SendHotelResModify\">SendHotelResModify</a>\n            <a class=\"item\" href=\"#Omnibees/SendHotelResModifyCommit\">SendHotelResModifyCommit</a>\n            <a class=\"item\" href=\"#Omnibees/SendHotelResCancel\">SendHotelResCancel</a>\n            \n            <a class=\"item generalRequest\" href=\"#Omnibees/GetBookings\" data-rute=\"GetBookings\" data-form=\"getBookingsForm\" data-postSecuence=\"showReservationList\">GetBookings</a>\n            <div class=\"item\">\n              <form action=\"\" id=\"getBookingsForm\">\n                <div class=\"ui form\">\n                  <div class=\"field\">\n                    <label for=\"resort_uuid_bookings\">Resort UUID</label>\n                    <input type=\"text\" id=\"resort_uuid_bookings\" name=\"resort_uuid\" value=\"\" placeholder=\"\">\n                  </div>\n                  <div class=\"field\">\n                    <label for=\"from_bookings\">Start date</label>\n                    <input type=\"date\" id=\"from_bookings\" name=\"start_date\" value=\"\" placeholder=\"\">\n                  </div>\n\n                  <div class=\"field\">\n                    <label for=\"to_bookings\">End date</label>\n                    <input type=\"date\" id=\"to_bookings\" name=\"end_date\" value=\"\" placeholder=\"\">\n                  </div>\n\n                </div>\n              </form>\n            </div>\n            \n          </div>\n        </div>\n        <div class=\"ten wide column\" id=\"viewArea\">\n          \n        </div>\n      </div>\n      <div class=\"sixteen wide column\">\n        <div class=\"ui divider\"></div>\n        <div class=\"ui header\">\n           Logs\n        </div>\n      </div>\n      <div class=\" row\">\n        <div class=\"sixteen wide column\">\n          <div class=\"ui basic segment\" id=\"jsonViewerContainer\" style=\"padding:0;\">\n            <andypf-json-viewer id=\"jsonViewer\"></andypf-json-viewer>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <script>\n    const jsonViewer = document.getElementById(\"jsonViewer\");\n    jsonViewer.id = \"json\"\n    jsonViewer.expanded = 2\n    jsonViewer.indent = 2\n    jsonViewer.showDataTypes = true\n    jsonViewer.theme = \"monokai\"\n    jsonViewer.showToolbar = true\n    jsonViewer.showSize = true\n    jsonViewer.showCopy = true\n    jsonViewer.expandIconType = \"square\"\n    jsonViewer.data = { example: \"data\" }\n\n\n    \n  </script>\n</body>\n</html>"}} {"uid":"054aefe"}
