diff --git a/application/controllers/WorkableDXCC.php b/application/controllers/WorkableDXCC.php new file mode 100644 index 00000000..2936c59d --- /dev/null +++ b/application/controllers/WorkableDXCC.php @@ -0,0 +1,161 @@ +load->model('user_model'); + if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } + } + + public function index() { + // Load public view + $data['page_title'] = "Upcoming DXPeditions"; + $this->load->view('interface_assets/header', $data); + $this->load->view('/workabledxcc/index'); + $this->load->view('interface_assets/footer'); + } + + public function dxcclist() { + + $json = file_get_contents('https://oscarwatch.org/scripts/read_ng3k_dxped_list.php'); + + // Decode the JSON data into a PHP array + $dataResult = json_decode($json, true); + + // Initialize an empty array to store the required data + $requiredData = array(); + + // Get Date format + if($this->session->userdata('user_date_format')) { + // If Logged in and session exists + $custom_date_format = $this->session->userdata('user_date_format'); + } else { + // Get Default date format from /config/cloudlog.php + $custom_date_format = $this->config->item('qso_date_format'); + } + + // Iterate through the decoded JSON data + foreach ($dataResult as $item) { + // Create a new array with the required fields and add it to the main array + $oldStartDate = DateTime::createFromFormat('Y-m-d', $item['0']); + + $StartDate = $oldStartDate->format($custom_date_format); + + $oldEndDate = DateTime::createFromFormat('Y-m-d', $item['1']); + + $EndDate = $oldEndDate->format($custom_date_format); + + $this->load->model('logbook_model'); + $dxccInfo = $this->logbook_model->dxcc_lookup($item['callsign'], $StartDate); + + // Call DXCC Worked function to check if the DXCC has been worked before + if (isset($dxccInfo['entity'])) { + $dxccWorked = $this->dxccWorked($dxccInfo['entity']); + } else { + // Handle the case where 'entity' is not set in $dxccInfo + $dxccWorked = array( + 'workedBefore' => false, + 'confirmed' => false, + ); + } + + $requiredData[] = array( + 'start_date' => $StartDate, + 'end_date' => $EndDate, + 'country' => $item['2'], + 'notes' => $item['6'], + 'callsign' => $item['callsign'], + 'workedBefore' => $dxccWorked['workedBefore'], + 'confirmed' => $dxccWorked['confirmed'], + ); + } + + $data['dxcclist'] = $requiredData; + + // Return the array with the required data + + $this->load->view('/workabledxcc/components/dxcclist', $data); + } + + function dxccWorked($country) { + + $return = [ + "workedBefore" => false, + "confirmed" => false, + ]; + + $user_default_confirmation = $this->session->userdata('user_default_confirmation'); + $this->load->model('logbooks_model'); + $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); + $this->load->model('logbook_model'); + + if(!empty($logbooks_locations_array)) { + $this->db->where('COL_PROP_MODE !=','SAT'); + + $this->db->where_in('station_id', $logbooks_locations_array); + $this->db->where('COL_COUNTRY', urldecode($country)); + + $query = $this->db->get($this->config->item('table_name'), 1, 0); + foreach ($query->result() as $workedBeforeRow) + { + $return['workedBefore'] = true; + } + + $extrawhere=''; + if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Q') !== false) { + $extrawhere="COL_QSL_RCVD='Y'"; + } + if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'L') !== false) { + if ($extrawhere!='') { + $extrawhere.=" OR"; + } + $extrawhere.=" COL_LOTW_QSL_RCVD='Y'"; + } + if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'E') !== false) { + if ($extrawhere!='') { + $extrawhere.=" OR"; + } + $extrawhere.=" COL_EQSL_QSL_RCVD='Y'"; + } + + if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Z') !== false) { + if ($extrawhere!='') { + $extrawhere.=" OR"; + } + $extrawhere.=" COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'"; + } + + + $this->load->model('logbook_model'); + $this->db->where('COL_PROP_MODE !=','SAT'); + if ($extrawhere != '') { + $this->db->where('('.$extrawhere.')'); + } else { + $this->db->where("1=0"); + } + + + $this->db->where_in('station_id', $logbooks_locations_array); + $this->db->where('COL_COUNTRY', urldecode($country)); + + $query = $this->db->get($this->config->item('table_name'), 1, 0); + foreach ($query->result() as $workedBeforeRow) { + $return['confirmed']=true; + } + + return $return; + } else { + $return['workedBefore'] = false; + $return['confirmed'] = false; + + + return $return;; + } + } +} diff --git a/application/views/interface_assets/header.php b/application/views/interface_assets/header.php index 1bd27dc1..1b021cad 100644 --- a/application/views/interface_assets/header.php +++ b/application/views/interface_assets/header.php @@ -182,6 +182,8 @@