Files
wavelog/application/controllers/Reg1test.php

218 lines
7.0 KiB
PHP

<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
This controller contains features for REG1TEST EDI
*/
class Reg1test extends CI_Controller {
function __construct() {
parent::__construct();
// do authorization check
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('error', __("You're not allowed to do that!")); redirect('dashboard'); }
}
public function index() {
//define Page title
$data['page_title'] = __("Export REG1TEST EDI");
//Load models
$this->load->model('Contesting_model');
$this->load->model('stations');
//get station profile
$data['station_profile'] = $this->stations->all_of_user();
$active_station_id = $this->stations->find_active();
$station_profile = $this->stations->profile($active_station_id);
//set station profile to view data
$data['active_station_info'] = $station_profile->row();
//provide REG1TEST JS
$footerData = [];
$footerData['scripts'] = [
'assets/js/sections/reg1test.js'
];
//load view
$this->load->view('interface_assets/header', $data);
$this->load->view('reg1test/index');
$this->load->view('interface_assets/footer', $footerData);
}
public function getContests() {
//load models
$this->load->model('Contesting_model');
$this->load->model('stations');
//get cleaned station id and year
$station_id = $this->input->post('station_id', true);
$year = $this->input->post('year', true);
//deny acccess if station is not accessible
if (!$this->stations->check_station_is_accessible($station_id)) {
$this->session->set_flashdata('error', __("You're not allowed to do that!"));
redirect('dashboard');
return;
}
//get logged contests for station
$result = $this->Contesting_model->get_logged_contests($station_id, $year);
//return result as json
header('Content-Type: application/json');
echo json_encode($result);
}
public function getYears() {
//load model
$this->load->model('Contesting_model');
//get cleaned station id
$station_id = $this->input->post('station_id', true);
//get logged year for station id
$result = $this->Contesting_model->get_logged_years($station_id);
//return result as json
header('Content-Type: application/json');
echo json_encode($result);
}
public function getContestDates() {
//load models
$this->load->model('Contesting_model');
$this->load->model('stations');
//get cleaned station id
$station_id = $this->input->post('station_id', true);
//deny access if station is not accessible
if (!$this->stations->check_station_is_accessible($station_id)) {
$this->session->set_flashdata('error', __("You're not allowed to do that!"));
redirect('dashboard');
return;
}
//get cleaned year, contest id, from and to values
$year = $this->input->post('year', true);
$contestid = $this->input->post('contestid', true);
//get contestdates from database
$result = $this->Contesting_model->get_contest_dates($station_id, $year, $contestid);
//return result as json
header('Content-Type: application/json');
echo json_encode($result);
}
public function getContestBands() {
//load models
$this->load->model('Contesting_model');
$this->load->model('stations');
//get cleaned station id
$station_id = $this->input->post('station_id', true);
//deny access if station is not accessible
if (!$this->stations->check_station_is_accessible($station_id)) {
$this->session->set_flashdata('error', __("You're not allowed to do that!"));
redirect('dashboard');
return;
}
//get cleaned contest id, from and to values
$contestid = $this->input->post('contestid', true);
$from = $this->input->post('contestdatesfrom', true);
$to = $this->input->post('contestdatesto', true);
//get contestdates from database
$result = $this->Contesting_model->get_contest_bands($station_id, $contestid, $from, $to);
//return result as json
header('Content-Type: application/json');
echo json_encode($result);
}
public function export() {
// Set memory limit to unlimited to allow heavy usage
ini_set('memory_limit', '-1');
//load models
$this->load->model('Contesting_model');
$this->load->model('stations');
$this->load->model('user_model');
//Load distance calculator
$this->load->library('Qra');
//deny access if station is not accessible
$station_id = $this->input->post('station_id', true);
if (!$this->stations->check_station_is_accessible($station_id)) {
$this->session->set_flashdata('error', __("You're not allowed to do that!"));
redirect('dashboard');
return;
}
//get user input to define the export parameters
$contest_id = $this->input->post('contestid', true);
$from = $this->input->post('contestdatesfrom', true);
$to = $this->input->post('contestdatesto', true);
$band = $this->input->post('contestband', true);
//load station
$station = $this->stations->profile($station_id);
$station = $station->row();
//load userinfo
$userinfo = $this->user_model->get_by_id($this->session->userdata('user_id'));
$userinfo = $userinfo->row();
//get qsos and set qso data for export
$data['qsos'] = $this->Contesting_model->export_custom($from, $to, $contest_id, $station_id, $band);
//set contest header data for export
$data['band'] = $band;
$data['qso_count'] = count($data['qsos']->result());
$data['sentexchange'] = $this->input->post('sentexchange', true);
$data['contest_id'] = $contest_id;
$data['from'] = $from;
$data['to'] = $to;
$data['callsign'] = $station->station_callsign;
$data['gridlocator'] = $station->station_gridsquare;
$data['contestaddress1'] = $this->input->post('contestaddress1', true);
$data['contestaddress2'] = $this->input->post('contestaddress2', true);
$data['categoryoperator'] = $this->input->post('categoryoperator', true);
$data['club'] = $this->input->post('club', true);
$data['name'] = $userinfo->user_firstname . ' ' . $userinfo->user_lastname;
$data['responsible_operator'] = $this->input->post('responsible_operator', true);
$data['address1'] = $this->input->post('address1', true);
$data['address2'] = $this->input->post('address2', true);
$data['addresspostalcode'] = $this->input->post('addresspostalcode', true);
$data['addresscity'] = $this->input->post('addresscity', true);
$data['addresscountry'] = $this->input->post('addresscountry', true);
$data['operatorphone'] = $this->input->post('operatorphone', true);
$data['operators'] = $this->input->post('operators', true);
$data['txequipment'] = $this->input->post('txequipment', true);
$data['power'] = $this->input->post('power', true);
$data['rxequipment'] = $this->input->post('rxequipment', true);
$data['antenna'] = $this->input->post('antenna', true);
$data['antennaheight'] = $this->input->post('antennaheight', true);
$data['maxdistanceqso'] = $this->qra->getMaxDistanceQSO($station->station_gridsquare, $data['qsos'], "K");
$data['soapbox'] = $this->input->post('soapbox', true);
//load view for export
$this->load->view('reg1test/export', $data);
}
}