Viewing file: CategoryController.php (4.5 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller; use App\Models\Category; use App\Models\CategoryDescription; use App\Models\Customer; use App\Models\Setting; use App\Traits\CustomFileTrait; use GuzzleHttp\Client; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Route; use Illuminate\Support\Str;
class CategoryController extends Controller {
use CustomFileTrait;
protected $path = '';
public function __construct() { $this->path = public_path(config('constant.file_path.category')); }
public function store(Request $request) {
DB::beginTransaction(); try { $this->validate($request, [ 'multilanguage' => ['required', 'max:255'], ]);
// $this->createDirectory($this->path); $category = new Category($request->only('sort_order', 'status', 'parent_id')); $category->image = Str::random(5) . 'category-image.png'; $category->save();
cache()->forget('categories'); $categoryDescription = new CategoryDescription(); $buildMultiLanguage = $categoryDescription->buildMultiLang($category->category_id, $request->multilanguage); $category_name = isset($buildMultiLanguage[0]['name']) ? $buildMultiLanguage[0]['name'] : ''; $categoryDescription->upsert($buildMultiLanguage, ['category_id', 'language_id', 'name', 'meta_keyword', 'meta_title', 'meta_description']); cache()->forget('categories');
DB::commit(); cache()->flush();
return response()->json(['status' => 'success', 'message' => 'Category successfully created']); } catch (\Exception $ex) { DB::rollBack(); return response()->json(['status' => 'failed', 'message' => $ex->getMessage()]); }
}
public function update(Request $request, $id) {
DB::beginTransaction();
try { $this->validate($request, [ 'multilanguage' => ['required', 'max:255'], ]);
//Update Category $category = Category::findOrFail($id);
$category->fill($request->only('sort_order', 'status', 'parent_id'))->save(); cache()->forget('categories'); //Update Category Description $categoryDescription = new CategoryDescription(); $categoryDescription->where('category_id', $id)->delete(); $buildMultiLanguage = $categoryDescription->buildMultiLang($id, $request->multilanguage); $category_name = isset($buildMultiLanguage[0]['name']) ? $buildMultiLanguage[0]['name'] : ''; $categoryDescription->upsert($buildMultiLanguage, ['category_id', 'language_id', 'name', 'meta_keyword', 'meta_title', 'meta_description']); cache()->forget('categories');
cache()->flush();
DB::commit(); return response()->json(['status' => 'success', 'message' => 'Category Updated Successfully']); }catch(\Exception $ex){ DB::rollBack(); return response()->json(['status' => 'failed', 'message' => $ex->getMessage()]); } }
public function delete($id) { DB::beginTransaction();
try { if (!$category = Category::whereCategoryId($id)->first()) { return redirect()->back()->with('error', 'Something went wrong'); } $categoryIds = []; if ($category->parent_id == 0) { $categoryIds = Category::where('parent_id', $id)->pluck('category_id')->toArray(); } array_push($categoryIds, $category->category_id);
$images = Category::whereIn('category_id', $categoryIds)->pluck('image');
foreach ($images as $key => $value) { $this->removeOldImage($value, $this->path); }
CategoryDescription::whereIn('category_id', $categoryIds)->delete(); Category::whereIn('category_id', $categoryIds)->delete(); cache()->forget('categories'); cache()->flush();
DB::commit(); return response()->json(['status' => 'success', 'message' => 'Category Deleted Successfully']); } catch (\Exception $ex) { DB::rollBack(); return response()->json(['status' => 'failed', 'message' => $ex->getMessage()]); } }
}
|