<?php
namespace App\Http\Controllers\Admin;
use App\library\CheckValueType;
use App\Models\Settings;
...
use ImageOptimizer;
use Carbon\Carbon;
use App\Http\Requests\CategoryRequest;
class CategoryController extends Controller
{
private $mailChimpObject;
public function __construct()
{
parent::__construct();
$this->mailChimpObject= $this->getMailChimpObject();
}
public function index($page = 1)
{
$backendItemsPerPage = Settings::getValue('backend_items_per_page', CheckValueType::cvtInteger, 20);
$filter_name = $this->requestData['filter_name'] ?? '';
$totalCategoriesCount = Category::count();
$startRowsFrom = (($page-1)*$backendItemsPerPage);
$categories = Category
::getByName($filter_name)
->withCount('adCategories')
->orderBy('categories.id', 'asc')
->paginate($backendItemsPerPage, null, null, $page)
->map(function ($categoryItem) {
$categoryItemImgProps = Category::readCategoryImageProps($categoryItem->id, $categoryItem->image, true);
if (!empty($categoryItemImgProps)) {
$categoryItem['categoryImgProps'] = $categoryItemImgProps;
}
return $categoryItem;
});
$prevUrlLinks= getPaginationPrevUrlLinks($startRowsFrom, $backendItemsPerPage, $page);
$nextUrlLinks= getPaginationNextUrlLinks($totalCategoriesCount, $categories->count(), $backendItemsPerPage, $page);
$viewParamsArray = $this->getAppParameters(true, ['csrf_token'], []);
$viewParamsArray['page'] = $page;
$viewParamsArray['prevUrlLinks'] = $prevUrlLinks;
$viewParamsArray['nextUrlLinks'] = $nextUrlLinks;
$viewParamsArray['categories'] = $categories;
$viewParamsArray['totalCategoriesCount'] = $totalCategoriesCount;
return view('admin.categories.index', $viewParamsArray);
}
public function store(CategoryRequest $request)
{
$categoryUploadFile = $request->file('categoryImage');
if ( !empty($categoryUploadFile)) {
$categoryImageBasename = checkValidImgName($categoryUploadFile->getClientOriginalName(), 50, true);
$categoryFileSourcePath = $categoryUploadFile->getPathName();
$this->requestData['image'] = $categoryImageBasename;
}
DB::beginTransaction();
try {
$category = Category::create($this->requestData);
DB::commit();
if ( ! empty($categoryFileSourcePath)) {
$categoryDestImageDir = storage_path() . '/app/public/' . Category::getCategoryDir($category->id);
$categoryDestImagePath = /* $categoryDestImageDir */'/public/' . Category::getCategoryDir($category->id) . urldecode($categoryImageBasename);
createDir($tmpAdImagesDirs, 0755);
Storage::disk('local')->put($categoryDestImagePath, File::get($categoryFileSourcePath));
ImageOptimizer::optimize(storage_path() . '/app/' . $categoryDestImagePath, null);
}
} catch (\Exception $e) {
DB::rollback();
$this->catchError($e);
}
$this->flashMessage('success', 'Category created successfully');
return redirect('admin/categories/' . $category->id . '/edit');
}
}