180 lines
3.9 KiB
PHP
180 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace App\Geo\City;
|
|
|
|
use ORM\DBInstance;
|
|
use \App\Core\Template\Output as Output;
|
|
use App\Core\Datatables\Datatables as Datatables;
|
|
|
|
use \App\Geo\City\Classes\City as City;
|
|
|
|
class CityController extends \DefaultController
|
|
{
|
|
|
|
protected $_class = City::class;
|
|
protected $_baseUrl = 'city';
|
|
|
|
/**
|
|
* Index
|
|
* Show the main City list
|
|
*/
|
|
function index()
|
|
{
|
|
Output::render('index');
|
|
}
|
|
|
|
/**
|
|
* Create
|
|
*
|
|
* Render the main City formulary
|
|
*/
|
|
function create()
|
|
{
|
|
Output::render('form', ['id' => 0]);
|
|
}
|
|
|
|
/**
|
|
* Store
|
|
*
|
|
* Store the param on the database
|
|
* @param City $city
|
|
*/
|
|
function store(City $city)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Search
|
|
*
|
|
* Store the param on the database
|
|
* @param City $city
|
|
*/
|
|
function search()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Show
|
|
*
|
|
* Render one register
|
|
*
|
|
* @param City $city
|
|
*/
|
|
function show($city)
|
|
{
|
|
if(is_ajax_request()){
|
|
\RR\Response::json( City::findOne(['code' => ['=', $city]]) )->send();
|
|
return;
|
|
}else{
|
|
$city = City::findOne($city);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Edit
|
|
*
|
|
* Render the formular for a database City
|
|
*
|
|
* @param City $city
|
|
*/
|
|
function edit(City $city)
|
|
{
|
|
Output::render('form', $city);
|
|
}
|
|
|
|
/**
|
|
* Update
|
|
* Store the changes of the param on the database
|
|
*
|
|
* @param City $city
|
|
*/
|
|
function update(City $city)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Destroy
|
|
* If the object has soft delete.
|
|
*
|
|
* @param City $city
|
|
*/
|
|
function destroy(City $city)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Purge
|
|
* Remove object even with soft delete.
|
|
*
|
|
* @param City $city
|
|
*/
|
|
function purge(City $city)
|
|
{
|
|
}
|
|
|
|
public static function searchOrCreate($data)
|
|
{
|
|
|
|
if ($city = City::findOne(['code' => ['=', $data->ibge]])) {
|
|
return $city;
|
|
}
|
|
|
|
$city = new City();
|
|
$city->name = $data->localidade;
|
|
$city->code = $data->ibge;
|
|
$city->state_id = $data->state;
|
|
$city->country_id = $data->country;
|
|
$city->save();
|
|
|
|
return $city;
|
|
}
|
|
|
|
function searchTable()
|
|
{
|
|
$records = [];
|
|
$total = 0;
|
|
|
|
try {
|
|
if ($_POST['search']['value'] != '') {
|
|
$search = [];
|
|
foreach ($this->_class::_searchable as $searchable) {
|
|
$search[$searchable] = ['OR like', $_POST['search']['value']];
|
|
}
|
|
$records = $this->_class::findMany($search, $this->_class::_listable)->get(true);
|
|
} else {
|
|
$records = $this->_class::findAll($this->_class::_listable, ['limit' => $_POST['length'], 'offset' => $_POST['start']])->get();
|
|
}
|
|
$total = DBInstance::queryOne("SELECT count(*) as count FROM {" . $this->_class::_tableName . '}')->count;
|
|
} catch (\Exception $e) {
|
|
if (APP_STATUS != 'production') {
|
|
for ($i = $_POST['start']; $i <= $_POST['length'] + $_POST['start']; $i++) {
|
|
$line = new \stdClass();
|
|
$line->id = $i;
|
|
$line->name = md5($i);
|
|
$records[] = $line;
|
|
}
|
|
$total = 10000;
|
|
}
|
|
}
|
|
|
|
if (!is_array($records)) {
|
|
$records = [$records];
|
|
}
|
|
|
|
foreach ($records as $record) {
|
|
if ($_GET['selective'] == 'true') {
|
|
$record->id = Datatables::getActionMenu($record->id, $this->_baseUrl);
|
|
} else {
|
|
$record->id = Datatables::getSelectMenu($record->code);
|
|
}
|
|
}
|
|
|
|
\RR\Response::json([
|
|
'draw' => $_POST['draw'],
|
|
'recordsTotal' => $total,
|
|
'recordsFiltered' => $total,
|
|
'data' => $records
|
|
])->send();
|
|
}
|
|
}
|