From 5473dd7006b4cbf10cb750193dcc5374c589e3ae Mon Sep 17 00:00:00 2001 From: vedatakd Date: Sat, 23 Jan 2021 13:18:59 +0300 Subject: [PATCH] optimized query && category icon --- ....module.advs__create_user_status_field.php | 26 ---- .../advs-module/src/Adv/AdvModel.php | 24 ++-- .../src/Adv/Event/ChangedStatusAd.php | 4 +- .../advs-module/src/Adv/Event/DeletedAd.php | 17 +++ .../src/Adv/Table/AdvTableBuilder.php | 4 +- .../src/Adv/Table/Handler/Approve.php | 16 +-- .../src/Adv/Table/Handler/Delete.php | 52 ++++++++ .../src/Http/Controller/advsController.php | 2 + .../views/partials/categories-mobile.twig | 5 +- .../views/partials/categories-web.twig | 6 +- .../resources/views/table/table.twig | 113 +++++++++--------- .../Category/Command/CalculateAdsCount.php | 4 +- .../CalculatedTotalForChangedAdStatus.php | 24 ++++ .../Listener/CalculatedTotalForDeletedAd.php | 24 ++++ .../Listener/CalculatedTotalForNewAd.php | 19 +-- .../Listener/Traits/CalculateAdTrait.php | 26 ++++ .../src/CatsModuleServiceProvider.php | 11 ++ .../Controller/Admin/CategoryController.php | 41 ++++++- .../input_file-field_type/composer.json | 22 ++++ .../resources/lang/en/addon.php | 7 ++ .../resources/lang/en/input.php | 5 + .../resources/views/input.twig | 5 + .../src/InputFileFieldType.php | 8 ++ .../src/InputFileFieldTypePresenter.php | 19 +++ database/seeds/DatabaseSeeder.php | 15 +++ 25 files changed, 369 insertions(+), 130 deletions(-) delete mode 100644 addons/default/visiosoft/advs-module/migrations/2020_12_18_134817_visiosoft.module.advs__create_user_status_field.php create mode 100644 addons/default/visiosoft/advs-module/src/Adv/Event/DeletedAd.php create mode 100644 addons/default/visiosoft/advs-module/src/Adv/Table/Handler/Delete.php create mode 100644 addons/default/visiosoft/cats-module/src/Category/Listener/CalculatedTotalForChangedAdStatus.php create mode 100644 addons/default/visiosoft/cats-module/src/Category/Listener/CalculatedTotalForDeletedAd.php create mode 100644 addons/default/visiosoft/cats-module/src/Category/Listener/Traits/CalculateAdTrait.php create mode 100644 addons/default/visiosoft/input_file-field_type/composer.json create mode 100644 addons/default/visiosoft/input_file-field_type/resources/lang/en/addon.php create mode 100644 addons/default/visiosoft/input_file-field_type/resources/lang/en/input.php create mode 100644 addons/default/visiosoft/input_file-field_type/resources/views/input.twig create mode 100644 addons/default/visiosoft/input_file-field_type/src/InputFileFieldType.php create mode 100644 addons/default/visiosoft/input_file-field_type/src/InputFileFieldTypePresenter.php diff --git a/addons/default/visiosoft/advs-module/migrations/2020_12_18_134817_visiosoft.module.advs__create_user_status_field.php b/addons/default/visiosoft/advs-module/migrations/2020_12_18_134817_visiosoft.module.advs__create_user_status_field.php deleted file mode 100644 index 690d449c1..000000000 --- a/addons/default/visiosoft/advs-module/migrations/2020_12_18_134817_visiosoft.module.advs__create_user_status_field.php +++ /dev/null @@ -1,26 +0,0 @@ - 'advs', - ]; - - protected $fields = [ - "user_status" => [ - "type" => "anomaly.field_type.relationship", - "config" => [ - "related" => \Visiosoft\AdvsModule\Status\StatusModel::class, - "mode" => "lookup", - ] - ], - ]; - - protected $assignments = [ - 'user_status', - ]; -} diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php index 5416c4d80..0488277d7 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php @@ -223,17 +223,17 @@ class AdvModel extends AdvsAdvsEntryModel implements AdvInterface } - public function getAdvDetailLinkByModel($object, $type = null) - { - if ($type != null) { - $id = $object->id; - $seo = $object->slug; - return \route('adv_detail_seo', [$seo, $id]); - } - $id = $object->getObject()->id; - $seo = $object->getObject()->slug; - return \route('adv_detail_seo', [$seo, $id]); - } + public function getAdvDetailLinkByModel($object, $type = null) + { + if ($type != null) { + $id = $object->id; + $seo = $object->slug; + return \route('adv_detail_seo', [$seo, $id]); + } + $id = $object->getObject()->id; + $seo = $object->getObject()->slug; + return \route('adv_detail_seo', [$seo, $id]); + } public function getAdvDetailLinkByAdId($id) { @@ -394,7 +394,7 @@ class AdvModel extends AdvsAdvsEntryModel implements AdvInterface public function getProductOptionsValues() { - return $this->product_options_value; + return $this->product_options_value; } public function getStatus() diff --git a/addons/default/visiosoft/advs-module/src/Adv/Event/ChangedStatusAd.php b/addons/default/visiosoft/advs-module/src/Adv/Event/ChangedStatusAd.php index 5efadc9e4..ffc84c0b2 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Event/ChangedStatusAd.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Event/ChangedStatusAd.php @@ -1,12 +1,10 @@ ad = $ad; } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Event/DeletedAd.php b/addons/default/visiosoft/advs-module/src/Adv/Event/DeletedAd.php new file mode 100644 index 000000000..95f5ce482 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Adv/Event/DeletedAd.php @@ -0,0 +1,17 @@ +ad = $ad; + } + + public function getAdDetail() + { + return $this->ad; + } +} + diff --git a/addons/default/visiosoft/advs-module/src/Adv/Table/AdvTableBuilder.php b/addons/default/visiosoft/advs-module/src/Adv/Table/AdvTableBuilder.php index b364b2b7e..74f9db6e2 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Table/AdvTableBuilder.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Table/AdvTableBuilder.php @@ -51,7 +51,9 @@ class AdvTableBuilder extends TableBuilder * @var array|string */ protected $actions = [ - 'delete', + 'delete' => [ + 'handler' => \Visiosoft\AdvsModule\Adv\Table\Handler\Delete::class, + ], 'approve' => [ 'handler' => \Visiosoft\AdvsModule\Adv\Table\Handler\Approve::class, 'class' => 'btn btn-success' diff --git a/addons/default/visiosoft/advs-module/src/Adv/Table/Handler/Approve.php b/addons/default/visiosoft/advs-module/src/Adv/Table/Handler/Approve.php index c056610c3..199f9ae84 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Table/Handler/Approve.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Table/Handler/Approve.php @@ -15,14 +15,16 @@ class Approve extends ActionHandler foreach ($selected as $id) { $defaultAdPublishTime = $settingRepository->value('visiosoft.module.advs::default_published_time'); - $ad = $model->newQuery()->find($id); - $ad->update([ - 'status' => 'approved', - 'finish_at' => date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $defaultAdPublishTime . ' day')), - 'publish_at' => date('Y-m-d H:i:s') - ]); - event(new ChangedStatusAd($ad));//Create Notify + if ($ad = $model->newQuery()->find($id)) { + $ad->update([ + 'status' => 'approved', + 'finish_at' => date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $defaultAdPublishTime . ' day')), + 'publish_at' => date('Y-m-d H:i:s') + ]); + + event(new ChangedStatusAd($ad));//Create Notify + } } if ($selected) { diff --git a/addons/default/visiosoft/advs-module/src/Adv/Table/Handler/Delete.php b/addons/default/visiosoft/advs-module/src/Adv/Table/Handler/Delete.php new file mode 100644 index 000000000..ec7c5ed9a --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Adv/Table/Handler/Delete.php @@ -0,0 +1,52 @@ +getTableModel(); + + /* @var EloquentModel $entry */ + foreach ($selected as $id) { + + $entry = $model->find($id); + + $deletable = true; + + if ($entry instanceof EloquentModel) { + $deletable = $entry->isDeletable(); + } + + if ($entry && $deletable && $entry->delete()) { + $builder->fire('row_deleted', compact('builder', 'model', 'entry')); + + event(new DeletedAd($entry)); + + $count++; + } + } + + if ($count) { + $builder->fire('rows_deleted', compact('count', 'builder', 'model')); + } + + if ($selected && $count > 0) { + $this->messages->success(trans('streams::message.delete_success', compact('count'))); + } + + if ($selected && $count === 0) { + $this->messages->warning(trans('streams::message.delete_success', compact('count'))); + } + } +} \ No newline at end of file diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php index fd87100d6..bf63667c7 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php @@ -957,7 +957,9 @@ class AdvsController extends PublicController } $this->adv_model->statusAds($id, $type); + event(new ChangedStatusAd($ad));//Create Notify + if ($type === 'approved') { $message = trans('visiosoft.module.advs::message.approve_status_change'); } elseif ($type === 'sold') { diff --git a/addons/default/visiosoft/base-theme/resources/views/partials/categories-mobile.twig b/addons/default/visiosoft/base-theme/resources/views/partials/categories-mobile.twig index 4d8746305..d1400708b 100644 --- a/addons/default/visiosoft/base-theme/resources/views/partials/categories-mobile.twig +++ b/addons/default/visiosoft/base-theme/resources/views/partials/categories-mobile.twig @@ -1,7 +1,10 @@