<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Feedback extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('MessageModel', '', TRUE);
    }

    public function index() {
        if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));

        $feedback = $this->MessageModel->getFeedbackMessages();

        $this->load->view('admin/sidebar', ['title' => 'Feedback-Nachrichten']);
        $this->load->view('admin/feedback', ['feedback' => $feedback]);
        $this->load->view('admin/footer', ['additionalScripts' => 'feedback.js']);
    }

    public function takeover($id = null, $state = 1) {
        if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));

        if($id != null) {
            $this->MessageModel->setFeedbackSupporter($id, $_SESSION['user']['ID'], $state);
        }

        redirect(base_url('admin/feedback'));
    }

    public function change($id) {
        if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) redirect(base_url('login'));

        if($id != null) {
            $newStatus = $this->input->post('feedbackState');

            $this->MessageModel->updateState($id, $_SESSION['user']['ID'], $newStatus);
        }

        redirect(base_url('admin/feedback'));
    }

    public function archive() {
//        header('Content-Type: application/json');
        if (!isset($_SESSION['user']) || empty($_SESSION['user']) || $_SESSION['user']['rank'] < 9) {
            echo json_encode(['type' => 'error', 'message' => 'Du musst eingeloggt sein, um Feedbacks zu beantworten.']);
            exit;
        }

        $feedbackID = intval($this->input->post('id'));

        if(!is_numeric($feedbackID)) {
            echo json_encode(['type' => 'error', 'message' => 'Die angegebene Feedback-ID ist ungültig.']);
            exit;
        }

        $successful = $this->MessageModel->archiveFeedback($feedbackID);

        if($successful) {
            echo json_encode(['type' => 'success', 'message' => 'Das Feedback wurde erfolgreich gelöscht.']);
        } else {
            echo json_encode(['type' => 'error', 'message' => 'Das Feedback muss vor dem Löschen zuerst bearbeitet und geschlossen werden.']);
        }
    }
}