Files
aritmija/oldSite/Plugins/Services/Controllers/ServicesController.php
2026-05-13 17:11:09 +02:00

204 lines
6.2 KiB
PHP

<?php
namespace Klevze\ControlPanel\Plugins\Services\Controllers;
use Auth;
use DB;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Language;
use FileMan;
use Klevze\ControlPanel\Framework\Utils\Sort;
class ServicesController extends Controller
{
private $uploadPath = 'files/services/';
private $mainRoute = 'admin.plugin.services';
private $db_table = 'services';
private $db_table_description = 'services_description';
private $db_tableID = 'service_id';
private $pageTitle;
public function __construct()
{
$this->middleware('cp.auth');
FileMan::checkUploadPath(public_path($this->uploadPath));
$this->pageTitle = trans('admin.SERVICES');
}
public function Main()
{
$data['page_title'] = $this->pageTitle;
$data['table'] = DB::table($this->db_table . ' AS t1')
->select('t1.*', 't2.headline')
->leftJoin($this->db_table_description . ' AS t2', 't1.' . $this->db_tableID, 't2.' . $this->db_tableID)
->where('t2.iso', Language::getDefaultLanguage())
->orderBy('service_id', 'desc')
->get();
return view('plugin.services::main', $data);
}
public function Create()
{
$data['page_title'] = $this->pageTitle;
$data['table'] = new \stdClass();
$data['table']->active = 'Y';
$data['uploadPath'] = $this->uploadPath;
$data['languages'] = Language::getLanguagesList();
$data['default_language'] = Language::getDefaultLanguage();
return view('plugin.services::create', $data);
}
public function Insert(Request $request)
{
$id = DB::table($this->db_table)
->insertGetId([
'active' => $request->input('active'),
'created_at' => time(),
]);
$this->updateTranslations($id, $request);
$this->storePictures($id, $request);
return redirect()->route($this->mainRoute);
}
public function Delete($id)
{
DB::table($this->db_table)
->where($this->db_tableID, $id)
->delete();
return redirect()->route($this->mainRoute);
}
public function Update($id, Request $request)
{
DB::table($this->db_table)
->where($this->db_tableID, $id)
->update([
'active' => $request->input('active'),
'updated_at' => time(),
]);
$this->updateTranslations($id, $request);
$this->storePictures($id, $request);
return redirect()->route($this->mainRoute);
}
public function Edit($id)
{
### Load Table Data ###
$data['table'] = DB::table($this->db_table)
->where($this->db_tableID, $id)
->first();
$data['page_title'] = $this->pageTitle;
$data[$this->db_tableID] = $id;
$data['languages'] = Language::getLanguagesList();
$data['default_language'] = Language::getDefaultLanguage();
$data['translation'] = $this->getTranslation($id);
$data['uploadPath'] = $this->uploadPath;
return view('plugin.services::edit', $data);
}
public function SortPages(Request $request)
{
Sort::Items($request, $this->db_table, $this->db_tableID);
}
protected function updatePicture($id, $file, $dbField)
{
$folder = public_path($this->uploadPath);
$picture = [];
if (is_null($file)) {
return;
}
$ext = $file->getClientOriginalExtension();
$diskname = uniqid() . "." . $ext;
$destination = $folder . $diskname;
$file->move($folder, $diskname);
$picture = $diskname;
DB::table($this->db_table)
->where($this->db_tableID, $id)
->update([$dbField => $picture]);
return $picture;
}
protected function storePictures($id, $request)
{
$picture1 = $this->updatePicture($id, $request->file('picture_1'), 'picture_1');
$picture2 = $this->updatePicture($id, $request->file('picture_2'), 'picture_2');
$picture3 = $this->updatePicture($id, $request->file('picture_3'), 'picture_3');
$picture4 = $this->updatePicture($id, $request->file('picture_4'), 'picture_4');
$picture5 = $this->updatePicture($id, $request->file('picture_5'), 'picture_5');
$picture6 = $this->updatePicture($id, $request->file('picture_6'), 'picture_6');
$picture7 = $this->updatePicture($id, $request->file('picture_7'), 'picture_7');
$picture8 = $this->updatePicture($id, $request->file('picture_8'), 'picture_8');
}
protected function updateTranslations($id, $request)
{
$prevod = $request->input('prevod');
### Remove Old Entries ###
DB::table($this->db_table_description)
->where($this->db_tableID, $id)
->delete();
### Insert New Entries ###
foreach ($prevod as $iso => $data) {
DB::table($this->db_table_description)
->insert(['iso' => $iso,
$this->db_tableID => $id,
'headline' => $data['headline'],
'content1' => $data['content1'],
'content2' => $data['content2'],
'content3' => $data['content3'],
'content4' => $data['content4'],
'content5' => $data['content5'],
]);
}
}
protected function getTranslation($id)
{
$data = [];
$trans = DB::table($this->db_table_description)
->where($this->db_tableID, $id)
->get();
foreach ($trans as $key => $row) {
$data[$row->iso]['headline'] = $row->headline;
$data[$row->iso]['content1'] = $row->content1;
$data[$row->iso]['content2'] = $row->content2;
$data[$row->iso]['content3'] = $row->content3;
$data[$row->iso]['content4'] = $row->content4;
$data[$row->iso]['content5'] = $row->content5;
}
return $data;
}
}