Repository URL to install this package:
|
Version:
3.2.0 ▾
|
<?php
namespace Evsmash\Companies\Http\Admin;
use Evsmash\Core\Http\Base;
use Evsmash\Core\Files\Upload;
use Evsmash\Core\Helpers\Str;
use Evsmash\Core\Input\Post;
use Evsmash\Core\Input\Route;
use Evsmash\Core\Services\Geodecoder;
use Evsmash\Core\Simpy\Element;
use Evsmash\Companies\Company;
use Evsmash\Companies\CompaniesCategory;
use Evsmash\Companies\CompaniesType;
class Companies extends Base {
// index
public function index() {
// elements
if(!Route::get('category')) {
// standard
$elements = Company::params()->paginate(Route::limit(100));
} else {
// category
$category = Element::check(new CompaniesCategory, Route::get('category'));
$elements = $category->companies()->params()->published()->orderBy('created_at', 'desc')->paginate(Route::limit(100));
}
// bar
$bar = [
'create' => '/companies/create',
'search' => true,
'params' => [
['Type', 'type', Element::flat(new CompaniesType)],
['Category', 'category', CompaniesCategory::where('depth', '>', 0)->orderBy('name', 'asc')->pluck('name', 'id')],
['Promoted', 'promoted', ['true' => 'Yes', 'false' => 'No']],
['Published', 'published', ['true' => 'Yes', 'false' => 'No']]
],
'order' => ['id', 'name'],
'summary' => $elements,
'stats' => [
'views' => $elements->sum('views')
]
];
// view
$this->view(compact(['elements', 'bar']));
}
// create
public function create() {
// view
$this->view();
}
// insert
public function insert() {
// slug
Post::set('slug', Str::slug(Post::get('name')));
// insert
Element::insert(new Company, ['name', 'slug', 'type_id']);
}
// edit
public function edit() {
// element
$element = Element::check(new Company);
// view
$this->view(compact(['element']));
}
// update
public function update() {
// categories
Element::updatem2m(new Company, 'categories');
// photo
if(Post::get('remove_photo')) {
$element = Element::check(new Company);
$element->photo = '';
$element->save();
}
// slug
Post::set('slug', Str::slug(Post::get('slug')));
// sneak
if(empty(Post::get('sneak'))) {
Post::set('sneak', Str::words(Post::get('content'), 100));
}
// coordinates
if(!empty(Post::get('address')) AND !Post::get('lat') AND !Post::get('lng')) {
// geodecode
$geodecoder = new Geodecoder(Post::get('address'));
$coordinates = $geodecoder->coordinates();
// set
if($coordinates) {
Post::set('lat', $coordinates->lat);
Post::set('lng', $coordinates->lng);
}
}
// update
Element::update(new Company, ['name', 'slug', 'content', 'sneak', 'email', 'phone', 'address', 'lat', 'lng', 'website', 'type_id'], ['content' => 'html', 'link' => 'domain', 'lat' => 'nullable', 'lng' => 'nullable']);
}
// photo
public function photo() {
// upload
$file = Upload::file(cfg('upload-images'));
// update
$element = Element::check(new Company);
$element->photo = $file->path;
$element->save();
}
// thick
public function thick() {
Element::thick(new Company, ['promoted', 'published']);
}
// delete
public function delete() {
Element::delete(new Company);
}
}