model = $model; parent::__construct(); } /** * Display an index of existing entries. * * @param AdvTableBuilder $table * @return \Symfony\Component\HttpFoundation\Response */ public function index(AdvTableBuilder $table, \Anomaly\UsersModule\User\UserModel $userModel, CityModel $cityModel, CatsCategoryEntryModel $categoryModel) { $table->addAsset("theme.css", "visiosoft.module.advs::css/custom.css"); $table->addAsset('script.js', 'visiosoft.module.advs::js/list.js'); $table->addButtons([ 'status' => [ 'text' => function (EntryInterface $entry) { if ($entry->status == 'approved') { return "visiosoft.module.advs::button.decline"; } else { return "visiosoft.module.advs::button.approve"; } }, 'href' => function (EntryInterface $entry) { if ($entry->status == 'approved') { return "/admin/class/actions/{entry.id}/declined"; } else { return "/admin/class/actions/{entry.id}/approved"; } }, 'type' => function (EntryInterface $entry) { if ($entry->status == 'approved') { return "danger"; } else { return "success"; } }, ], 'edit' => [ 'href' => '/advs/edit_advs/{entry.id}', ] ]); if ($this->model->is_enabled('recommendedads')) { $table->addButton('add_recommended', [ 'type' => 'default', 'icon' => 'fa fa-gg', 'text' => 'Add Recommended', 'href' => '/admin/recommendedads/create/{entry.id}', ]); } $table->setColumns([ 'cover_photo' => [ 'wrapper' => function (EntryInterface $entry, Request $request) { if (strpos($entry->cover_photo, 'http') === 0) { $wrapper = ''; } else { $wrapper = ''; } return $wrapper; }, ], 'entry.id', 'name' => [ 'class' => 'advs-name', ], 'price' => [ 'class' => 'advs-price', ], 'currency' => [ 'class' => 'advs-currency', ], 'country' => [ 'class' => 'advs-country', ], 'created_by' => [ 'value' => function (EntryInterface $entry, UserModel $userModel) { $user = $userModel->find($entry->created_by_id); if (!is_null($user)) return $user->first_name . " " . $user->last_name; } ], 'category' => [ 'value' => function (EntryInterface $entry, CategoryModel $categoryModel) { $category = $categoryModel->getCat($entry->cat1); if (!is_null($category)) return $category->name; } ], 'finish_at', ]); $cities = $cityModel->all()->pluck('name', 'id')->all(); $users = $userModel->all()->pluck('email', 'id')->all(); $categories = $categoryModel::query()->where('parent_category_id', null) ->leftJoin('cats_category_translations', 'cats_category.id', '=', 'cats_category_translations.entry_id') ->where('locale', config('app.locale')) ->select('cats_category.*', 'cats_category_translations.name') ->pluck('t1.name', 'id')->all(); $table->setFilters(array_merge($table->getFilters(), [ 'City' => [ 'exact' => true, 'filter' => 'select', 'query' => CityFilterQuery::class, 'options' => $cities, ], 'Category' => [ 'exact' => true, 'filter' => 'select', 'query' => CategoryFilterQuery::class, 'options' => $categories, ], 'User' => [ 'exact' => true, 'filter' => 'select', 'query' => UserFilterQuery::class, 'options' => $users, ] ]) ); return $table->render(); } /** * Create a new entry. * * @param AdvFormBuilder $form * @return \Symfony\Component\HttpFoundation\Response */ public function create(AdvFormBuilder $form) { // $this->dispatch(new AddEntryFormFromRequest($form)); // $this->dispatch(new AddAdvFormFromRequest($form)); return $form->render(); } /** * Edit an existing entry. * * @param AdvFormBuilder $form * @param $id * @return \Symfony\Component\HttpFoundation\Response */ public function edit(AdvFormBuilder $form, $id) { return $form->render($id); } public function actions($id, $type, SettingRepositoryInterface $settings, Dispatcher $events) { $adv = AdvsAdvsEntryModel::query()->where('advs_advs.id', '=', $id)->first(); $adv->status = $type; $default_adv_publish = $settings->value('visiosoft.module.advs::default_published_time'); $adv->finish_at = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $default_adv_publish . ' day')); //algolia Search Module $isActiveAlgolia = new AdvModel(); $isActiveAlgolia = $isActiveAlgolia->is_enabled('algolia'); if ($isActiveAlgolia) { $algolia = new SearchModel(); $algolia->updateStatus($id, $type, $settings); } $adv->update(); $events->dispatch(new ChangeStatusAd($id, $settings));//Create Notify return back(); } public function assetsClear(Filesystem $files, Application $application, Request $request) { $directory = 'assets'; $files->deleteDirectory($directory = $application->getAssetsPath($directory), true); echo "
" . "
"; echo " Return Back"; echo "
Return Admin Panel"; } }