diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/message.php b/addons/default/visiosoft/advs-module/resources/lang/en/message.php
index b4f5f28c2..d7cb4c7de 100644
--- a/addons/default/visiosoft/advs-module/resources/lang/en/message.php
+++ b/addons/default/visiosoft/advs-module/resources/lang/en/message.php
@@ -26,4 +26,5 @@ return [
'delete_author_error' => 'You cannot delete a post that does not belong to you',
'success_delete' => 'Ad Deleted',
'pending_ad_status' => 'Your ad is pending approval by the Editor.',
+ 'extended' => ':number ad(s) has been extended successfully.',
];
diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php
index 7e5532cc1..c9eb75ade 100644
--- a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php
+++ b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php
@@ -118,6 +118,8 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
if (!empty($param['date'])) {
if ($param['date'] === 'day') {
$query = $query->where('advs_advs.publish_at', '>=', Carbon::now()->subDay());
+ } elseif ($param['date'] === 'two_days') {
+ $query = $query->where('advs_advs.publish_at', '>=', Carbon::now()->subDays(2));
} elseif ($param['date'] === 'week') {
$query = $query->where('advs_advs.publish_at', '>=', Carbon::now()->subWeek());
} elseif ($param['date'] === 'month') {
@@ -133,6 +135,9 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
if (!empty($param['map']) && $param['map'] == true) {
$query = $query->whereNotNull('map_Val');
}
+ if (!empty($param['get_ads']) && $param['get_ads'] == true) {
+ $query = $query->where('is_get_adv', 1);
+ }
foreach ($param as $para => $value) {
if (substr($para, 0, 3) === "cf_") {
@@ -175,6 +180,9 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
}
if (!empty($param['sort_by'])) {
switch ($param['sort_by']) {
+ case "popular":
+ $query = $query->orderBy('advs_advs.count_show_ad', 'desc');
+ break;
case "sort_price_up":
$query = $query->orderBy('advs_advs.price', 'desc');
break;
@@ -355,5 +363,18 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
return null;
}
-
+ public function extendAds($allAds, $isAdmin = false)
+ {
+ if (!is_numeric($allAds)) {
+ if ($isAdmin && auth()->user()->hasRole('admin')) {
+ $advs = $this->newQuery();
+ } else {
+ $advs = $this->newQuery()->where('created_by_id', auth()->id());
+ }
+ } else {
+ $advs = $this->newQuery()->where('id', $allAds);
+ }
+ $newDate = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . setting_value('visiosoft.module.advs::default_published_time') . ' day'));
+ return $advs->update(['finish_at' => $newDate]);
+ }
}
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 31e038bca..a3b32d0ad 100644
--- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php
+++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php
@@ -36,4 +36,5 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface
public function getCategoriesWithAdID($id);
+ public function extendAds($allAds, $isAdmin = false);
}
diff --git a/addons/default/visiosoft/advs-module/src/AdvsModule.php b/addons/default/visiosoft/advs-module/src/AdvsModule.php
index 41888e22c..0eda5defc 100644
--- a/addons/default/visiosoft/advs-module/src/AdvsModule.php
+++ b/addons/default/visiosoft/advs-module/src/AdvsModule.php
@@ -31,7 +31,7 @@ class AdvsModule extends Module
'href' => "/advs/create_adv",
],
'extend_all' => [
- 'href' => "/admin/advs/extendAll",
+ 'href' => "/advs/extendAll/admin",
'icon' => 'fa fa-calendar',
'type' => 'info'
],
diff --git a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
index f416601eb..d0f3880cd 100644
--- a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
+++ b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
@@ -212,9 +212,13 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'as' => 'ajax::getAds',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\AjaxController@getMyAds'
],
- 'admin/advs/extendAll' => [
+ 'advs/extendAll/{isAdmin?}' => [
'as' => 'advs::extendAll',
- 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@extendAll',
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@extendAll',
+ ],
+ 'advs/extend/{adId}' => [
+ 'as' => 'advs::extendSingle',
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@extendSingle',
],
];
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 a53c20951..311e6b30c 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
@@ -257,13 +257,4 @@ class AdvsController extends AdminController
Return Back";
echo "
Return Admin Panel";
}
-
- public function extendAll()
- {
- $advs = $this->model->get();
- $new_date = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . setting_value('visiosoft.module.advs::default_published_time') . ' day'));
- $advs->update(['finish_at' => $new_date]);
- $this->messages->success(trans('visiosoft.module.advs::field.extended'));
- return $this->redirect->to('admin/advs/advs');
- }
}
diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php
index bf8aac2a5..750325b75 100644
--- a/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php
+++ b/addons/default/visiosoft/advs-module/src/Http/Controller/AjaxController.php
@@ -78,7 +78,6 @@ class AjaxController extends PublicController
} 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());
@@ -86,11 +85,8 @@ class AjaxController extends PublicController
foreach ($my_advs as $index => $ad) {
$my_advs[$index]->detail_url = $this->adv_model->getAdvDetailLinkByModel($ad, 'list');
$my_advs[$index] = $this->adv_model->AddAdsDefaultCoverImage($ad);
-
}
return response()->json(['success' => true, 'content' => $my_advs, 'title' => $page_title]);
}
-
-
}
\ 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 9e77ca05c..57d64ae85 100644
--- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php
+++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php
@@ -364,7 +364,7 @@ class AdvsController extends PublicController
$this->template->set('meta_keywords', implode(',', explode(' ', $adv->name)));
$this->template->set('meta_description', strip_tags($adv->advs_desc, ''));
$this->template->set('meta_title', $adv->name . "|" . end($categories)['name']);
-
+ $this->template->set('meta_image', $adv->cover_photo);
if ($adv->created_by_id == isset(auth()->user()->id) OR $adv->status == "approved") {
return $this->view->make('visiosoft.module.advs::ad-detail/detail', compact('adv', 'complaints', 'recommended_advs', 'categories', 'features', 'profile', 'comments', 'qrSRC'));
@@ -974,4 +974,17 @@ class AdvsController extends PublicController
return "success";
}
-}
+ public function extendAll($isAdmin = null)
+ {
+ $adsExtended = $this->adv_repository->extendAds(true, $isAdmin);
+ $this->messages->success(trans('visiosoft.module.advs::message.extended', ['number' => $adsExtended]));
+ return $this->redirect->back();
+ }
+
+ public function extendSingle($adId)
+ {
+ $adsExtended = $this->adv_repository->extendAds($adId);
+ $this->messages->success(trans('visiosoft.module.advs::message.extended', ['number' => $adsExtended]));
+ return $this->redirect->back();
+ }
+}
\ No newline at end of file
diff --git a/addons/default/visiosoft/base-theme/resources/views/partials/ogdata.twig b/addons/default/visiosoft/base-theme/resources/views/partials/ogdata.twig
index 381f7f9d9..8ca747a5a 100644
--- a/addons/default/visiosoft/base-theme/resources/views/partials/ogdata.twig
+++ b/addons/default/visiosoft/base-theme/resources/views/partials/ogdata.twig
@@ -4,6 +4,13 @@
-
+
+
+
+
+
+
+
+
{% endblock %}
\ No newline at end of file
diff --git a/addons/default/visiosoft/profile-module/resources/assets/js/ads.js b/addons/default/visiosoft/profile-module/resources/assets/js/ads.js
index 3179970df..8f5acc203 100644
--- a/addons/default/visiosoft/profile-module/resources/assets/js/ads.js
+++ b/addons/default/visiosoft/profile-module/resources/assets/js/ads.js
@@ -1,3 +1,70 @@
+var current_page = 1;
+var records_per_page = ads_per_page;
+var ads_type = "";
+
+var objJson = [];
+
+function prevPage()
+{
+ if (current_page > 1) {
+ current_page--;
+ changePage(current_page);
+ }
+}
+
+function nextPage(event)
+{
+ if (current_page < numPages()) {
+ current_page++;
+ changePage(current_page);
+ }
+}
+
+function changePage(page)
+{
+ var btn_next = $("#btn_next");
+ var btn_prev = $("#btn_prev");
+ var listing_table = $("#nav-" + ads_type);
+ var page_span = $("#page");
+
+ // Validate page
+ if (page < 1) page = 1;
+ if (page > numPages()) page = numPages();
+
+ listing_table.html("");
+
+ for (var i = (page-1) * records_per_page; i < (page * records_per_page) && i < objJson.length; i++) {
+ listing_table.append(addAdsRow(objJson[i].id, objJson[i].detail_url, objJson[i].cover_photo, objJson[i].name,
+ objJson[i].price + " " + objJson[i].currency,
+ objJson[i].city_name, objJson[i].country_name, objJson[i].cat1_name, objJson[i].cat2_name, objJson[i].status));
+ }
+
+ page_span.html(page + "/" + numPages());
+
+ if (numPages() === 1) {
+ page_span.hide();
+ } else {
+ page_span.show();
+ }
+
+ if (page === 1) {
+ btn_prev.hide();
+ } else {
+ btn_prev.show();
+ }
+
+ if (page === numPages()) {
+ btn_next.hide();
+ } else {
+ btn_next.show();
+ }
+}
+
+function numPages()
+{
+ return Math.ceil(objJson.length / records_per_page);
+}
+
function crud(params, url, type, callback) {
$.ajax({
type: type,
@@ -11,18 +78,16 @@ function crud(params, url, type, callback) {
function getMyAds(type) {
crud({'type': type}, '/ajax/getAds', 'GET', function (callback) {
- $('#nav-' + type).html("");
- $.each(callback.content, function (index, adv) {
- $('#nav-' + type).append(addAdsRow(adv.id, adv.detail_url, adv.cover_photo, adv.name,
- adv.price + " " + adv.currency,
- adv.city_name, adv.country_name, adv.cat1_name, adv.cat2_name, adv.status));
- });
+ ads_type = type;
+ current_page = 1;
+ objJson = callback.content;
+ changePage(1);
})
}
$('.profile-ads-tab a').on('click', function () {
getMyAds($(this).attr('data-type'))
-})
+});
getMyAds('approved');
@@ -85,6 +150,11 @@ function dropdownRow(id, type) {
delete_ad +
"\n";
+ dropdown += "" +
+ " " +
+ extend_ad +
+ "\n";
+
dropdown += "";
return dropdown;
diff --git a/addons/default/visiosoft/profile-module/resources/lang/en/button.php b/addons/default/visiosoft/profile-module/resources/lang/en/button.php
index 0e67f94a2..5e27a3d0b 100644
--- a/addons/default/visiosoft/profile-module/resources/lang/en/button.php
+++ b/addons/default/visiosoft/profile-module/resources/lang/en/button.php
@@ -7,6 +7,8 @@ return [
'update_password' => 'Update Password',
'update_profile' => 'Update Profile',
'delete' => 'Delete',
+ 'extend' => 'Extend',
+ 'extend_all' => 'Extend All',
'edit' => 'Edit',
'go_profile' => 'Go to Profile Detail',
'go_user' => 'Go to User Detail',
diff --git a/addons/default/visiosoft/profile-module/resources/views/profile/ads.twig b/addons/default/visiosoft/profile-module/resources/views/profile/ads.twig
index f706fb006..a52293ce0 100644
--- a/addons/default/visiosoft/profile-module/resources/views/profile/ads.twig
+++ b/addons/default/visiosoft/profile-module/resources/views/profile/ads.twig
@@ -10,7 +10,6 @@