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', ], ] ])