From 4dce22a898869721fedf54f1798c3c136784bc39 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Mon, 3 Feb 2020 16:04:57 +0300 Subject: [PATCH] #587 [sahibinden-module] Getting custom fields dynamically --- .../advs-module/resources/lang/en/field.php | 5 +++- .../Adv/Table/Filter/StatusFilterQuery.php | 28 +++++++++++++++++-- .../Http/Controller/Admin/AdvsController.php | 3 ++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/field.php b/addons/default/visiosoft/advs-module/resources/lang/en/field.php index 44f71632b..ee835e2bf 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/field.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/field.php @@ -85,8 +85,11 @@ return [ 'status' => [ 'name' => 'Status', 'option' => [ + 'approved' => 'Approved', 'expired' => 'Expired', - 'unpublished' => 'Unpublished' + 'unpublished' => 'Unpublished', + 'pending_admin' => 'Pending Admin', + 'pending_user' => 'Pending User' ] ], 'pending_adv' => [ diff --git a/addons/default/visiosoft/advs-module/src/Adv/Table/Filter/StatusFilterQuery.php b/addons/default/visiosoft/advs-module/src/Adv/Table/Filter/StatusFilterQuery.php index b6e7d11f7..57ac866c2 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Table/Filter/StatusFilterQuery.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Table/Filter/StatusFilterQuery.php @@ -2,19 +2,41 @@ use Anomaly\Streams\Platform\Ui\Table\Component\Filter\Contract\FilterInterface; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Carbon; class StatusFilterQuery { public function handle(Builder $query, FilterInterface $filter) { + if ($filter->getValue() == 'approved') { + $query + ->where('advs_advs.status', 'approved') + ->where('advs_advs.finish_at', '>', date('Y-m-d H:i:s')); + } + if ($filter->getValue() == 'expired') { - $query->where('advs_advs.finish_at', '<=', Carbon::now()); + $query + ->where('advs_advs.finish_at', '<', date('Y-m-d H:i:s')) + ->WhereNotNull('advs_advs.finish_at'); } if ($filter->getValue() == 'unpublished') { - $query->where('advs_advs.status', '!=', 'approved'); + $query + ->where('advs_advs.status', 'passive'); + } + + if ($filter->getValue() == 'pending_admin') { + $query + ->where('advs_advs.status', 'pending_admin') + ->where('advs_advs.finish_at', '>', date('Y-m-d H:i:s')) + ->orWhereNull('advs_advs.finish_at'); + } + + if ($filter->getValue() == 'pending_user') { + $query + ->where('advs_advs.status', 'pending_user') + ->where('advs_advs.finish_at', '>', date('Y-m-d H:i:s')) + ->orWhereNull('advs_advs.finish_at'); } } } diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php index 80f1f08ca..311e6b30c 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php @@ -157,8 +157,11 @@ class AdvsController extends AdminController 'filter' => 'select', 'query' => StatusFilterQuery::class, 'options' => [ + 'approved' => 'visiosoft.module.advs::field.status.option.approved', 'expired' => 'visiosoft.module.advs::field.status.option.expired', 'unpublished' => 'visiosoft.module.advs::field.status.option.unpublished', + 'pending_admin' => 'visiosoft.module.advs::field.status.option.pending_admin', + 'pending_user' => 'visiosoft.module.advs::field.status.option.pending_user', ], ] ])