Repository URL to install this package:
|
Version:
3.2.0 ▾
|
<?php
namespace Evsmash\Companies\Http;
use Evsmash\Core\Http\Base;
use Evsmash\Core\Dec\Thumb;
use Evsmash\Core\Files\Upload;
use Evsmash\Core\Helpers\Redirect;
use Evsmash\Core\Helpers\Str;
use Evsmash\Core\Input\Flash;
use Evsmash\Core\Input\Post;
use Evsmash\Core\Input\Route;
use Evsmash\Core\Simpy\Element;
use Evsmash\Core\System\Auth;
use Evsmash\Core\System\Trans;
use Evsmash\Companies\Company;
use Evsmash\Companies\CompaniesCategory;
use Evsmash\Companies\CompaniesType;
class Companies extends Base {
// index
public function index() {
// elements
$elements = Company::params()->published()->with('type')->with('categories')->paginate($this->settings->limit);
// trans
Trans::get($elements, 'companies');
// flash
Flash::set('title', 'Companies');
// view
$this->view(compact(['elements']));
}
// type
public function type() {
// type
$type = Element::check(new CompaniesType);
// element
$elements = Company::params()->published()->where('type_id', $type->id)->with('type')->with('categories')->paginate($this->settings->limit);
// trans
Trans::get($type, 'companies_types');
Trans::get($elements, 'companies');
// flash
Flash::set('title', $type->name);
Flash::set('type', $type->id);
// view
$this->view(compact(['elements']), 'evsmash/companies/companies/index');
}
// category
public function category() {
// category
$category = Element::check(new CompaniesCategory);
// elements
$elements = $category->companies()->params()->published()->with('type')->with('categories')->paginate($this->settings->limit);
// trans
Trans::get($category, 'companies_categories');
Trans::get($elements, 'companies');
// flash
Flash::set('title', $category->name);
Flash::set('categories', [$category->id => $category->name]);
// view
$this->view(compact(['elements']), 'evsmash/companies/companies/index');
}
// promoted
public function promoted() {
// elements
$elements = Company::params()->promoted()->published()->with('type')->with('categories')->paginate($this->settings->limit);
// trans
Trans::get($elements, 'companies');
// flash
Flash::set('title', 'Promoted companies');
// view
$this->view(compact(['elements']), 'evsmash/companies/companies/index');
}
// show
public function show() {
// element
$element = Element::check(new Company);
// allowed
Element::allowed($element, 'published');
// stats
Element::stats($element);
// trans
Trans::get($element, 'companies');
// flash
Flash::set('title', $element->name);
Flash::set('description', $element->sneak);
Flash::set('type', $element->type_id);
Flash::set('categories', $element->categories->pluck('name', 'id'));
Flash::set('photo', Thumb::url($element->photo, '1000xauto', ['upsize' => true]));
// view
$this->view(compact(['element']));
}
// create
public function create() {
// categories
$categories = CompaniesCategory::where('depth', 1)->published()->orderBy('lft', 'asc')->pluck('name', 'id');
$categories->prepend('---', '');
// subcategories
$subcategories = CompaniesCategory::where('depth', 2)->published()->orderBy('lft', 'asc')->get();
// flash
Flash::set('title', 'Add company');
// view
$this->view(compact(['categories', 'subcategories']));
}
// insert
public function insert() {
// validate
Post::validate(Company::validate());
// insert
$item = new Company;
$item->name = Post::get('name');
$item->slug = Str::slug(Post::get('name'));
$item->content = nl2br(Post::get('content'));
$item->email = Post::get('email');
$item->phone = Post::get('phone');
$item->address = Post::get('address');
$item->website = Post::get('website');
$item->user_id = Auth::userID();
$item->save();
// caregories
$item->categories()->sync([
Post::get('category', 'int'),
Post::get('subcategory', 'int')
]);
// upload
$file = Upload::file(cfg('upload-images'), '1M');
// photo
if(isset($file->path)) {
$item->photo = $file->path;
$item->save();
}
// redirect
Redirect::msg('Company has been added');
Redirect::to('/');
}
}