diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php index c34007876..cea08a2ce 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php @@ -592,4 +592,63 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface return false; } + + public function getStockReport() + { + return $this->newQuery() + ->current() + ->select('stock', 'name', 'advs_advs.id', 'slug') + ->where('is_get_adv', true) + ->where('stock', '<=', 10) + ->leftJoin('advs_advs_translations as classified_trans', function ($join) { + $join->on('advs_advs.id', '=', 'classified_trans.entry_id'); + $join->whereIn('locale', [config('app.locale'), setting_value('streams::default_locale'), 'en']); + }) + ->get(); + } + + public function getAllClassifiedsCount() + { + return $this->newQuery() + ->count(); + } + + public function getCurrentClassifiedsCount() + { + return $this->newQuery() + ->current() + ->count(); + } + + public function getUnexplainedClassifiedsReport() + { + return $this->newQuery() + ->current() + ->select('name', 'advs_advs.id', 'slug') + ->where(function ($query) { + $query->where('advs_desc', '=', '') + ->orWhereNull('advs_desc'); + }) + ->leftJoin('advs_advs_translations as classified_trans', function ($join) { + $join->on('advs_advs.id', '=', 'classified_trans.entry_id'); + $join->whereIn('locale', [config('app.locale'), setting_value('streams::default_locale'), 'en']); + }) + ->get(); + } + + public function getNoImageClassifiedsReport() + { + return $this->newQuery() + ->current() + ->select('name', 'advs_advs.id', 'slug') + ->where(function ($query) { + $query->where('cover_photo', '=', '') + ->orWhereNull('cover_photo'); + }) + ->leftJoin('advs_advs_translations as classified_trans', function ($join) { + $join->on('advs_advs.id', '=', 'classified_trans.entry_id'); + $join->whereIn('locale', [config('app.locale'), setting_value('streams::default_locale'), 'en']); + }) + ->get(); + } } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php index 53e667867..4856c3bd3 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php @@ -60,4 +60,14 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface public function findByCFJSON($key, $value); public function uploadImage(); + + public function getStockReport(); + + public function getAllClassifiedsCount(); + + public function getCurrentClassifiedsCount(); + + public function getUnexplainedClassifiedsReport(); + + public function getNoImageClassifiedsReport(); } diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ReportController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ReportController.php new file mode 100644 index 000000000..8acc6ac6b --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ReportController.php @@ -0,0 +1,55 @@ +advRepository = $advRepository; + } + + public function stock() + { + return [ + 'data' => $this->advRepository->getStockReport() + ]; + } + + public function status() + { + $all = $this->advRepository->getAllClassifiedsCount(); + $active = $this->advRepository->getCurrentClassifiedsCount(); + + return [ + 'data' => [ + [ + 'status' => 'Active', + 'count' => $active, + ], + [ + 'status' => 'Passive', + 'count' => $all - $active, + ], + ] + ]; + } + + public function unexplained() + { + return [ + 'data' => $this->advRepository->getUnexplainedClassifiedsReport() + ]; + } + + public function noImage() + { + return [ + 'data' => $this->advRepository->getNoImageClassifiedsReport() + ]; + } +}