authorizeAexAccess('aex.reports.view'); $business = $this->aexUtil->getBusiness(); if (! $business) { abort(404); } $commissions = collect(); if (Schema::hasTable('aex_commissions')) { $query = Commission::where('business_id', $business->id) ->with(['deal.listing', 'user']); if ($status = $request->get('status')) { $query->where('status', $status); } $commissions = $query->orderByDesc('created_at')->limit(500)->get(); } return view('assetexchange::reports.index', [ 'commissions' => $commissions, 'statuses' => $this->aexUtil->statusLabels(), 'filters' => $request->only(['status', 'listing_id', 'source']), ]); } public function export(Request $request) { $this->authorizeAexAccess('aex.reports.view'); $business = $this->aexUtil->getBusiness(); if (! $business) { abort(404); } $filters = $request->only(['listing_id', 'source']); try { $csv = $this->marketIntelService->exportCsv($business, $filters); } catch (\Throwable $e) { return redirect()->back()->with('status', $e->getMessage()); } $filename = 'aex-market-comps-'.now()->format('Y-m-d').'.csv'; return response()->streamDownload(function () use ($csv) { echo $csv; }, $filename, [ 'Content-Type' => 'text/csv; charset=UTF-8', ]); } public function importIeComps(Request $request) { $this->authorizeAexAccess('aex.reports.view'); $business = $this->aexUtil->getBusiness(); if (! $business) { abort(404); } $listingId = $request->input('listing_id') ? (int) $request->input('listing_id') : null; try { $count = $this->marketIntelService->importFromIeBenchmarks($business, $listingId); $msg = __('assetexchange::lang.import_ie_comps_done', ['count' => $count]); } catch (\Throwable $e) { return redirect()->back()->with('status', $e->getMessage()); } return redirect() ->action([self::class, 'index']) ->with('status', $msg); } }