Skip to content
Snippets Groups Projects
Commit 223432f8 authored by Nigel  Sahl's avatar Nigel Sahl
Browse files

feat: add ajax to soap service (not done yet)

parent 6e0d5dfe
Branches
Tags
No related merge requests found
......@@ -27,6 +27,8 @@ AuthMiddleware::getInstance()->secureRoute(true);
<div class="app">
<script>
const apikey = <?php echo json_encode($_ENV['API_KEY']) ?>;
const soapkey = <?php echo json_encode($_ENV['AUTHORIZATION']) ?>;
const soapurl = <?php echo json_encode($_ENV['SOAP_URL']) ?>;
</script>
<?php
echo NavbarAdmin();
......@@ -118,7 +120,7 @@ AuthMiddleware::getInstance()->secureRoute(true);
<script src="/public/javascript/gym/application.js"></script>
<script src="/public/javascript/gym/trainer.js"></script>
<script>
getGymTrainers();
// getGymTrainers(<?php echo $gym_id ?>);
getGymApplication(<?php echo $gym_id ?>);
</script>
</body>
......
......@@ -4,23 +4,33 @@ function hidePopupRej() { document.querySelector(`#pop-up-reject`).style.display
function showPopupRej() { document.querySelector(`#pop-up-reject`).style.display = "flex";}
// dummy data
let trainer = {
username: "johndoe",
gym_id: 43,
acceptance: 0,
trainer_name: "John Doe",
trainer_description: "Aku ingin bekerja",
application_description: "Aku ingin bekerja di sebuah gym, aku memiliki semangat di gym 43 ini semoga bisa keterima. Sekian dan terima kasih atas perhatian dan kesan dan pesannya",
}
let trainer2 = {
username: "johndoedfdf",
gym_id: 43,
acceptance: 0,
trainer_name: "John Doe",
trainer_description: "Aku ingin bekerja",
application_description: "Aku ingin bekerja",
}
let data = [trainer, trainer2];
// let trainer = {
// username: "johndoe",
// gym_id: 43,
// acceptance: 0,
// trainer_name: "John Doe",
// trainer_description: "Aku ingin bekerja",
// application_description: "Aku ingin bekerja di sebuah gym, aku memiliki semangat di gym 43 ini semoga bisa keterima. Sekian dan terima kasih atas perhatian dan kesan dan pesannya",
// }
// let trainer2 = {
// username: "johndoedfdf",
// gym_id: 43,
// acceptance: 0,
// trainer_name: "John Doe",
// trainer_description: "Aku ingin bekerja",
// application_description: "Aku ingin bekerja",
// }
// let data = [trainer, trainer2];
const response = `<?xml version="1.0"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getAllAplicationResponse xmlns:ns2="http://service.gymtracker.com/">
<return>[nerbi1, 37, 0, Rayhan, Let's get some gainz brah, Give me a job]
[nerbi2, 37, 1, Rayhan, Let's get some gainz brah, Give me a job]
[nerbi3, 37, 0, Nigel, Let's get some gainz brah, Give me a job]</return>
</ns2:getAllAplicationResponse>
</S:Body>
</S:Envelope>`
function modifyGymApplicationList(data) {
......@@ -29,7 +39,7 @@ function modifyGymApplicationList(data) {
if (data.length == 0) {
gymApplicationList.innerHTML = `
<div class="space"></div>
<div class="gym-card-text"> No Aplication found </div>
<div class="gym-card-text"> No Application found </div>
`;
}
data.forEach((trainer) => {
......@@ -38,24 +48,39 @@ function modifyGymApplicationList(data) {
}
function getGymApplication(gymId) {
modifyGymApplicationList(data);
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
modifyGymApplicationList(filterApplication(parseXmlResponse(response), 0));
showGymTrainers(filterApplication(parseXmlResponse(response), 1));
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState === 4) {
if (this.status === 200) {
modifyGymApplicationList(JSON.parse(this.responseText)["trainers"]);
} else {
const json = JSON.parse(this.responseText);
alert(json["error"]);
}
if (this.status === 200) {
const applications = parseXmlResponse(this.responseText);
alert("trainer : " + applications);
modifyGymApplicationList(filterApplication(applications, 0));
showGymTrainers(filterApplication(applications, 1));
} else {
const xml = this.responseXML;
alert("error status : " + this.status + " error text : " + xml);
}
}
};
// xhr.open("GET", `/api/gym/rating?gym_id=${gymId}`, true);
// xhr.setRequestHeader("X-API-KEY", apikey);
xhr.send();
};
const soapBody = `<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getAllAplication xmlns="http://service.gymtracker.com/">
<gym_id xmlns="">${gymId}</gym_id>
</getAllAplication>
</Body>
</Envelope>`;
// alert("soapbody : " + soapBody);
xhr.open("POST", soapurl, true);
xhr.setRequestHeader("Content-Type", "text/xml");
xhr.setRequestHeader("Authorization", soapkey);
xhr.send(soapBody);
}
function getApplication(username, gymId) {
// alert("get application with username: " + username + " and gym id: " + gymId);
modifyApplication(trainer);
......@@ -128,4 +153,34 @@ function modifyApplication(trainer) {
</tr>
</table>
`
}
function parseXmlResponse(xmlString) {
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "text/xml");
const returnElement = xmlDoc.getElementsByTagName("return")[0];
const returnText = returnElement.textContent;
// Split the return text into an array of trainer strings
const trainerStrings = returnText.split("\n").filter(str => str.trim() !== "");
// Parse each trainer string into a trainer object
const trainers = trainerStrings.map(trainerString => {
const values = trainerString.replace("[", "").replace("]", "").split(", ");
return {
username: values[0],
gym_id: parseInt(values[1]),
acceptance: parseInt(values[2]),
trainer_name: values[3],
trainer_description: values[4],
application_description: values[5]
};
});
return trainers;
}
function filterApplication(Applications, acc){
// filter Application with Acceptance acc
return Applications.filter(application => application.acceptance == acc);
}
\ No newline at end of file
......@@ -29,9 +29,9 @@ let trainer_1 = {
let trainerData = [trainer_1, trainer_2];
// Functions
function getGymTrainers() {
showGymTrainers(trainerData);
}
// function getGymTrainers(gymId) {
// showGymTrainers(trainerData);
// }
function showGymTrainers(data) {
const gymTrainerList = document.getElementById("gym-trainer-list");
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment