#1866 advs excel export

This commit is contained in:
Muammer Top 2020-10-14 19:03:21 +03:00
parent cf17c3c205
commit 7abf0084d7
4 changed files with 103 additions and 2 deletions

View File

@ -32,4 +32,5 @@ return [
'name' => 'Update Category'
],
'new_option' => 'New Option',
'export' => 'Export'
];

View File

@ -0,0 +1,81 @@
<?php
namespace Visiosoft\AdvsModule\Adv;
use Anomaly\UsersModule\User\UserModel;
use Illuminate\Support\Facades\DB;
use Visiosoft\AdvsModule\Adv\AdvModel;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
class AdvsExport implements WithMapping, FromCollection, WithHeadings
{
/**
* @return AdvModel[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection
*/
public function collection()
{
$adv = new AdvModel();
$cats = $adv->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',
];
}
}

View File

@ -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();
}

View File

@ -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
<a href='" . $request->server('HTTP_REFERER') . "'><b>Return Back</b></a>";
echo "<br><a href='/admin'><b>Return Admin Panel</b></a>";
}
public function exportAdvs(){
return Excel::download(new AdvsExport(), 'advs-' . time() . '.xlsx');
}
}