From e70039661a01eb197d2eb1202f9ccac63271eee6 Mon Sep 17 00:00:00 2001 From: AndreasK79 Date: Sun, 9 Feb 2020 13:20:59 +0100 Subject: [PATCH] Added WAS (Worked All States) under awards. It's based on the same layout as the DXCC award. Display of qsoes when clicking a CQ-zone was also fixed. --- application/controllers/Awards.php | 50 ++++++++- application/models/Logbook_model.php | 28 +++++ application/models/Was.php | 135 +++++++++++++++++++++++ application/views/awards/cq/details.php | 7 ++ application/views/awards/cq/index.php | 94 ++++++++-------- application/views/awards/nav_bar.php | 1 + application/views/awards/was/details.php | 7 ++ application/views/awards/was/index.php | 40 +++++++ 8 files changed, 310 insertions(+), 52 deletions(-) create mode 100644 application/models/Was.php create mode 100644 application/views/awards/cq/details.php create mode 100644 application/views/awards/was/details.php create mode 100644 application/views/awards/was/index.php diff --git a/application/controllers/Awards.php b/application/controllers/Awards.php index 38becef5..2a9009e7 100644 --- a/application/controllers/Awards.php +++ b/application/controllers/Awards.php @@ -75,8 +75,7 @@ class Awards extends CI_Controller { $this->load->view('interface_assets/footer'); } - public function dxcc () - { + public function dxcc () { //echo "Needs Developed"; $this->load->model('dxcc'); $data['dxcc'] = $this->dxcc->show_stats(); @@ -94,7 +93,6 @@ class Awards extends CI_Controller { $this->load->model('logbook_model'); - $country = str_replace('"', "", $this->input->get("Country")); $band = str_replace('"', "", $this->input->get("Band")); $data['results'] = $this->logbook_model->dxcc_qso_details($country, $band); @@ -106,7 +104,7 @@ class Awards extends CI_Controller { $this->load->view('awards/dxcc/details'); $this->load->view('interface_assets/footer'); } - + /* Handles Displaying of WAB Squares worked. Comment field - WAB:# @@ -172,4 +170,46 @@ class Awards extends CI_Controller { $this->load->view('awards/cq/index'); $this->load->view('interface_assets/footer'); } -} + + public function cq_details(){ + $this->load->model('logbook_model'); + + $cqzone = str_replace('"', "", $this->input->get("CQZone")); + $data['results'] = $this->logbook_model->cq_qso_details($cqzone); + + // Render Page + $data['page_title'] = "Log View - DXCC"; + $data['filter'] = "CQZone ".$cqzone; + $this->load->view('interface_assets/header', $data); + $this->load->view('awards/cq/details'); + $this->load->view('interface_assets/footer'); + } + + public function was() { + $this->load->model('was'); + $data['was'] = $this->was->show_stats(); + $data['worked_bands'] = $this->was->get_worked_bands(); + + // Render Page + $data['page_title'] = "Awards - WAS (Worked all states)"; + $this->load->view('interface_assets/header', $data); + $this->load->view('awards/was/index'); + $this->load->view('interface_assets/footer'); + } + + public function was_details() { + $this->load->model('logbook_model'); + + $state = str_replace('"', "", $this->input->get("State")); + $band = str_replace('"', "", $this->input->get("Band")); + $data['results'] = $this->logbook_model->was_qso_details($state, $band); + + // Render Page + $data['page_title'] = "Log View - WAS"; + $data['filter'] = "state ".$state. " and ".$band; + $this->load->view('interface_assets/header', $data); + $this->load->view('awards/was/details'); + $this->load->view('interface_assets/footer'); + } + +} \ No newline at end of file diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 7f54a20f..bb1f7a5b 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -190,6 +190,34 @@ class Logbook_model extends CI_Model { return $this->db->get($this->config->item('table_name')); } + public function cq_qso_details($cqzone){ + $CI =& get_instance(); + $CI->load->model('Stations'); + $station_id = $CI->Stations->find_active(); + + $this->db->where('station_id', $station_id); + $this->db->where('COL_CQZ', $cqzone); + + return $this->db->get($this->config->item('table_name')); + } + + public function was_qso_details($state, $band){ + $CI =& get_instance(); + $CI->load->model('Stations'); + $station_id = $CI->Stations->find_active(); + + $this->db->where('station_id', $station_id); + $this->db->where('COL_STATE', $state); + $this->db->where_in('COL_DXCC', ['291', '6', '110']); + if($band != "SAT") { + $this->db->where('COL_BAND', $band); + } else { + $this->db->where('COL_PROP_MODE', "SAT"); + } + + return $this->db->get($this->config->item('table_name')); + } + public function get_callsigns($callsign){ $this->db->select('COL_CALL'); $this->db->distinct(); diff --git a/application/models/Was.php b/application/models/Was.php new file mode 100644 index 00000000..9a8300ad --- /dev/null +++ b/application/models/Was.php @@ -0,0 +1,135 @@ +0, + "80m"=>0, + "60m"=>0, + "40m"=>0, + "30m"=>0, + "20m"=>0, + "17m"=>0, + "15m"=>0, + "12m"=>0, + "10m"=>0, + "6m" =>0, + "4m" =>0, + "2m" =>0, + "70cm"=>0, + "23cm"=>0, + "13cm"=>0, + "9cm"=>0, + "6cm"=>0, + "3cm"=>0, + "1.25cm"=>0, + "SAT"=>0, + ); + + function __construct() + { + // Call the Model constructor + parent::__construct(); + } + + function get_worked_bands() { + $CI =& get_instance(); + $CI->load->model('Stations'); + $station_id = $CI->Stations->find_active(); + + // get all bands where we have worked states, need to filter on correct dxcc and state (as Cloudlog aren't always setting correct dxcc on import) + $data = $this->db->query( + "SELECT distinct LOWER(`COL_BAND`) as `COL_BAND` FROM `".$this->config->item('table_name')."` WHERE COL_DXCC in ('291', '6', '110') + and COL_STATE in ('AK','AL','AR','AZ','CA','CO','CT','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY') + and station_id = ".$station_id." AND COL_PROP_MODE != \"SAT\"" + ); + + $worked_slots = array(); + foreach($data->result() as $row){ + array_push($worked_slots, $row->COL_BAND); + } + + $SAT_data = $this->db->query( + "SELECT distinct LOWER(`COL_PROP_MODE`) as `COL_PROP_MODE` FROM `".$this->config->item('table_name')."` WHERE COL_DXCC in ('291', '6', '110') + and COL_STATE in ('AK','AL','AR','AZ','CA','CO','CT','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY') + and station_id = ".$station_id." AND COL_PROP_MODE = \"SAT\"" + ); + + foreach($SAT_data->result() as $row){ + array_push($worked_slots, strtoupper($row->COL_PROP_MODE)); + } + + // bring worked-slots in order of defined $bandslots + $results = array(); + foreach(array_keys($this->bandslots) as $slot) { + if(in_array($slot, $worked_slots)) { + array_push($results, $slot); + } + } + + return $results; + } + + function show_stats(){ + $CI =& get_instance(); + $CI->load->model('Stations'); + $station_id = $CI->Stations->find_active(); + + $data = $this->db->query( + "select COL_STATE, COL_MODE, lcase(COL_BAND) as COL_BAND, count(COL_STATE) as cnt + from ".$this->config->item('table_name')." + where station_id = ".$station_id." AND COL_PROP_MODE != \"SAT\" + and COL_DXCC in ('291', '6', '110') + and COL_STATE in ('AK','AL','AR','AZ','CA','CO','CT','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY') + group by COL_STATE, COL_MODE, COL_BAND" + ); + + $results = array(); + $last_state = ""; + foreach($data->result() as $row){ + if ($last_state != $row->COL_STATE){ + // new row + $results[$row->COL_STATE] = $this->bandslots; + $last_state = $row->COL_STATE; + } + + // update stats + if (!isset($results[$row->COL_STATE])) + $results[$row->COL_STATE] = []; + + if (!isset($results[$row->COL_STATE][$row->COL_BAND])) + $results[$row->COL_STATE][$row->COL_BAND] = 0; + + $results[$row->COL_STATE][$row->COL_BAND] += $row->cnt; + } + + // Satellite WAS + $satellite_data = $this->db->query( + "select COL_STATE, COL_PROP_MODE as COL_PROP_MODE, count(COL_STATE) as cnt + from ".$this->config->item('table_name')." + where station_id = ".$station_id." AND COL_PROP_MODE = \"SAT\" + and COL_DXCC in ('291', '6', '110') + and COL_STATE in ('AK','AL','AR','AZ','CA','CO','CT','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY') + group by COL_STATE" + ); + + foreach($satellite_data->result() as $row){ + if ($last_state != $row->COL_STATE){ + // new row + $results[$row->COL_STATE] = $this->bandslots; + $last_state = $row->COL_STATE; + } + + // update stats + if (!isset($results[$row->COL_STATE])) + $results[$row->COL_STATE] = []; + + if (!isset($results[$row->COL_STATE][$row->COL_PROP_MODE])) + $results[$row->COL_STATE][$row->COL_PROP_MODE] = 0; + + $results[$row->COL_STATE][$row->COL_PROP_MODE] += $row->cnt; + } + + return $results; + } +} +?> \ No newline at end of file diff --git a/application/views/awards/cq/details.php b/application/views/awards/cq/details.php new file mode 100644 index 00000000..56394d9f --- /dev/null +++ b/application/views/awards/cq/details.php @@ -0,0 +1,7 @@ +
+ +

Logbook

+ +

Filtering on

+ + load->view('view_log/partial/log') ?> diff --git a/application/views/awards/cq/index.php b/application/views/awards/cq/index.php index ab23892c..30794999 100644 --- a/application/views/awards/cq/index.php +++ b/application/views/awards/cq/index.php @@ -6,53 +6,53 @@

CQ Zones worked:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + " usemap="#CQ" border="0"> diff --git a/application/views/awards/nav_bar.php b/application/views/awards/nav_bar.php index fa7ae0fa..3ad416e4 100644 --- a/application/views/awards/nav_bar.php +++ b/application/views/awards/nav_bar.php @@ -2,6 +2,7 @@