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

class MessageModel extends CI_Model
{

    public function __construct()
    {
        parent::__construct();
    }

    public function getFeedbackMessages() {
        return $this->db->query('SELECT feedback.*, feedback_states.name feedbackStateName, feedback_states.displayname feedbackStateDisplayname, users.username username, users.displayname userDisplayname, supporter.username supporterUsername, supporter.displayname supporterDisplayname FROM feedback LEFT JOIN feedback_states ON feedback.feedbackState = feedback_states.ID LEFT JOIN users ON feedback.userID = users.ID LEFT JOIN users supporter ON feedback.supporterID = supporter.ID ORDER BY feedbackState ASC, datetime DESC')->result_array();
    }

    public function setFeedbackSupporter($feedbackID, $userID, $feedbackState = 1) {
        if($feedbackState == 0)
            $feedbackState = 1;
        $this->db->query('UPDATE feedback SET feedbackState = ?, supporterID = ?, lastStateUpdate = NOW() WHERE ID = ?', [$feedbackState, $userID, $feedbackID]);
    }

    public function updateState($feedbackID, $userID, $feedbackState) {
        $this->db->query('UPDATE feedback SET feedbackState = (SELECT ID FROM feedback_states WHERE name = ?), lastStateUpdate = NOW() WHERE ID = ? AND supporterID = ?', [$feedbackState, $feedbackID, $userID]);
    }

    public function archiveFeedback($feedbackID) {
        $data = $this->db->query('SELECT * FROM feedback WHERE ID = ? AND feedbackState >= 10', [$feedbackID])->result_array();

        if(!empty($data)) {
            $this->db->query('INSERT INTO feedback_archive (ID, page, message, datetime, anonymous, userID, email, feedbackState, feedbackStatusMessage, supporterID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $data[0]);
        }

        return !empty($data);
    }
}