Segelparade / www / symfonyproject / public / assets / js / backend / conversations.js
conversations.js
Raw
function loadConversations(status) {
    // copied and edited based on status.js
    let spinner = document.querySelector("#spinner");
    let container = document.querySelector("#entries_container");
    container.classList.add("align-items-center");
  
    container.innerHTML = spinner.innerHTML;

    // copied status.js not working here
    // if(!fetched){
    //     if(event){
    //     let allButtons = document.querySelectorAll('.nav-link');
    //     allButtons.forEach(button => {
    //       button.classList.remove('active');
    //     });
    //   event.target.classList.add('active');
    //   }
  
    fetch("/backend/conversations/status/" + status)
      .then(response => response.text()) // Textinhalt der HTML-Datei erhalten
      .then(htmlContent => {
        container.classList.remove("align-items-center");
        container.innerHTML = htmlContent;
        // loadModal();
        // fetched = false;
      });
    }
    //}

function openConversation(id, mail) {
    let message = document.getElementById("topicinput").value;

    fetch("/backend/conversations", {
        method: "POST",
        headers: {
            "Content-Type": "application/json"
        },
        body: JSON.stringify({
            id: id,
            message: message
        })
    })
    .then(response => response.json())
    .then(data => {
        if (data === true) {
            updateConvModal(id);

            // Prepare message
            let subject = 'Segelparade - Bild ' + id + ' Nachfrage ' + message;
            let body = document.getElementById("messageinput").value;
            let mailtoLink = 'mailto:' + mail + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body);

            // Open Mail client and clear inputs
            window.location.href = mailtoLink;
            document.getElementById("messageinput").value = "";
            document.getElementById("topicinput").value = "";

        } else {
            alert("Fehler beim Anlegen der Rückfrage");
        }
    })
    .catch(error => {
        alert('Fehler ' + error);
    });
}
    

function deleteConversation(id) {
    let spinner = document.querySelector("#spinner");
    let container = document.querySelector("#entries_container");
    container.classList.add("align-items-center");
  
    container.innerHTML = spinner.innerHTML;

    fetch("/backend/conversations/" + id , {
        method: "PATCH"
    })
    .then(response => response.json())
    .then(data => {
        if (data === true) {
            loadConversations("open");
            // if accessed from overview of all conversations (Rückfragen in menu) update that view
            if (backend.status == "open") {
                loadConversations("new");
            }
        } else {
            alert("Fehler beim Löschen der Rückfrage");
        }
    })
    .catch(error => {
        alert('Fehler ' + error);
    });
}


function updateConvModal(id) {
    let convContainer = document.getElementById("convContainer");

    fetch("/backend/conversations/image/" + id)
        .then(response => response.json())
        .then(conversations => {
            if (conversations !== false) {
                // Clear convContainer
                convContainer.innerHTML = "";

                // Insert conversations in convContainer
                conversations.forEach(conversation => {
                    if (conversation.type == "open") {
                        convContainer.innerHTML += "<li class='list-group-item d-flex justify-content-between align-items-center'><span>" + conversation.message + "</span><span class='badge text-bg-primary text-lg fs-7 mt-2 mx-1'>Offen</span><button type='button' class='btn btn-success' onclick='markConversationClosed(" + conversation.id + ", " + id + ")'>Als abgeschlossen markieren</button></li>";
                    } else {
                        convContainer.innerHTML += "<li class='list-group-item d-flex justify-content-between align-items-center'><span>" + conversation.message + "</span><span class='badge text-bg-secondary text-lg fs-7 mt-2 mx-1'>Abgeschlossen</span></li>";
                    }
                });

                if (conversations.length === 0) {
                    convContainer.innerHTML = "Noch keine Unterhaltung";
                }
            } else {
                alert("Fehler beim Auslesen der Rückfragen");
            }
        })
        .catch(error => {
            alert('Fehler ' + error);
        });
}