voucher.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. $(document).ready(function () {
  2. checkEvent($('#fk_product').val());
  3. $('#fk_product').on('change', function () {
  4. checkEvent($(this).val());
  5. })
  6. });
  7. function checkEvent(value) {
  8. console.log('checkEvent');
  9. if (value == -1) {
  10. $('#eventDateSelector').addClass("TDhideClass");
  11. $('#eventTimeSelector').addClass("TDhideClass");
  12. } else {
  13. $("#date").val("");
  14. $('#eventTimeSelector').addClass("TDhideClass");
  15. var xhr = new XMLHttpRequest();
  16. xhr.open("GET", "class/voucerhistory_assistant.class.php?product_id=" + value + "&function=checkEvent", true);
  17. xhr.onreadystatechange = function () {
  18. if (xhr.readyState === 4 && xhr.status === 200) {
  19. if (xhr.responseText == 'true') {
  20. GetAllEventsOfTheSelectedProduct(value, function (allowedDates) {
  21. console.log(allowedDates);
  22. const dateInput = document.getElementById('date');
  23. const errorMessage = document.getElementById('error-message');
  24. dateInput.addEventListener('change', function () {
  25. const selectedDate = dateInput.value;
  26. if (!allowedDates.includes(selectedDate)) {
  27. errorMessage.style.display = 'block';
  28. dateInput.value = '';
  29. $("#eventTimeSelector").addClass("TDhideClass");
  30. } else {
  31. errorMessage.style.display = 'none';
  32. generateTimeOptions(value, dateInput.value);
  33. $("#eventTimeSelector").removeClass("TDhideClass");
  34. }
  35. });
  36. if(allowedDates !== '' ){
  37. $("#eventDateSelector").removeClass("TDhideClass");
  38. }
  39. });
  40. } else {
  41. $("#eventDateSelector").val("");
  42. $("#date-range").attr("disabled", true);
  43. $('#eventDateSelector').addClass("TDhideClass");
  44. $('#eventTimeSelector').addClass("TDhideClass");
  45. }
  46. }
  47. };
  48. xhr.send();
  49. }
  50. }
  51. function generateTimeOptions(value, selectedDate) {
  52. var eventId = document.getElementById("eventId");
  53. eventId.innerHTML = '';
  54. GetAllTimesOfTheSelectedEvent(value, selectedDate, function (timeSlots) {
  55. console.log(timeSlots);
  56. Object.entries(timeSlots).forEach(function ([key, time]) {
  57. var option = document.createElement("option");
  58. option.value = key;
  59. option.text = time;
  60. eventId.appendChild(option);
  61. });
  62. });
  63. }
  64. function GetAllTimesOfTheSelectedEvent(value, selectedDate, callback) {
  65. if (value == -1) {
  66. $('#eventDateSelector').addClass("TDhideClass");
  67. } else {
  68. var xhr = new XMLHttpRequest();
  69. xhr.open("GET", "class/voucerhistory_assistant.class.php?product_id=" + value + "&selectedDate=" + selectedDate + "&function=GetAllTimesOfTheSelectedEvent", true);
  70. xhr.onreadystatechange = function () {
  71. if (xhr.readyState === 4 && xhr.status === 200) {
  72. try {
  73. var responseArray = JSON.parse(xhr.responseText);
  74. if (typeof callback === "function") {
  75. callback(responseArray);
  76. } else {
  77. console.error("A callback nem függvény.");
  78. }
  79. } catch (error) {
  80. console.error("Hiba a válasz feldolgozása során:", error);
  81. }
  82. }
  83. };
  84. xhr.send();
  85. }
  86. }
  87. function GetAllEventsOfTheSelectedProduct(value, callback) {
  88. if (value == -1) {
  89. $('#eventDateSelector').addClass("TDhideClass");
  90. } else {
  91. var xhr = new XMLHttpRequest();
  92. xhr.open("GET", "class/voucerhistory_assistant.class.php?product_id=" + value + "&function=GetAllEventsOfTheSelectedProduct", true);
  93. xhr.onreadystatechange = function () {
  94. if (xhr.readyState === 4 && xhr.status === 200) {
  95. try {
  96. if (xhr.responseText != '') {
  97. var responseArray = JSON.parse(xhr.responseText);
  98. if (typeof callback === "function") {
  99. callback(responseArray);
  100. } else {
  101. console.error("A callback nem függvény.");
  102. }
  103. }else{
  104. $('#eventDateSelector').addClass("TDhideClass");
  105. }
  106. } catch (error) {
  107. console.error("Hiba a válasz feldolgozása során:", error);
  108. }
  109. }
  110. };
  111. xhr.send();
  112. }
  113. }