diff --git a/application/controllers/Hamsat.php b/application/controllers/Hamsat.php index 34ee8b9dc..306ec89e0 100644 --- a/application/controllers/Hamsat.php +++ b/application/controllers/Hamsat.php @@ -126,11 +126,17 @@ class Hamsat extends CI_Controller { } $decoded_json->data[$i]->mode_class = $modeclass; for($j = 0; $j < count($decoded_json->data[$i]->grids); $j++) { - $worked = $this->logbook_model->check_if_grid_worked_in_logbook(substr($decoded_json->data[$i]->grids[$j], 0, 4), null, "SAT"); - if ($worked->num_rows() != 0) { + $worked = $this->logbook_model->check_sat_grid(substr($decoded_json->data[$i]->grids[$j], 0, 4), true); + switch ($worked) { + case 2: + $decoded_json->data[$i]->grids_wkd[$j] = 2; + break; + case 1: $decoded_json->data[$i]->grids_wkd[$j] = 1; - } else { + break; + default: $decoded_json->data[$i]->grids_wkd[$j] = 0; + break; } } diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index b2f01406c..8e591de0c 100644 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -2685,6 +2685,28 @@ class Logbook_model extends CI_Model { return $query->num_rows(); } + function check_sat_grid($grid) { + $this->load->model('logbooks_model'); + $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + $sql = "SELECT COALESCE(NULLIF(COL_LOTW_QSL_RCVD, ''), 'N') AS lotw, + COALESCE(NULLIF(COL_QSL_RCVD, ''), 'N') as qsl, COUNT(COL_PRIMARY_KEY) AS count + FROM ".$this->config->item('table_name')." + WHERE COL_PROP_MODE = 'SAT' + AND ( SUBSTRING(COL_GRIDSQUARE, 1, 4) = ? OR COL_VUCC_GRIDS LIKE ? ) + AND station_id in ('".implode("','", $logbooks_locations_array)."') + GROUP BY COL_LOTW_QSL_RCVD, COL_QSL_RCVD;"; + $query = $this->db->query($sql, array($grid, "%".$grid."%")); + if ($query->num_rows() > 0) { + foreach ($query->result() as $row) { + if ($row->count > 0 && ($row->lotw == 'Y' || $row->qsl == 'Y')) { + return 2; + } + } + return 1; + } else { + return 0; + } + } function check_if_grid_worked_in_logbook($grid, $StationLocationsArray = null, $band = null, $cnfm = null) { diff --git a/assets/js/sections/hamsat.js b/assets/js/sections/hamsat.js index 7c43b10cf..b177cccef 100644 --- a/assets/js/sections/hamsat.js +++ b/assets/js/sections/hamsat.js @@ -152,10 +152,16 @@ function loadActivationsTable(rows, show_workable_only) { grids = []; for (var j=0; j < activation.grids_wkd.length; j++) { if (!grids.some(str => str.includes(activation.grids[j].substring(0, 4)))) { - if (activation.grids_wkd[j] == 1) { - grids.push(""+activation.grids[j].substring(0, 4)+"") - } else { - grids.push(""+activation.grids[j].substring(0, 4)+"") + switch (activation.grids_wkd[j]) { + case 1: + grids.push(""+activation.grids[j].substring(0, 4)+"") + break; + case 2: + grids.push(""+activation.grids[j].substring(0, 4)+"") + break; + default: + grids.push(""+activation.grids[j].substring(0, 4)+"") + break; } } }