diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/button.php b/addons/default/visiosoft/advs-module/resources/lang/en/button.php index c84a77408..ab988e7b0 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/button.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/button.php @@ -32,4 +32,5 @@ return [ 'name' => 'Update Category' ], 'new_option' => 'New Option', + 'export' => 'Export' ]; diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvsExport.php b/addons/default/visiosoft/advs-module/src/Adv/AdvsExport.php new file mode 100644 index 000000000..96bcadd91 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvsExport.php @@ -0,0 +1,81 @@ +newQuery() + ->leftJoin('cats_category', function ($q){ + $q->on('cats_category.id', 'advs_advs.cat1') + ->orOn('cats_category.id', 'advs_advs.cat2') + ->orOn('cats_category.id', 'advs_advs.cat3') + ->orOn('cats_category.id', 'advs_advs.cat4') + ->orOn('cats_category.id', 'advs_advs.cat5') + ->orOn('cats_category.id', 'advs_advs.cat6') + ->orOn('cats_category.id', 'advs_advs.cat7') + ->orOn('cats_category.id', 'advs_advs.cat8') + ->orOn('cats_category.id', 'advs_advs.cat9') + ->orOn('cats_category.id', 'advs_advs.cat10'); + }) + ->leftJoin('cats_category_translations', 'cats_category.id', 'cats_category_translations.entry_id') + ->leftJoin('location_countries_translations','advs_advs.country_id', 'location_countries_translations.entry_id') + + ->leftJoin('location_cities_translations','advs_advs.city', 'location_cities_translations.entry_id') + + ->leftJoin('location_districts_translations','advs_advs.district', 'location_districts_translations.entry_id') + ->where('cats_category_translations.locale',Request()->session()->get('_locale', setting_value('streams::default_locale', 'en'))) + ->where('advs_advs_translations.locale',Request()->session()->get('_locale', setting_value('streams::default_locale', 'en'))) + ->select(['advs_advs.*', 'location_countries_translations.name as country', 'location_cities_translations.name as city_name', 'location_districts_translations.name as district', DB::raw("group_concat(default_cats_category_translations.name SEPARATOR ', ') as categories")]) + ->groupBy('advs_advs.id') + ->get(); + + return $cats; + } + + public function map($adv): array + { + return [ + $adv->id, + $adv->name, + strip_tags($adv->advs_desc), + $adv->currency, + $adv->price, + $adv->standard_price, + $adv->created_by_id, + $adv->categories, + $adv->country, + $adv->city_name, + $adv->district, + ]; + } + + public function headings(): array + { + return [ + 'ID', + 'Name', + 'Description', + 'Currency', + 'Price', + 'Standard Price', + 'Created By Id', + 'Categories', + 'Country', + 'City', + 'District', + ]; + } +} diff --git a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php index 74041899a..ec32d05a9 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php @@ -75,6 +75,10 @@ class AdvsModuleServiceProvider extends AddonServiceProvider ], 'admin/advs-users/choose/{advId}' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@choose', 'admin/class/actions/{id}/{type}' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@actions', + 'admin/advs/export' => [ + 'as' => 'advs::exportAdvs', + 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@exportAdvs', + ], // advsController 'advs/list' => [ @@ -344,22 +348,30 @@ class AdvsModuleServiceProvider extends AddonServiceProvider 'general_settings' => [ 'title' => 'visiosoft.module.advs::button.general_settings', 'href' => '/admin/settings/modules/visiosoft.module.advs', + 'page' => 'anomaly.module.settings' ], 'theme_settings' => [ 'title' => 'visiosoft.theme.defaultadmin::section.theme_settings.name', 'href' => url('admin/settings/themes/' . setting_value('streams::standard_theme')), + 'page' => 'anomaly.module.settings' ], 'assets_clear' => [ 'title' => 'visiosoft.module.advs::section.assets_clear.name', 'href' => route('assets_clear'), + 'page' => 'anomaly.module.settings' ], + 'export' => [ + 'title' => 'visiosoft.module.advs::button.export', + 'href' => route('advs::exportAdvs'), + 'page' => 'visiosoft.module.advs' + ] ]; foreach ($settings_url as $key => $value) { - $addonCollection->get('anomaly.module.settings')->addSection($key, $value); + $addonCollection->get($value['page'])->addSection($key, $value); } - // Disable file versioning + // Disable file versioning $fileModel->disableVersioning(); } 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 e0268b5d5..47032280d 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 @@ -25,6 +25,8 @@ use Visiosoft\AdvsModule\Option\Contract\OptionRepositoryInterface; use Visiosoft\CatsModule\Category\CategoryModel; use Visiosoft\LocationModule\City\CityModel; use Visiosoft\AlgoliaModule\Search\SearchModel; +use Maatwebsite\Excel\Facades\Excel; +use Visiosoft\AdvsModule\Adv\AdvsExport; class AdvsController extends AdminController { @@ -341,4 +343,9 @@ class AdvsController extends AdminController Return Back"; echo "
Return Admin Panel"; } + + + public function exportAdvs(){ + return Excel::download(new AdvsExport(), 'advs-' . time() . '.xlsx'); + } }