diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php index e48dab82a..41949da7a 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php @@ -13,6 +13,8 @@ use Visiosoft\LocationModule\Country\CountryModel; use Visiosoft\CartsModule\Cart\Command\GetCart; use Visiosoft\LocationModule\District\DistrictModel; use Visiosoft\LocationModule\Neighborhood\NeighborhoodModel; +use Visiosoft\LocationModule\Village\Contract\VillageRepositoryInterface; +use Visiosoft\LocationModule\Village\VillageModel; class AdvModel extends AdvsAdvsEntryModel implements AdvInterface { @@ -373,6 +375,12 @@ class AdvModel extends AdvsAdvsEntryModel implements AdvInterface return $neighborhood ? $neighborhood->name : false; } + public function getVillage() + { + $village = app(VillageRepositoryInterface::class)->find($this->village); + return $village ? $village->name : false; + } + public function expired() { return $this->finish_at ? $this->finish_at < Carbon::now() : true; diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php index a843841bd..a87a12e76 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php @@ -451,7 +451,7 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface public function approveAds($adsIDs) { $defaultAdPublishTime = setting_value('visiosoft.module.advs::default_published_time'); - $ads = $this->newQuery()->where('advs_advs.id', $adsIDs)->update([ + $ads = $this->newQuery()->whereIn('advs_advs.id', $adsIDs)->update([ 'status' => 'approved', 'finish_at' => date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $defaultAdPublishTime . ' day')), 'publish_at' => date('Y-m-d H:i:s') @@ -459,4 +459,14 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface return $ads; } + + public function getUserAds($userID = null) + { + $userID = auth_id_if_null($userID); + return $this->newQuery() + ->where('advs_advs.created_by_id', $userID) + ->where('status', 'approved') + ->where('finish_at', '>', date('Y-m-d H:i:s')) + ->get(); + } } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Command/GetUserAds.php b/addons/default/visiosoft/advs-module/src/Adv/Command/GetUserAds.php new file mode 100644 index 000000000..4541f1a40 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Adv/Command/GetUserAds.php @@ -0,0 +1,18 @@ +userID = $userID; + } + + public function handle(AdvRepositoryInterface $advRepository) + { + return $advRepository->getUserAds($this->userID); + } +} diff --git a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php index a9cb314fd..586b7a94a 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php @@ -4,5 +4,81 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryInterface; interface AdvInterface extends EntryInterface { + public function is_enabled($slug); + + public function is_enabled_extension($slug); + + public function is_active($id); + + public function getAdv($id = null, $nullable_ad = false, $trashed = false); + + public function userAdv($nullable_ad = false, $checkRole = true); + + public function getAdvByCat($cat_id); + + public function pendingAdvsByUser(); + + public function favsAdvsByUser($fav_ids); + + public function myAdvsByUser(); + + public function foreignCurrency($currency, $price, $isUpdate, $settings); + + public function popularAdvs(); + + public function advsofDay(); + + public function statusAds($id, $status); + + public function finish_at_Ads($id, $endDate); + + public function publish_at_Ads($id); + + public function getLastUserAdv(); + + public function getLocationNames($advs); + + public function isAdv($id); + + public function addCart($item, $quantity = 1, $name = null); + + public function getAdvDetailLinkByModel($object, $type = null); + + public function getAdvDetailLinkByAdId($id); + + public function getAdvimage($id); + + public function getLatestField($slug); + + public function updateStock($id, $quantity); + + public function stockControl($id, $quantity); + + public function saveCustomField($category_id, $field_id, $name); + + public function customfields(); + + public function priceFormat($adv); + + public function AddAdsDefaultCoverImage($ad); + + public function GetAdsDefaultCoverImageByAdId($id); + + public function viewed_Ad($id); + + public function getRecommended($id); + + public function authControl(); + + public function inStock(); + + public function getCity(); + + public function getDistrict(); + + public function getNeighborhood(); + + public function getVillage(); + public function expired(); } 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 eb59f6eb2..37104c3f2 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php @@ -46,4 +46,6 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface public function getPopular(); public function approveAds($adsIDs); + + public function getUserAds($userID = null); } diff --git a/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php b/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php index 475def11a..40186316b 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php @@ -7,9 +7,9 @@ use Visiosoft\AdvsModule\Adv\Command\appendRequestURL; use Visiosoft\AdvsModule\Adv\Command\GetAd; use Visiosoft\AdvsModule\Adv\Command\getExchange; use Visiosoft\AdvsModule\Adv\Command\getPopular; +use Visiosoft\AdvsModule\Adv\Command\GetUserAds; use Visiosoft\AdvsModule\Adv\Command\isActive; use Visiosoft\AdvsModule\Adv\Command\LatestAds; -use Visiosoft\AdvsModule\Adv\Contract\AdvRepositoryInterface; use Visiosoft\AdvsModule\Currency\Currency; use Visiosoft\AdvsModule\Currency\CurrencyFormat; @@ -78,6 +78,12 @@ class AdvsModulePlugin extends Plugin ->get(); } ), + new \Twig_SimpleFunction( + 'getUserAds', + function ($userID = null) { + return $this->dispatch(new GetUserAds($userID)); + } + ), new \Twig_SimpleFunction( 'getUserPassiveAdvs', function ($user = null) { 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 62c5af4da..db7d0b52d 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php @@ -450,7 +450,7 @@ class AdvsController extends PublicController $adv = $this->adv_repository->getListItemAdv($id); - if ($adv && !$adv->expired()) { + if ($adv && (!$adv->expired() || $adv->created_by_id === \auth()->id())) { if ($this->adv_model->is_enabled('complaints')) { $complaints = ComplaintsComplainTypesEntryModel::all();