From 52401647f94059ec15eb34701074841b15078d9c Mon Sep 17 00:00:00 2001 From: Andreas <6977712+AndreasK79@users.noreply.github.com> Date: Tue, 20 Dec 2022 22:23:22 +0100 Subject: [PATCH] [Logbookadvanced] Saves callsign callbook info in database --- application/controllers/Logbookadvanced.php | 6 ++- application/models/Logbookadvanced_model.php | 43 ++++++++++++++++++++ assets/js/sections/logbookadvanced.js | 2 +- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php index ee300a5d..7b459814 100644 --- a/application/controllers/Logbookadvanced.php +++ b/application/controllers/Logbookadvanced.php @@ -108,6 +108,7 @@ class Logbookadvanced extends CI_Controller { public function updateFromCallbook() { $this->load->model('logbook_model'); + $this->load->model('logbookadvanced_model'); $qsoID = xss_clean($this->input->post('qsoID')); $qso = $this->logbook_model->qso_info($qsoID)->row_array(); @@ -120,8 +121,11 @@ class Logbookadvanced extends CI_Controller { $callbook = $this->logbook_model->loadCallBook($qso['COL_CALL'], $this->config->item('use_fullname')); if ($callbook['callsign'] !== "") { + $this->logbookadvanced_model->updateQsoWithCallbookInfo($qsoID, $qso, $callbook); $qso['COL_NAME'] = trim($callbook['name']); - $qso['COL_QSL_VIA'] = trim($callbook['qslmgr']); + if (isset($callbook['qslmgr'])) { + $qso['COL_QSL_VIA'] = trim($callbook['qslmgr']); + } } $qsoObj = new QSO($qso); diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php index 004f298f..3f39b075 100644 --- a/application/models/Logbookadvanced_model.php +++ b/application/models/Logbookadvanced_model.php @@ -177,4 +177,47 @@ class Logbookadvanced_model extends CI_Model { return array('message' => 'OK'); } } + + public function updateQsoWithCallbookInfo($qsoID, $qso, $callbook) { + $updatedData = array(); + if (!empty($callbook['name']) && empty($qso['COL_NAME'])) { + $updatedData['COL_NAME'] = $callbook['name']; + } + if (!empty($callbook['gridsquare']) && empty($qso['COL_GRIDSQUARE']) && empty($qso['COL_VUCC_GRIDS'] )) { + if (strpos(trim($callbook['gridsquare']), ',') === false) { + $updatedData['COL_GRIDSQUARE'] = strtoupper(trim($callbook['gridsquare'])); + } else { + $updatedData['COL_VUCC_GRIDS'] = strtoupper(trim($callbook['gridsquare'])); + } + } + if (!empty($callbook['city']) && empty($qso['COL_QTH'])) { + $updatedData['COL_QTH'] = $callbook['city']; + } + if (!empty($callbook['lat']) && empty($qso['COL_LAT'])) { + $updatedData['COL_LAT'] = $callbook['lat']; + } + if (!empty($callbook['long']) && empty($qso['COL_LON'])) { + $updatedData['COL_LON'] = $callbook['long']; + } + if (!empty($callbook['iota']) && empty($qso['COL_IOTA'])) { + $updatedData['COL_IOTA'] = $callbook['iota']; + } + if (!empty($callbook['state']) && empty($qso['COL_STATE'])) { + $updatedData['COL_STATE'] = $callbook['state']; + } + if (!empty($callbook['us_county']) && empty($qso['COL_USACA_COUNTIES'])) { + $updatedData['COL_USACA_COUNTIES'] = $callbook['us_county']; + } + if (!empty($callbook['qslmgr']) && empty($qso['COL_QSL_VIA'])) { + $updatedData['COL_QSL_VIA'] = $callbook['qslmgr']; + } + + if (count($updatedData) > 0) { + $this->db->where('COL_PRIMARY_KEY', $qsoID); + $this->db->update($this->config->item('table_name'), $updatedData); + return true; + } + + return false; + } } \ No newline at end of file diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index 22121674..87e0ebff 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -56,7 +56,7 @@ function loadQSOTable(rows) { '
', qso.qsoDateTime, qso.de, - qso.dx, + ''+qso.dx+'', qso.mode, qso.rstS, qso.rstR,