current())->send(); } } protected $user; public function home(ProfileFormBuilder $form, AdvRepositoryInterface $advRepository) { //clear empty ads $advRepository->delete_empty_advs(); $menu_fields = array(); $advs_count = new AdvModel(); $advs_count = count($advs_count->myAdvsByUser()->get()); $profileModel = new ProfileModel(); $users = UsersUsersEntryModel::find(Auth::id()); $profiles = $profileModel->getProfile(Auth::id())->orderBy("id")->first(); if ($profiles == null) { $newProfile = []; $newProfile ['user_id'] = Auth::id(); $profileModel->getProfile()->create($newProfile); $profiles = $profileModel->getProfile(Auth::id())->orderBy("id")->first(); } $country = CountryModel::all(); return $this->view->make('visiosoft.module.profile::profile.detail', compact('users', 'profiles', 'country', 'form', 'my_packages', 'menu_fields', 'myMessages', 'message_count', 'myPurchase', 'mySales', 'advs_count', 'fav_count', 'userbalance', 'balancespackage')); } public function extendAds($id, $type, SettingRepositoryInterface $settings) { $isActivePackages = new AdvModel(); $isActivePackages = $isActivePackages->is_enabled('packages'); if ($isActivePackages) { //Search Last Time Packages By User $TimePackages = new PackageFEController(); $LastTimePackages = $TimePackages->getPackagesByUser('lasttime'); //no packages by user if ($LastTimePackages == false) { return response()->json(['success' => false, 'msg' => trans('visiosoft.module.profile::message.no_extend_package')]); } //Search Time packages By id $TimePackages = $TimePackages->getTimePackages($LastTimePackages['package_id']); $adv = new AdvModel(); $adv->finish_at_Ads($id, $TimePackages['time']); // auto approved find $auto_approved = $settings->value('visiosoft.module.advs::auto_approve'); if ($auto_approved == true) { $type = "approved"; } $adv->statusAds($id, $type); return response()->json(['success' => true]); } else { return response()->json(['success' => false, 'msg' => trans('visiosoft.module.profile::message.no_packages_module')]); } } public function statusAds($id, $type, SettingRepositoryInterface $settings, Dispatcher $events, AdvModel $advModel) { $ad = $advModel->getAdv($id); $auto_approved = $settings->value('visiosoft.module.advs::auto_approve'); $default_published_time = $settings->value('visiosoft.module.advs::default_published_time'); if ($auto_approved == true AND $type == 'pending_admin') { $type = "approved"; } if ($type == "approved") { $advModel->publish_at_Ads($id); if ($ad->finish_at == NULL AND $type == "approved") { if ($advModel->is_enabled('packages')) { $packageModel = new PackageModel(); $published_time = $packageModel->reduceTimeLimit($ad->cat1); if ($published_time != null) { $default_published_time = $published_time; } } $advModel->finish_at_Ads($id, $default_published_time); } } $isActiveAlgolia = new AdvModel(); $isActiveAlgolia = $isActiveAlgolia->is_enabled('algolia'); if ($isActiveAlgolia) { $algolia = new SearchModel(); $algolia->updateStatus($id, $type, $settings); } $status = $advModel->statusAds($id, $type); $events->dispatch(new ChangeStatusAd($id, $settings));//Create Notify return response()->json(['status' => $status]); } public function adressEdit($id) { $adressModel = new AdressModel(); $adress = $adressModel->getAdressFirst($id); if ($adress->getAttribute('user_id') == Auth::id()) { $country = CountryModel::all(); return $this->view->make('visiosoft.module.profile::address/edit', compact('adress', 'country')); } } public function adressUpdate(AdressFormBuilder $form, Request $request, $id) { $error = $form->build()->validate()->getFormErrors()->getMessages(); if (!empty($error)) { return $this->redirect->back(); } $adressModel = new AdressModel(); $adress = $adressModel->getAdressFirst($id); if ($adress->getAttribute('user_id') == Auth::id()) { $New_value = $request->all(); $New_value['country_id'] = $New_value['country']; unset($New_value['_token'], $New_value['action'], $New_value['country']); $adressModel->getAdress($id)->update($New_value); $message = []; $message[] = trans('visiosoft.module.profile::message.adress_success_update'); return redirect(route('profile::address'))->with('success', $message); } } public function adressCreate(AdressFormBuilder $form, Request $request) { if (isset($request->request->all()['action']) == "save") { $error = $form->build()->validate()->getFormErrors()->getMessages(); if (!empty($error)) { return $this->redirect->back(); } $new_adress = $request->request->all(); unset($new_adress['action'], $new_adress['_to*ken']); $new_adress['user_id'] = Auth::id(); $adressModel = new AdressModel(); $adressModel->getAdress()->create($new_adress); $message = []; $message[] = trans('visiosoft.module.profile::message.adress_success_create'); return redirect(route('profile::address'))->with('success', $message); } $country = CountryModel::all(); return $this->view->make('visiosoft.module.profile::address/create', compact('country')); } public function adressAjaxCreate(AdressFormBuilder $form, Request $request) { $message = []; $error = $form->build()->validate()->getFormErrors()->getMessages(); if (!empty($error)) { $message['status'] = "error"; $message['msg'] = trans('visiosoft.module.profile::message.required_all'); return $message; } $new_adress = $request->request->all(); unset($new_adress['action'], $new_adress['_token']); $new_adress['user_id'] = Auth::id(); $adressModel = new AdressModel(); $address = $adressModel->getAdress()->create($new_adress); $message['status'] = "success"; $message['data'] = $address; return $message; } public function showMessage($id) { $message = new MessageModel(); $message = $message->showMessage($id); $messageInfo = $message[0]; $messageDetail = $message[1]; if ($message[0]->adv_user_id == auth()->id()) { return $this->view->make('visiosoft.module.profile::profile.message-detail', compact('messageInfo', 'messageDetail')); } else { abort(403); } } public function Address() { $address = new AdressModel(); $address = $address->getUserAdress(); return $this->view->make('visiosoft.module.profile::address/list', compact('address')); } public function disableAccount() { UsersUsersEntryModel::query()->find(Auth::id())->update(['enabled' => 0]); return redirect('/'); } public function notification(Request $request) { $all = $request->all(); unset($all['_']); $profileModel = new ProfileModel(); $status = $profileModel->getProfile(Auth::id())->update($all); return response()->json($status); } public function myAds() { return $this->view->make('visiosoft.module.profile::profile/ads'); } }