where("is_active", true); }) ->when(@$params['search'], function($query) use ($params) { $query->where('caption', 'ilike', '%' . $params['search'] . '%'); }) ->orderBy($sortColumn, $sortDir) ->paginate($limit); } public function create(array $data) { if(@$data['image']) { $path = $this->storeFile($data['image'], 'banner'); $data['filename'] = $path; } $item = Banner::create($data); return $item; } public function update(Banner $item, array $data) { if(@$data['image']) { Storage::disk('public')->delete($item->filename); $path = $this->storeFile($data['image'], 'banner'); $data['filename'] = $path; } $item->update($data); return $item; } public function delete(Banner $item) { Storage::disk('public')->delete($item->filename); $item->delete(); } public function find($column, $value) { $item = Banner::where($column, $value)->firstOrFail(); return $item; } public function storeFile($file, $dir) { $extension = $file->extension(); $filename = ''; while ($filename == '') { $random = bin2hex(openssl_random_pseudo_bytes(16)) . '.' . $extension; $exists = Storage::disk('public')->exists($dir . '/' . $random); if (!$exists) { $filename = $random; } } $file->storeAs($dir, $filename, "public"); if (in_array($extension, ['jpg', 'jpeg', 'png'])) { $path = Storage::disk('public')->path($dir . '/' . $filename); $manager = new ImageManager(new Driver()); $img = $manager->read($path); $img->scale(width: 900); $img->save($path); } return $dir . '/' . $filename; } }