<?php
class ModelLocalisationPackageTracker extends Model {
  public function addTracker($data) {
    $this->db->query("INSERT INTO " . DB_PREFIX . "trackers SET tracker_carrier_name = '" . $this->db->escape($data['tracker_carrier_name']) . "', tracker_carrier_link = '" . $this->db->escape($data['tracker_carrier_link']) . "', tracker_status = '" . $this->db->escape($data['tracker_status']) . "', tracker_image = '" . $this->db->escape($data['tracker_image']) . "', last_modified = NOW(), date_added = NOW()");

    $this->cache->delete('tracker');
  }

  public function editTracker($tracker_id, $data) {
    $this->db->query("UPDATE " . DB_PREFIX . "trackers SET tracker_carrier_name = '" . $this->db->escape($data['tracker_carrier_name']) . "', tracker_carrier_link = '" . $this->db->escape($data['tracker_carrier_link']) . "', tracker_status = '" . $this->db->escape($data['tracker_status']) . "', tracker_image = '" . $this->db->escape($data['tracker_image']) . "', last_modified = NOW() WHERE tracker_id = '" . (int)$tracker_id . "'");

    $this->cache->delete('tracker');
  }

  public function deleteTracker($tracker_id) {
    $this->db->query("DELETE FROM " . DB_PREFIX . "trackers WHERE tracker_id = '" . (int)$tracker_id . "'");

    $this->cache->delete('tracker');
  }

  public function getTracker($tracker_id) {
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "trackers WHERE tracker_id = '" . (int)$tracker_id . "'");

    return $query->row;
  }

  public function getTrackers($data = array()) {
    if ($data) {
      $sql = "SELECT * FROM " . DB_PREFIX . "trackers";

  		if (isset($data['filter_tracker_id']) && !is_null($data['filter_tracker_id'])) {
  			$sql .= " AND tracker_id = '" . (int)$data['filter_tracker_id'] . "'";
  		}

  		if (isset($data['filter_tracker_carrier_name']) && !is_null($data['filter_tracker_carrier_name'])) {
  			$sql .= " AND tracker_carrier_name LIKE '%" . $this->db->escape($data['filter_tracker_carrier_name']) . "%'";
  		}

  		if (isset($data['filter_tracker_status']) && !is_null($data['filter_tracker_status'])) {
  			$sql .= " WHERE tracker_status = '" . (int)$data['filter_tracker_status'] . "'";
  		} else {
  			$sql .= " WHERE tracker_status >= '0'";
  		}

  		if (isset($data['filter_last_modified']) && !is_null($data['filter_last_modified'])) {
  			$sql .= " AND DATE(last_modified) = DATE('" . $this->db->escape($data['filter_last_modified']) . "')";
  		}

  		if (isset($data['filter_date_added']) && !is_null($data['filter_date_added'])) {
  			$sql .= " AND DATE(date_added) = DATE('" . $this->db->escape($data['filter_date_added']) . "')";
  		}

      $sort_data = array(
        'tracker_carrier_name',
        'tracker_carrier_link'
      );

      if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
        $sql .= " ORDER BY " . $data['sort'];
      } else {
        $sql .= " ORDER BY tracker_carrier_name";
      }

      if (isset($data['order']) && ($data['order'] == 'DESC')) {
        $sql .= " DESC";
      } else {
        $sql .= " ASC";
      }

      if (isset($data['start']) || isset($data['limit'])) {
        if ($data['start'] < 0) {
          $data['start'] = 0;
        }

        if ($data['limit'] < 1) {
          $data['limit'] = 20;
        }

        $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
      }

      $query = $this->db->query($sql);

      return $query->rows;
    } else {
      $tracker_data = $this->cache->get('tracker');

      if (!$tracker_data) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "trackers ORDER BY tracker_carrier_name ASC");

        $tracker_data = $query->rows;

        $this->cache->set('tracker', $tracker_data);
      }

      return $tracker_data;
    }
  }

  public function getTotalTrackers() {
    $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "trackers");

    return $query->row['total'];
  }
}
?>