refactor some code

This commit is contained in:
Diatrex 2020-09-12 13:08:51 +03:00
parent 76200f50c5
commit 08bc694186
12 changed files with 139 additions and 650 deletions

View File

@ -3,7 +3,7 @@ var filter = {};
filter.checkUser = () => { filter.checkUser = () => {
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '/check_user', url: '/check-user',
success: function (response) { success: function (response) {
if (response.success == true) { if (response.success == true) {
$('#search-fav-modal').modal('toggle'); $('#search-fav-modal').modal('toggle');

View File

@ -2,7 +2,7 @@
<ol class="breadcrumb"> <ol class="breadcrumb">
{% for cat in categories %} {% for cat in categories %}
<li class="breadcrumb-item"> <li class="breadcrumb-item">
<a href="{{ url_route('visiosoft.module.advs::list_cat', [cat.id]) }}" class="text-primary">{{ cat['name'] }}</a> <a href="{{ url_route('adv_list_seo', [cat.slug]) }}" class="text-primary">{{ cat['name'] }}</a>
</li> </li>
{% endfor %} {% endfor %}
<input class="hidden" id="adv-id" value="{{ adv.id }}"> <input class="hidden" id="adv-id" value="{{ adv.id }}">

View File

@ -30,7 +30,7 @@
{{ trans('visiosoft.module.advs::field.offered_by') }}: {{ trans('visiosoft.module.advs::field.offered_by') }}:
<a id="owner" <a id="owner"
href="{{ url_route('visiosoft.module.advs::list_user_ad', [adv.created_by_id]) }}" href="{{ url_route('visiosoft.module.advs::list') }}?user={{ adv.created_by_id }}"
data-content="{{ adv.owner_id }}"> {{ adv.first_name }} {{ adv.last_name }} data-content="{{ adv.owner_id }}"> {{ adv.first_name }} {{ adv.last_name }}
</a> </a>
{{ addBlock('ad-detail/seller/action',{'seller_id':adv.owner_id})|raw }} {{ addBlock('ad-detail/seller/action',{'seller_id':adv.owner_id})|raw }}
@ -52,8 +52,9 @@
{% if adv.isCorporate == 2 %} {% if adv.isCorporate == 2 %}
<div class="col-md-12 m-2"> <div class="col-md-12 m-2">
<i class="fa fa-suitcase"></i> <i class="fa fa-suitcase"></i>
<a href="{{ url_route('visiosoft.module.advs::list_user_ad', <a href="{{ url_route('visiosoft.module.advs::list') }}?user={{ adv.created_by_id }}">
[adv.created_by_id]) }}"> {{ adv.first_name }} {{ adv.last_name }}</a> {{ adv.first_name }} {{ adv.last_name }}
</a>
</div> </div>
{% endif %} {% endif %}
</div> </div>

View File

@ -39,7 +39,7 @@
$.ajax({ $.ajax({
async: false, async: false,
type: 'GET', type: 'GET',
url: '{{ url('mapJson') }}', url: '{{ url('map-json') }}',
data: QueryString(window.location.href), data: QueryString(window.location.href),
success: function (data) { success: function (data) {
console.log(data) console.log(data)

View File

@ -439,9 +439,9 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
public function getCategoriesWithAdID($id) public function getCategoriesWithAdID($id)
{ {
$adv = $this->model->find($id); $adv = $this->find($id);
if (!is_null($adv)) { if ($adv) {
$categories = array(); $categories = array();
foreach ($adv->toArray() as $key => $field) { foreach ($adv->toArray() as $key => $field) {
if (preg_match('/cat\d/', $key) and !is_null($field)) { if (preg_match('/cat\d/', $key) and !is_null($field)) {
@ -450,6 +450,7 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
} }
return $categories; return $categories;
} }
return null; return null;
} }

View File

@ -107,6 +107,13 @@ class AdvTableBuilder extends TableBuilder
* *
* @var array * @var array
*/ */
protected $assets = []; protected $assets = [
'scripts.js' => [
'visiosoft.module.advs::js/list.js',
],
'styles.css' => [
'visiosoft.module.advs::css/custom.css',
]
];
} }

View File

@ -41,17 +41,6 @@ class AdvsModule extends Module
'title' => 'visiosoft.module.advs::section.assets_clear.name', 'title' => 'visiosoft.module.advs::section.assets_clear.name',
'href' => '/admin/assets/clear', 'href' => '/admin/assets/clear',
] ]
// 'custom_fields' => [
// 'buttons' => [
// 'new_custom_field',
// ],
// ],
// 'custom_field_advs' => [
// // 'buttons' => [
// // 'new_custom_field_adv',
// // ],
// ],
]; ];
} }

View File

@ -20,8 +20,6 @@ use Visiosoft\LocationModule\Village\VillageRepository;
use Visiosoft\LocationModule\Village\VillageModel; use Visiosoft\LocationModule\Village\VillageModel;
use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface; use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface;
use Visiosoft\CatsModule\Category\CategoryRepository; use Visiosoft\CatsModule\Category\CategoryRepository;
use Visiosoft\CatsModule\Category\CategoryModel;
use Illuminate\Routing\Router;
use Visiosoft\LocationModule\Country\Contract\CountryRepositoryInterface; use Visiosoft\LocationModule\Country\Contract\CountryRepositoryInterface;
use Visiosoft\LocationModule\Country\CountryRepository; use Visiosoft\LocationModule\Country\CountryRepository;
@ -37,46 +35,13 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
AdvsModulePlugin::class, AdvsModulePlugin::class,
]; ];
/**
* The addon Artisan commands.
*
* @type array|null
*/
protected $commands = [];
/**
* The addon's scheduled commands.
*
* @type array|null
*/
protected $schedules = [];
/**
* The addon API routes.
*
* @type array|null
*/
protected $api = [];
/** /**
* The addon routes. * The addon routes.
* *
* @type array|null * @type array|null
*/ */
protected $routes = [ protected $routes = [
'admin/advs/advs' => [ // Admin routes
'as' => 'visiosoft.module.advs::admin_advs',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@index',
],
'admin/advs/advs/create' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@create',
'admin/advs/advs/edit/{id}' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@edit'
],
'admin/advs/village' => 'Visiosoft\AdvsModule\Http\Controller\Admin\VillageController@index',
'admin/advs/village/create' => 'Visiosoft\AdvsModule\Http\Controller\Admin\VillageController@create',
'admin/advs/village/edit/{id}' => 'Visiosoft\AdvsModule\Http\Controller\Admin\VillageController@edit',
'categories/checkparent/{id}' => 'Visiosoft\AdvsModule\Http\Controller\advsController@checkParentCat',
'admin/advs/ajax' => [ 'admin/advs/ajax' => [
'as' => 'visiosoft.module.advs::ajax', 'as' => 'visiosoft.module.advs::ajax',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\AjaxController@locations', 'uses' => 'Visiosoft\AdvsModule\Http\Controller\AjaxController@locations',
@ -94,8 +59,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'admin/advs' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@index', 'admin/advs' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@index',
// User choose modal // User choose modal
'admin/advs-users/choose/{advId}' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@choose', 'admin/advs-users/choose/{advId}' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@choose',
'admin/advs/create' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@create',
'admin/advs/edit/{id}' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@edit',
'admin/advs/list' => [ 'admin/advs/list' => [
'as' => 'visiosoft.module.advs::admin-list', 'as' => 'visiosoft.module.advs::admin-list',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@manage' 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@manage'
@ -105,15 +68,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'as' => 'visiosoft.module.advs::list', 'as' => 'visiosoft.module.advs::list',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@index' 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@index'
], ],
'advs/list?user={id}' => [
'as' => 'visiosoft.module.advs::list_user_ad',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@index',
],
'advs/list?cat={id}' => [
'as' => 'visiosoft.module.advs::list_cat',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@index',
],
'getlocations' => 'Visiosoft\AdvsModule\Http\Controller\advsController@getLocations',
'advs/main' => 'Visiosoft\AdvsModule\Http\Controller\advsController@advsMainPage', 'advs/main' => 'Visiosoft\AdvsModule\Http\Controller\advsController@advsMainPage',
'advs/adv/{id}' => [ 'advs/adv/{id}' => [
'as' => 'adv_detail_backup', 'as' => 'adv_detail_backup',
@ -135,12 +89,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'as' => 'advs_preview', 'as' => 'advs_preview',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@preview' 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@preview'
], ],
'advs/map?country={country}&city[]={city}&district={districts}' => [
'as' => 'visiosoft.module.advs::show_ad_map_location',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@map'
],
'advs/categories' => 'Visiosoft\AdvsModule\Http\Controller\CategoriesController@index',
'advs/c/{cat}' => 'Visiosoft\AdvsModule\Http\Controller\CategoriesController@listByCat',
'c/{category?}/{city?}' => [ 'c/{category?}/{city?}' => [
'as' => 'adv_list_seo', 'as' => 'adv_list_seo',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@index' 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@index'
@ -148,6 +96,7 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'advs/module_active' => 'Visiosoft\AdvsModule\Http\Controller\advsController@index', 'advs/module_active' => 'Visiosoft\AdvsModule\Http\Controller\advsController@index',
'advs/create_adv' => [ 'advs/create_adv' => [
'as' => "advs::create_adv", 'as' => "advs::create_adv",
'middleware' => "auth",
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@cats', 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@cats',
], ],
'advs/create_adv/post_cat' => [ 'advs/create_adv/post_cat' => [
@ -156,6 +105,7 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
], ],
'class/getcats/{id}' => 'Visiosoft\AdvsModule\Http\Controller\advsController@getCatsForNewAd', 'class/getcats/{id}' => 'Visiosoft\AdvsModule\Http\Controller\advsController@getCatsForNewAd',
'advs/save_adv' => [ 'advs/save_adv' => [
'middleware' => 'auth',
'as' => 'visiosoft.module.advs::post_cat', 'as' => 'visiosoft.module.advs::post_cat',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@store' 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@store'
], ],
@ -170,38 +120,13 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@statusAds' 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@statusAds'
], ],
'routes' => 'Visiosoft\AdvsModule\Http\Controller\advsController@routes', 'routes' => 'Visiosoft\AdvsModule\Http\Controller\advsController@routes',
'advs/map/advs/list' => [ 'map-json' => 'Visiosoft\AdvsModule\Http\Controller\advsController@mapJson',
'as' => 'advs_map_list',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@map',
],
'advs/map' => [
'as' => 'advs_map',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@map',
],
'mapJson' => 'Visiosoft\AdvsModule\Http\Controller\advsController@mapJson',
'advs/ttr/{id}' => 'Visiosoft\PackagesModule\Http\Controller\packageFEController@advsStatusbyUser', 'advs/ttr/{id}' => 'Visiosoft\PackagesModule\Http\Controller\packageFEController@advsStatusbyUser',
'advs/delete/{id}' => [ 'advs/delete/{id}' => [
'as' => 'advs::delete', 'as' => 'advs::delete',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@deleteAd', 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@deleteAd',
], ],
'check_user' => 'Visiosoft\AdvsModule\Http\Controller\advsController@checkUser',
'keySearch' => 'Visiosoft\AdvsModule\Http\Controller\AjaxController@keySearch', 'keySearch' => 'Visiosoft\AdvsModule\Http\Controller\AjaxController@keySearch',
'adv/addCart/{id}' => [
'as' => 'adv_AddCart',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@advAddCart',
],
'ajax/StockControl' => [
'as' => 'adv_stock_control_ajax',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@stockControl',
],
'ajax/addCart' => [
'as' => 'adv_add_cart_ajax',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@addCart',
],
'ajax/countPhone' => [
'as' => 'adv_count_show_phone',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@showPhoneCounter',
],
'view/{type}' => [ 'view/{type}' => [
'as' => 'visiosoft.module.advs::view_type', 'as' => 'visiosoft.module.advs::view_type',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@viewType', 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@viewType',
@ -211,13 +136,10 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@assetsClear', 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@assetsClear',
], ],
'adv/edit/category/{id}' => [ 'adv/edit/category/{id}' => [
'middleware' => 'auth',
'as' => 'adv::edit_category', 'as' => 'adv::edit_category',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@editCategoryForAd', 'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@editCategoryForAd',
], ],
'ajax/getcats/{id}' => [
'as' => 'ajax::getCats',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\advsController@getCats',
],
'ajax/getAdvs' => [ 'ajax/getAdvs' => [
'as' => 'ajax::getAds', 'as' => 'ajax::getAds',
@ -247,24 +169,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
redirectDiffrentLang::class, redirectDiffrentLang::class,
]; ];
/**
* Addon group middleware.
*
* @var array
*/
protected $groupMiddleware = [
//'web' => [
// Visiosoft\AdvsModule\Http\Middleware\ExampleMiddleware::class,
//],
];
/**
* Addon route middleware.
*
* @type array|null
*/
protected $routeMiddleware = [];
/** /**
* The addon event listeners. * The addon event listeners.
* *
@ -276,15 +180,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
], ],
]; ];
/**
* The addon alias bindings.
*
* @type array|null
*/
protected $aliases = [
//'Example' => Visiosoft\AdvsModule\Example::class
];
/** /**
* The addon class bindings. * The addon class bindings.
* *
@ -296,8 +191,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
// AdvsCustomFieldsEntryModel::class => CustomFieldModel::class, // AdvsCustomFieldsEntryModel::class => CustomFieldModel::class,
AdvsAdvsEntryModel::class => AdvModel::class, AdvsAdvsEntryModel::class => AdvModel::class,
LocationVillageEntryModel::class => VillageModel::class, LocationVillageEntryModel::class => VillageModel::class,
AdvsCategoriesEntryModel::class => CategoryModel::class,
AdvsAdvsEntryModel::class => AdvModel::class,
'my_form' => AdvFormBuilder::class, 'my_form' => AdvFormBuilder::class,
]; ];
@ -307,9 +200,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
* @type array|null * @type array|null
*/ */
protected $singletons = [ protected $singletons = [
// CfValueRepositoryInterface::class => CfValueRepository::class,
// CustomFieldAdvRepositoryInterface::class => CustomFieldAdvRepository::class,
// CustomFieldRepositoryInterface::class => CustomFieldRepository::class,
AdvRepositoryInterface::class => AdvRepository::class, AdvRepositoryInterface::class => AdvRepository::class,
VillageRepositoryInterface::class => VillageRepository::class, VillageRepositoryInterface::class => VillageRepository::class,
CategoryRepositoryInterface::class => CategoryRepository::class, CategoryRepositoryInterface::class => CategoryRepository::class,
@ -317,15 +207,6 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
OptionRepositoryInterface::class => OptionRepository::class, OptionRepositoryInterface::class => OptionRepository::class,
]; ];
/**
* Additional service providers.
*
* @type array|null
*/
protected $providers = [
//\ExamplePackage\Provider\ExampleProvider::class
];
/** /**
* The addon view overrides. * The addon view overrides.
* *
@ -333,29 +214,8 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
*/ */
protected $overrides = [ protected $overrides = [
'streams::form/form' => 'visiosoft.module.advs::form/form', 'streams::form/form' => 'visiosoft.module.advs::form/form',
//'streams::errors/404' => 'module::errors/404',
//'streams::errors/500' => 'module::errors/500',
]; ];
/**
* The addon mobile-only view overrides.
*
* @type array|null
*/
protected $mobile = [
//'streams::errors/404' => 'module::mobile/errors/404',
//'streams::errors/500' => 'module::mobile/errors/500',
];
/**
* Register the addon.
*/
public function register()
{
// Run extra pre-boot registration logic here.
// Use method injection or commands to bring in services.
}
/** /**
* Boot the addon. * Boot the addon.
* @param AddonCollection $addonCollection * @param AddonCollection $addonCollection
@ -381,18 +241,4 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
// Disable file versioning // Disable file versioning
$fileModel->disableVersioning(); $fileModel->disableVersioning();
} }
/**
* Map additional addon routes.
*
* @param Router $router
*/
// public function map(Router $router)
// {
// // Register dynamic routes here for example.
// // Use method injection or commands to bring in services.
// }
public function map(Router $router)
{
}
} }

View File

@ -1,13 +1,10 @@
<?php namespace Visiosoft\AdvsModule\Http\Controller\Admin; <?php namespace Visiosoft\AdvsModule\Http\Controller\Admin;
use Anomaly\SettingsModule\Setting\Contract\SettingRepositoryInterface;
use Anomaly\Streams\Platform\Application\Application; use Anomaly\Streams\Platform\Application\Application;
use Anomaly\Streams\Platform\Entry\Contract\EntryInterface; use Anomaly\Streams\Platform\Entry\Contract\EntryInterface;
use Anomaly\Streams\Platform\Model\Advs\AdvsAdvsEntryTranslationsModel; use Anomaly\Streams\Platform\Model\Advs\AdvsAdvsEntryTranslationsModel;
use Anomaly\Streams\Platform\Model\Cats\CatsCategoryEntryModel; use Anomaly\Streams\Platform\Model\Cats\CatsCategoryEntryModel;
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface; use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
use Anomaly\UsersModule\User\UserModel;
use Illuminate\Filesystem\Filesystem; use Illuminate\Filesystem\Filesystem;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -18,7 +15,6 @@ use Visiosoft\AdvsModule\Adv\Table\Filter\StatusFilterQuery;
use Visiosoft\AdvsModule\Adv\Table\Filter\UserFilterQuery; use Visiosoft\AdvsModule\Adv\Table\Filter\UserFilterQuery;
use Visiosoft\AdvsModule\Adv\AdvModel; use Visiosoft\AdvsModule\Adv\AdvModel;
use Visiosoft\AdvsModule\Adv\Event\ChangedStatusAd; use Visiosoft\AdvsModule\Adv\Event\ChangedStatusAd;
use Visiosoft\AdvsModule\Adv\Form\AdvFormBuilder;
use Visiosoft\AdvsModule\Adv\Table\AdvTableBuilder; use Visiosoft\AdvsModule\Adv\Table\AdvTableBuilder;
use Anomaly\Streams\Platform\Http\Controller\AdminController; use Anomaly\Streams\Platform\Http\Controller\AdminController;
use Visiosoft\AdvsModule\Option\Contract\OptionRepositoryInterface; use Visiosoft\AdvsModule\Option\Contract\OptionRepositoryInterface;
@ -28,23 +24,24 @@ use Visiosoft\AlgoliaModule\Search\SearchModel;
class AdvsController extends AdminController class AdvsController extends AdminController
{ {
private $model;
private $advRepository; private $advRepository;
private $advsEntryTranslationsModel; private $advsEntryTranslationsModel;
private $optionRepository; private $optionRepository;
private $userRepository;
public function __construct( public function __construct(
AdvModel $model,
AdvRepositoryInterface $advRepository, AdvRepositoryInterface $advRepository,
AdvsAdvsEntryTranslationsModel $advsEntryTranslationsModel, AdvsAdvsEntryTranslationsModel $advsEntryTranslationsModel,
OptionRepositoryInterface $optionRepository OptionRepositoryInterface $optionRepository,
UserRepositoryInterface $userRepository
) )
{ {
parent::__construct(); parent::__construct();
$this->model = $model;
$this->advRepository = $advRepository; $this->advRepository = $advRepository;
$this->advsEntryTranslationsModel = $advsEntryTranslationsModel; $this->advsEntryTranslationsModel = $advsEntryTranslationsModel;
$this->optionRepository = $optionRepository; $this->optionRepository = $optionRepository;
$this->userRepository = $userRepository;
} }
/** /**
@ -53,11 +50,8 @@ class AdvsController extends AdminController
* @param AdvTableBuilder $table * @param AdvTableBuilder $table
* @return \Symfony\Component\HttpFoundation\Response * @return \Symfony\Component\HttpFoundation\Response
*/ */
public function index(AdvTableBuilder $table, \Anomaly\UsersModule\User\UserModel $userModel, CityModel $cityModel, CatsCategoryEntryModel $categoryModel) public function index(AdvTableBuilder $table, CityModel $cityModel, CatsCategoryEntryModel $categoryModel)
{ {
$table->addAsset("styles.css", "visiosoft.module.advs::css/custom.css");
$table->addAsset('scripts.js', 'visiosoft.module.advs::js/list.js');
$table->addButtons([ $table->addButtons([
'status' => [ 'status' => [
'text' => function (EntryInterface $entry) { 'text' => function (EntryInterface $entry) {
@ -89,10 +83,7 @@ class AdvsController extends AdminController
} }
}, },
], ],
'edit' => [
'href' => '/advs/edit_advs/{entry.id}',
'text' => "<font class='hidden-xs-down'>" . trans('streams::button.edit') . "</font>",
],
'settings' => [ 'settings' => [
'text' => false, 'text' => false,
'href' => false, 'href' => false,
@ -110,19 +101,11 @@ class AdvsController extends AdminController
], ],
]); ]);
if ($this->model->is_enabled('recommendedads')) {
$table->addButton('add_recommended', [
'type' => 'default',
'icon' => 'fa fa-gg',
'text' => 'Add Recommended',
'href' => '/admin/recommendedads/create/{entry.id}',
]);
}
$table->setColumns([ $table->setColumns([
'cover_photo' => [ 'cover_photo' => [
'value' => function (EntryInterface $entry) { 'value' => function (EntryInterface $entry) {
return "<img width='80px' src='" . $this->model->AddAdsDefaultCoverImage($entry)->cover_photo . "' >"; $coverImageUrl = $this->advRepository->getModel()->AddAdsDefaultCoverImage($entry)->cover_photo;
return "<img width='80px' src='{$coverImageUrl}' >";
}, },
], ],
'entry.id', 'entry.id',
@ -130,7 +113,12 @@ class AdvsController extends AdminController
'class' => 'advs-name', 'class' => 'advs-name',
'sort_column' => 'slug', 'sort_column' => 'slug',
'value' => function (EntryInterface $entry) { 'value' => function (EntryInterface $entry) {
return (!is_null($entry->name)) ? "<a href='" . $this->model->getAdvDetailLinkByModel($entry, 'list') . "' > " . $entry->name . "</a > " : "<font color='red'>" . trans("visiosoft.module.advs::view.unfinished") . "</font>"; if ($entry->name) {
$adLink = $this->advRepository->getModel()->getAdvDetailLinkByModel($entry, 'list');
return "<a href='$adLink' >{$entry->name}</a >";
} else {
return "<span class='text-danger'>" . trans("visiosoft.module.advs::view.unfinished") . "</span>";
}
}, },
], ],
'price' => [ 'price' => [
@ -143,11 +131,7 @@ class AdvsController extends AdminController
'class' => 'advs-country', 'class' => 'advs-country',
], ],
'created_by' => [ 'created_by' => [
'value' => function (EntryInterface $entry, UserModel $userModel) { 'value' => 'entry.created_by.name'
$user = $userModel->find($entry->created_by_id);
if (!is_null($user))
return $user->first_name . " " . $user->last_name;
}
], ],
'category' => [ 'category' => [
'value' => function (EntryInterface $entry, CategoryModel $categoryModel) { 'value' => function (EntryInterface $entry, CategoryModel $categoryModel) {
@ -161,7 +145,7 @@ class AdvsController extends AdminController
$cities = $cityModel->all()->pluck('name', 'id')->all(); $cities = $cityModel->all()->pluck('name', 'id')->all();
$users = $userModel->newQuery() $users = $this->userRepository->newQuery()
->select(DB::raw("CONCAT_WS('', first_name, ' ', last_name, ' (', gsm_phone, ' || ', email, ')') AS display_name"), 'id') ->select(DB::raw("CONCAT_WS('', first_name, ' ', last_name, ' (', gsm_phone, ' || ', email, ')') AS display_name"), 'id')
->pluck('display_name', 'id') ->pluck('display_name', 'id')
->toArray(); ->toArray();
@ -212,55 +196,29 @@ class AdvsController extends AdminController
if (empty($request->all())) { if (empty($request->all())) {
return $this->view->make('module::admin/advs/choose', ['users' => $users->all(), 'advId' => $advId]); return $this->view->make('module::admin/advs/choose', ['users' => $users->all(), 'advId' => $advId]);
} else { } else {
$this->model->newQuery()->find($advId)->update(['created_by_id' => $request->user_id]); $this->advRepository->getModel()->newQuery()->find($advId)->update(['created_by_id' => $request->user_id]);
$this->messages->success(trans('module::message.owner_updated_successfully')); $this->messages->success(trans('module::message.owner_updated_successfully'));
return redirect()->back(); return redirect()->back();
} }
} }
/** public function actions($id, $type)
* Create a new entry.
*
* @param AdvFormBuilder $form
* @return \Symfony\Component\HttpFoundation\Response
*/
public function create(AdvFormBuilder $form)
{ {
// $this->dispatch(new AddEntryFormFromRequest($form)); $ad = $this->advRepository->find($id);
// $this->dispatch(new AddAdvFormFromRequest($form));
return $form->render();
}
/**
* Edit an existing entry.
*
* @param AdvFormBuilder $form
* @param $id
* @return \Symfony\Component\HttpFoundation\Response
*/
public function edit(AdvFormBuilder $form, $id)
{
return $form->render($id);
}
public function actions($id, $type, SettingRepositoryInterface $settings, AdvModel $advModel)
{
$ad = $advModel->where('advs_advs.id', '=', $id)->first();
$ad->status = $type; $ad->status = $type;
$default_adv_publish = $settings->value('visiosoft.module.advs::default_published_time'); $default_adv_publish = setting_value('visiosoft.module.advs::default_published_time');
$ad->finish_at = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $default_adv_publish . ' day')); $ad->finish_at = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $default_adv_publish . ' day'));
$ad->publish_at = date('Y-m-d H:i:s'); $ad->publish_at = date('Y-m-d H:i:s');
//algolia Search Module //algolia Search Module
$isActiveAlgolia = $advModel->is_enabled('algolia'); $isActiveAlgolia = $this->advRepository->getModel()->is_enabled('algolia');
if ($isActiveAlgolia) { if ($isActiveAlgolia) {
$algolia = new SearchModel(); $algolia = new SearchModel();
$algolia->updateStatus($id, $type, $settings); $algolia->updateStatus($id, $type);
} }
$ad->update(); $ad->update();
event(new ChangedStatusAd($ad));//Create Notify event(new ChangedStatusAd($ad)); //Create Notify
return back(); return back();
} }
@ -328,42 +286,34 @@ class AdvsController extends AdminController
public function assetsClear(Filesystem $files, Application $application, Request $request) public function assetsClear(Filesystem $files, Application $application, Request $request)
{ {
$directory = 'assets'; $files->deleteDirectory($directory = $application->getAssetsPath('assets'), true);
$files->deleteDirectory($directory = $application->getAssetsPath($directory), true); echo "
echo "<div class='bar'></div>" . "<br>"; <div class='bar'></div>
echo "<style> <br>
.bar { <style>
width: 30%; .bar {
height: 20px; width: 30%;
border: 1px solid #2980b9; height: 20px;
border-radius: 3px; border: 1px solid #2980b9;
background-image: border-radius: 3px;
repeating-linear-gradient( background-image: repeating-linear-gradient(-45deg, #2980b9, #2980b9 11px, #eee 10px, #eee 20px);
-45deg, background-size: 28px 28px;
#2980b9, animation: move .5s linear infinite;
#2980b9 11px, }
#eee 10px,
#eee 20px /* determines size */
);
background-size: 28px 28px;
animation: move .5s linear infinite;
}
@keyframes move { @keyframes move {
0% { 0% {
background-position: 0 0; background-position: 0 0;
} }
100% { 100% {
background-position: 28px 0; background-position: 28px 0;
} }
} }
</style>
</style>
<script> <script>
location.href = '" . $request->server('HTTP_REFERER') . "'; location.href = '{$request->server('HTTP_REFERER')}';
</script> </script>
";
<a href='" . $request->server('HTTP_REFERER') . "'><b>Return Back</b></a>";
echo "<br><a href='/admin'><b>Return Admin Panel</b></a>";
} }
} }

View File

@ -19,9 +19,9 @@ class AjaxController extends PublicController
public function __construct(AdvModel $advModel, UserModel $userModel) public function __construct(AdvModel $advModel, UserModel $userModel)
{ {
parent::__construct();
$this->adv_model = $advModel; $this->adv_model = $advModel;
$this->userModel = $userModel; $this->userModel = $userModel;
parent::__construct();
} }
public function locations(Request $request) public function locations(Request $request)

View File

@ -1,32 +0,0 @@
<?php namespace Visiosoft\AdvsModule\Http\Controller;
use Anomaly\Streams\Platform\Http\Controller\PublicController;
use Anomaly\Streams\Platform\Model\Cats\CatsCategoryEntryModel;
use Illuminate\Support\Facades\DB;
class CategoriesController extends PublicController {
public function listByCat($cat)
{
$advs = DB::table('advs_advs')
->where('cat1', $cat)
->orwhere('cat2', $cat)
->orwhere('cat3', $cat)
->orwhere('cat4', $cat)
->orwhere('cat5', $cat)
->orwhere('cat6', $cat)
->orwhere('cat7', $cat)
->leftJoin('users_users as u1', 'advs_advs.created_by_id', '=', 'u1.id')
->leftJoin('advs_advs_translations as t1', 'advs_advs.id', '=', 't1.id')
->select('advs_advs.*','u1.username as owner', 't1.name as name')
->get();
foreach ($advs as $adv) {
if (strpos($adv->cover_photo, 'http') !== 0 && strpos($adv->cover_photo, '/') !== 0) {
$adv->cover_photo = "/$adv->cover_photo";
}
}
return $this->view->make('visiosoft.module.advs::list/list', compact('advs'));
}
}

View File

@ -3,14 +3,11 @@
use Anomaly\SettingsModule\Setting\Contract\SettingRepositoryInterface; use Anomaly\SettingsModule\Setting\Contract\SettingRepositoryInterface;
use Anomaly\Streams\Platform\Http\Controller\PublicController; use Anomaly\Streams\Platform\Http\Controller\PublicController;
use Anomaly\Streams\Platform\Model\Advs\AdvsAdvsEntryModel; use Anomaly\Streams\Platform\Model\Advs\AdvsAdvsEntryModel;
use Anomaly\Streams\Platform\Model\Advs\PurchasePurchaseEntryModel;
use Anomaly\Streams\Platform\Model\Complaints\ComplaintsComplainTypesEntryModel; use Anomaly\Streams\Platform\Model\Complaints\ComplaintsComplainTypesEntryModel;
use Anomaly\Streams\Platform\Model\Options\OptionsAdvertisementEntryModel;
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface; use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
use Visiosoft\AdvsModule\Adv\Command\appendRequestURL; use Visiosoft\AdvsModule\Adv\Command\appendRequestURL;
use Visiosoft\AdvsModule\Adv\Event\ChangedStatusAd; use Visiosoft\AdvsModule\Adv\Event\ChangedStatusAd;
use Visiosoft\AdvsModule\Adv\Event\CreatedAd; use Visiosoft\AdvsModule\Adv\Event\CreatedAd;
use Visiosoft\AdvsModule\Adv\Event\showAdPhone;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cookie; use Illuminate\Support\Facades\Cookie;
@ -29,22 +26,18 @@ use Visiosoft\LocationModule\City\CityModel;
use Visiosoft\AlgoliaModule\Search\SearchModel; use Visiosoft\AlgoliaModule\Search\SearchModel;
use Visiosoft\AlgoliatestModule\Http\Controller\Admin\IndexController; use Visiosoft\AlgoliatestModule\Http\Controller\Admin\IndexController;
use Visiosoft\CloudinaryModule\Video\VideoModel; use Visiosoft\CloudinaryModule\Video\VideoModel;
use Visiosoft\FavsModule\Http\Controller\FavsController;
use Visiosoft\LocationModule\District\DistrictModel; use Visiosoft\LocationModule\District\DistrictModel;
use Visiosoft\LocationModule\Neighborhood\NeighborhoodModel; use Visiosoft\LocationModule\Neighborhood\NeighborhoodModel;
use Visiosoft\LocationModule\Village\VillageModel; use Visiosoft\LocationModule\Village\VillageModel;
use Visiosoft\PackagesModule\Http\Controller\PackageFEController;
use Visiosoft\AdvsModule\Adv\Contract\AdvRepositoryInterface; use Visiosoft\AdvsModule\Adv\Contract\AdvRepositoryInterface;
use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface; use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface;
use Visiosoft\LocationModule\Country\Contract\CountryRepositoryInterface; use Visiosoft\LocationModule\Country\Contract\CountryRepositoryInterface;
use Anomaly\Streams\Platform\Message\MessageBag; use Anomaly\Streams\Platform\Message\MessageBag;
use Visiosoft\PackagesModule\Package\PackageModel; use Visiosoft\PackagesModule\Package\PackageModel;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Visiosoft\QrcontactModule\Qr\QrModel; use Visiosoft\QrcontactModule\Qr\QrModel;
use Visiosoft\StoreModule\Ad\AdModel; use Visiosoft\StoreModule\Ad\AdModel;
class AdvsController extends PublicController class AdvsController extends PublicController
{ {
private $userRepository; private $userRepository;
@ -101,6 +94,8 @@ class AdvsController extends PublicController
Request $request Request $request
) )
{ {
parent::__construct();
$this->userRepository = $userRepository; $this->userRepository = $userRepository;
$this->adv_model = $advModel; $this->adv_model = $advModel;
@ -126,14 +121,9 @@ class AdvsController extends PublicController
$this->requestHttp = $request; $this->requestHttp = $request;
parent::__construct();
$this->optionRepository = $optionRepository; $this->optionRepository = $optionRepository;
} }
/**
* @return \Illuminate\Contracts\View\View|mixed
*/
public function index($category = null, $city = null) public function index($category = null, $city = null)
{ {
$customParameters = array(); $customParameters = array();
@ -463,26 +453,6 @@ class AdvsController extends PublicController
compact('adv', 'categories', 'features', 'isActiveDopings', 'options')); compact('adv', 'categories', 'features', 'isActiveDopings', 'options'));
} }
public function getLocations()
{
$table = $this->requestHttp->table;
$id = $this->requestHttp->id;
$db = $this->requestHttp->typeDb;
$location = "";
if ($table == "cities") {
$location = $this->city_model->query()->where($db, $id)->get();
} elseif ($table == "districts") {
$location = $this->district_model->query()->whereIn($db, $id)->get();
} elseif ($table == "neighborhoods") {
$location = $this->neighborhood_model->query()->where($db, $id)->get();
} elseif ($table == "village") {
$location = $this->village_model->query()->where($db, $id)->get();
}
return $location;
}
public function deleteAd(AdvRepositoryInterface $advs, $id) public function deleteAd(AdvRepositoryInterface $advs, $id)
{ {
$ad = $this->adv_model->find($id); $ad = $this->adv_model->find($id);
@ -499,18 +469,12 @@ class AdvsController extends PublicController
return back(); return back();
} }
public function getCats($id)
{
return $this->category_repository->getSubCatById($id);
}
public function getCatsForNewAd($id) public function getCatsForNewAd($id)
{ {
if ($this->adv_model->is_enabled('packages')) { if ($this->adv_model->is_enabled('packages')) {
$cats = app('Visiosoft\PackagesModule\Http\Controller\PackageFEController')->AdLimitForCategorySelection($id); $cats = app('Visiosoft\PackagesModule\Http\Controller\PackageFEController')->AdLimitForCategorySelection($id);
} else { } else {
$cats = $this->getCats($id); $cats = $this->category_repository->getSubCatById($id);
if (empty($cats->toArray())) { if (empty($cats->toArray())) {
$cats = trans('visiosoft.module.advs::message.create_ad_with_post_cat'); $cats = trans('visiosoft.module.advs::message.create_ad_with_post_cat');
@ -548,87 +512,76 @@ class AdvsController extends PublicController
'request', 'formBuilder', 'cats_d', 'custom_fields')); 'request', 'formBuilder', 'cats_d', 'custom_fields'));
} }
public function store public function store(
(
AdvFormBuilder $form, AdvFormBuilder $form,
MessageBag $messages, MessageBag $messages,
Request $request, AdressRepositoryInterface $address
SettingRepositoryInterface $settings,
AdvRepositoryInterface $advRepository,
CategoryRepositoryInterface $categoryRepository,
Dispatcher $events,
AdvModel $advModel,
AdressRepositoryInterface $address,
CategoryModel $categoryModel
) )
{ {
if (!Auth::user()) {
redirect('/login?redirect=' . url()->current())->send();
}
$messages->pull('error'); $messages->pull('error');
if ($request->action == "update") { if (\request()->action == "update") {
$error = $form->build($request->update_id)->validate()->getFormErrors()->getMessages(); $error = $form->build(\request()->update_id)->validate()->getFormErrors()->getMessages();
if (!empty($error)) { if (!empty($error)) {
return $this->redirect->back(); return $this->redirect->back();
} }
/* Update Adv */ /* Update Adv */
$adv = AdvsAdvsEntryModel::find($request->update_id); $adv = AdvsAdvsEntryModel::find(\request()->update_id);
if ($advModel->is_enabled('packages') and $adv->slug == "") { if ($this->adv_repository->getModel()->is_enabled('packages') and $adv->slug == "") {
$cat = app('Visiosoft\PackagesModule\Http\Controller\PackageFEController')->AdLimitForNewAd($request); $cat = app('Visiosoft\PackagesModule\Http\Controller\PackageFEController')->AdLimitForNewAd(\request());
if (!is_null($cat)) { if (!is_null($cat)) {
return redirect('/'); return redirect('/');
} }
} }
// Create options // Create options
$deletedOptions = $request->deleted_options; $deletedOptions = \request()->deleted_options;
$newOptions = $request->new_options; $newOptions = \request()->new_options;
if (!empty($deletedOptions)) { if (!empty($deletedOptions)) {
$deletedOptions = explode(',', $request->deleted_options); $deletedOptions = explode(',', \request()->deleted_options);
$this->optionRepository->newQuery() $this->optionRepository->newQuery()
->whereIn('id', $deletedOptions) ->whereIn('id', $deletedOptions)
->where('adv_id', $request->update_id) ->where('adv_id', \request()->update_id)
->delete(); ->delete();
} }
if (!empty($newOptions)) { if (!empty($newOptions)) {
$newOptions = explode(',', $request->new_options); $newOptions = explode(',', \request()->new_options);
foreach ($newOptions as $option) { foreach ($newOptions as $option) {
$this->optionRepository->create([ $this->optionRepository->create([
'name' => $option, 'name' => $option,
'adv_id' => $request->update_id, 'adv_id' => \request()->update_id,
]); ]);
} }
} }
$adv->is_get_adv = $request->is_get_adv; $adv->is_get_adv = \request()->is_get_adv;
$adv->save(); $adv->save();
//algolia Search Module //algolia Search Module
$isActiveAlgolia = $advModel->is_enabled('algolia'); $isActiveAlgolia = $this->adv_repository->getModel()->is_enabled('algolia');
if ($isActiveAlgolia) { if ($isActiveAlgolia) {
$algolia = new SearchModel(); $algolia = new SearchModel();
if ($adv->slug == "") { if ($adv->slug == "") {
$algolia->saveAlgolia($adv->toArray(), $settings); $algolia->saveAlgolia($adv->toArray());
} else { } else {
$algolia->updateAlgolia($request->toArray(), $settings); $algolia->updateAlgolia(\request()->toArray());
} }
} }
//Cloudinary Module //Cloudinary Module
$isActiveCloudinary = $advModel->is_enabled('cloudinary'); $isActiveCloudinary = $this->adv_repository->getModel()->is_enabled('cloudinary');
if ($isActiveCloudinary) { if ($isActiveCloudinary) {
$CloudinaryModel = new VideoModel(); $CloudinaryModel = new VideoModel();
$CloudinaryModel->updateRequest($request); $CloudinaryModel->updateRequest(\request());
if ($request->url != "") { if (\request()->url != "") {
$adv->cover_photo = "https://res.cloudinary.com/" . $request->cloudName . "/video/upload/w_400,e_loop/" . $adv->cover_photo = "https://res.cloudinary.com/" . \request()->cloudName . "/video/upload/w_400,e_loop/" .
$request->uploadKey . "/" . $request->filename . "gif"; \request()->uploadKey . "/" . \request()->filename . "gif";
$adv->save(); $adv->save();
} }
} }
if ($this->adv_model->is_enabled('customfields')) { if ($this->adv_model->is_enabled('customfields')) {
app('Visiosoft\CustomfieldsModule\Http\Controller\cfController')->store($adv, $request); app('Visiosoft\CustomfieldsModule\Http\Controller\cfController')->store($adv, \request());
} }
// Auto approve // Auto approve
@ -641,8 +594,8 @@ class AdvsController extends PublicController
]); ]);
} }
$form->render($request->update_id); $form->render(\request()->update_id);
$adv = $this->adv_repository->find($request->update_id); $adv = $this->adv_repository->find(\request()->update_id);
if ($this->request->address_id != "") { if ($this->request->address_id != "") {
$address = $address->find($this->request->address_id); $address = $address->find($this->request->address_id);
@ -654,35 +607,35 @@ class AdvsController extends PublicController
$adv->save(); $adv->save();
} }
$post = $form->getPostData(); $post = $form->getPostData();
$post['id'] = $request->update_id; $post['id'] = \request()->update_id;
$events->dispatch(new priceChange($post));//price history event(new priceChange($post));
if ($request->url == "") { if (\request()->url == "") {
$advRepository->cover_image_update($adv); $this->adv_repository->cover_image_update($adv);
} }
if ($form->hasFormErrors()) { if ($form->hasFormErrors()) {
$cats = $request->toArray(); $cats = \request()->toArray();
$cats_d = array(); $cats_d = array();
foreach ($cats as $para => $value) { foreach ($cats as $para => $value) {
if (substr($para, 0, 3) === "cat") { if (substr($para, 0, 3) === "cat") {
$id = $cats[$para]; $id = $cats[$para];
$cat = $categoryRepository->getSingleCat($id); $cat = $this->category_repository->getSingleCat($id);
if ($cat != null) { if ($cat != null) {
$cats_d[$para] = $cat->name; $cats_d[$para] = $cat->name;
} }
} }
} }
return redirect('/advs/edit_advs/' . $request->update_id)->with('cats_d', $cats_d)->with('request', $request); return redirect('/advs/edit_advs/' . \request()->update_id)->with('cats_d', $cats_d)->with('request', \request());
} }
event(new CreatedAd($adv)); event(new CreatedAd($adv));
return redirect(route('advs_preview', [$request->update_id])); return redirect(route('advs_preview', [\request()->update_id]));
} }
/* New Create Adv */ /* New Create Adv */
$request->publish_at = date('Y-m-d H:i:s'); \request()->publish_at = date('Y-m-d H:i:s');
$all = $request->all(); $all = \request()->all();
$new = AdvModel::query()->create($all); $new = AdvModel::query()->create($all);
return redirect('/advs/edit_advs/' . $new->id); return redirect('/advs/edit_advs/' . $new->id);
} }
@ -745,16 +698,15 @@ class AdvsController extends PublicController
); );
} }
public function statusAds($id, $type, SettingRepositoryInterface $settings, Dispatcher $events) public function statusAds($id, $type)
{ {
$ad = $this->adv_model->getAdv($id); $ad = $this->adv_model->getAdv($id);
$auto_approved = $settings->value('visiosoft.module.advs::auto_approve'); $auto_approved = setting_value('visiosoft.module.advs::auto_approve');
$default_published_time = $settings->value('visiosoft.module.advs::default_published_time'); $default_published_time = setting_value('visiosoft.module.advs::default_published_time');
if ($auto_approved == true AND $type == 'pending_admin') { if ($type == 'pending_admin' && $auto_approved == true) {
$type = "approved"; $type = "approved";
} } elseif ($type == "approved" && $auto_approved != true) {
if ($type == "approved" and $auto_approved != true) {
$type = "pending_admin"; $type = "pending_admin";
} }
@ -775,293 +727,68 @@ class AdvsController extends PublicController
$isActiveAlgolia = $this->adv_model->is_enabled('algolia'); $isActiveAlgolia = $this->adv_model->is_enabled('algolia');
if ($isActiveAlgolia) { if ($isActiveAlgolia) {
$algolia = new SearchModel(); $algolia = new SearchModel();
$algolia->updateStatus($id, $type, $settings); $algolia->updateStatus($id, $type);
} }
$this->adv_model->statusAds($id, $type); $this->adv_model->statusAds($id, $type);
event(new ChangedStatusAd($ad));//Create Notify
event(new ChangedStatusAd($ad));
$this->messages->success(trans('streams::message.edit_success', ['name' => 'Status'])); $this->messages->success(trans('streams::message.edit_success', ['name' => 'Status']));
return back(); return back();
} }
public function cats() public function cats()
{ {
if (!Auth::user()) { $mainCats = $this->category_repository->mainCats();
redirect('/login?redirect=' . url()->current())->send();
}
$main_cats = $this->category_repository->mainCats();
return $this->view->make('visiosoft.module.advs::new-ad/post-cat', compact('main_cats')); return $this->view->make('visiosoft.module.advs::new-ad/post-cat', compact('mainCats'));
} }
/**
* @param $id
* @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|mixed
*/
public function editCategoryForAd($id) public function editCategoryForAd($id)
{ {
if (!Auth::user()) {
redirect('/login?redirect=' . url()->current())->send();
}
$adv = $this->adv_model->userAdv(true)->find($id); $adv = $this->adv_model->userAdv(true)->find($id);
if (is_null($adv)) { if (!$adv) {
abort(403); abort(403);
} }
if ($this->requestHttp->action == 'update') { if (\request()->action == 'update') {
$params = $this->requestHttp->all(); $params = \request()->all();
unset($params['action']); unset($params['action']);
for ($i = 2; $i <= 10; $i++) { for ($i = 2; $i <= 10; $i++) {
if (!isset($params['cat' . $i])) { if (!isset($params['cat' . $i])) {
$params['cat' . $i] = NULL; $params['cat' . $i] = null;
} }
} }
$adv->update($params); $adv->update($params);
$this->messages->success(trans('visiosoft.module.advs::message.updated_category_msg')); $this->messages->success(trans('visiosoft.module.advs::message.updated_category_msg'));
return redirect('/advs/edit_advs/' . $id); return redirect()->route('visiosoft.module.advs::edit_adv', [$id]);
} }
$categories = $this->adv_repository->getCategoriesWithAdID($id); $categories = $this->adv_repository->getCategoriesWithAdID($id);
return $this->view->make('visiosoft.module.advs::new-ad/edit-cat', compact('id', 'adv', 'categories')); return $this->view->make(
'visiosoft.module.advs::new-ad/edit-cat',
compact('id', 'adv', 'categories')
);
} }
public function login() public function mapJson()
{ {
if (auth()->check()) { $param = \request()->toArray();
return $this->redirect->to($this->request->get('redirect', '/'));
}
$urlPrev = str_replace(url('/'), '', url()->previous());
return $this->view->make('theme::login', compact('urlPrev'));
}
public function register()
{
if (auth()->check()) {
return redirect('/');
}
return $this->view->make('theme::register');
}
public function passwordForgot()
{
if (auth()->check()) {
return redirect('/');
}
return $this->view->make('theme::passwords/forgot');
}
public function passwordReset(Request $request)
{
if (auth()->check()) {
return redirect('/');
}
$code = $request->email;
return $this->view->make('theme::passwords/reset', compact('code'));
}
public function homePage(CategoryRepositoryInterface $repository)
{
$cats = $repository->mainCats();
return $this->view->make('theme::addons/anomaly/pages-module/page', compact('cats'));
}
public function map(
AdvRepositoryInterface $advRepository,
CategoryRepositoryInterface $categories,
CountryRepositoryInterface $countries,
Request $request
)
{
return $this->index($advRepository, $categories, $countries, $request, true);
}
public function mapJson(Request $request, AdvRepositoryInterface $repository)
{
$param = $request->toArray();
$customParameters = array(); $customParameters = array();
$advModel = new AdvModel();
$advs = $repository->searchAdvs('map', $param, $customParameters); $advs = $this->adv_repository->searchAdvs('map', $param, $customParameters);
foreach ($advs as $index => $ad) { foreach ($advs as $index => $ad) {
$advs[$index]->seo_link = $advModel->getAdvDetailLinkByModel($ad, 'list'); $advs[$index]->seo_link = $this->adv_repository->getModel()->getAdvDetailLinkByModel($ad, 'list');
$advs[$index] = $advModel->AddAdsDefaultCoverImage($ad); $advs[$index] = $this->adv_repository->getModel()->AddAdsDefaultCoverImage($ad);
} }
return response()->json($advs); return response()->json($advs);
} }
public function getAdvsByProfile(AdvRepositoryInterface $advRepository, Request $request)
{
$my_advs = new AdvModel();
$type = $request->type;
if ($type == 'pending') {
$page_title = trans('visiosoft.module.advs::field.pending_adv.name');
$my_advs = $my_advs->pendingAdvsByUser();
} else if ($type == 'favs') {
//Get Favorites Advs
$isActiveFavs = new AdvModel();
$isActiveFavs = $isActiveFavs->is_enabled('favs');
if ($isActiveFavs) {
$page_title = trans('visiosoft.module.advs::field.favs_adv.name');
$favs = new FavsController();
$favs = $favs->getFavsByProfile();
$fav_ids = array();
foreach ($favs as $fav) {
$fav_ids[] = $fav['adv_name_id'];//fav advs id List
}
$my_advs = $my_advs->favsAdvsByUser($fav_ids);
}
} else {
$page_title = trans('visiosoft.module.advs::field.my_adv.name');
$my_advs = $my_advs->myAdvsByUser();
}
$my_advs = $my_advs->orderByDesc('id');
$my_advs = $advRepository->addAttributes($my_advs->get());
$files = array();
foreach ($my_advs as $my_adv) {
$files[] = $my_adv->files;
}
return response()->json(['success' => true, 'content' => $my_advs, 'files' => $files, 'title' => $page_title]);
}
public function authCheck()
{
if (auth()->check()) {
return auth()->user();
}
return "false";
}
public function isActive($slug)
{
$query = new AdvModel();
return $query->is_enabled($slug);
}
public function isActiveJson($slug)
{
$isActive = $this->isActive($slug);
return response()->json(array('isActive' => $isActive));
}
public function checkParentCat($id)
{
$option = new CategoryModel();
return $option->getParentCats($id);
}
public function checkUser()
{
if (Auth::check()) {
return response()->json([
'success' => true,
]);
} else {
return response()->json([
'success' => false,
]);
}
}
public function advAddCart($id, $quantity = 1)
{
$thisModel = new AdvModel();
$adv = $thisModel->isAdv($id);
$response = array();
if ($adv) {
$cart = $thisModel->addCart($adv, $quantity);
$response['status'] = "success";
} else {
$response['status'] = "error";
$response['msg'] = trans('visiosoft.module.advs::message.error_added_cart');
}
return back();
}
public function addCart(Request $request)
{
if (\auth()->check()) {
$id = $request->id;
$quantity = $request->quantity;
$name = $request->name;
$thisModel = new AdvModel();
$adv = $thisModel->isAdv($id);
$response = array();
if ($adv) {
$cart = $thisModel->addCart($adv, $quantity, $name);
$response['status'] = "success";
} else {
$response['status'] = "error";
$response['msg'] = trans('visiosoft.module.advs::message.error_added_cart');
}
} else {
$response['status'] = "guest";
}
return $response;
}
public function stockControl(Request $request, AdvRepositoryInterface $advRepository)
{
$quantity = $request->quantity;
$id = $request->id;
$type = $request->type;
$advmodel = new AdvModel();
$adv = $advmodel->getAdv($id);
$status = $advmodel->stockControl($id, $quantity);
$response = array();
if ($status == 1) {
$response['newQuantity'] = $advRepository->getQuantity($quantity, $type, $adv);
} else {
$response['newQuantity'] = $adv->stock;
}
$response['newPrice'] = $adv->price * $response['newQuantity'];
$separator = ",";
$decimals = 2;
$point = ".";
$response['newPrice'] = number_format($response['newPrice'], $decimals, $point, str_replace('&#160;', ' ', $separator));
$symbol = config('streams::currencies.supported.' . strtoupper($adv->currency) . '.symbol');
$response['newPrice'] = $symbol . $response['newPrice'];
$response['status'] = $status;
$response['maxQuantity'] = $adv->stock;
return $response;
}
public function showPhoneCounter(Request $request, AdvModel $advModel, Dispatcher $events)
{
$ad_id = $request->id;
$ad = $advModel->getAdv($ad_id);
if ($advModel->is_enabled('phoneclickcounter')) {
$events->dispatch(new showAdPhone($ad));//show ad phone events
}
return "success";
}
public function extendAll($isAdmin = null) public function extendAll($isAdmin = null)
{ {
$adsExtended = $this->adv_repository->extendAds(true, $isAdmin); $adsExtended = $this->adv_repository->extendAds(true, $isAdmin);