with($this->portalData()); if (auth()->guard('contact')->user()) { App::forgetInstance('translator'); $t = app('translator'); $t->replace(Ninja::transformTranslations(auth()->guard('contact')->user()->client->getMergedSettings())); } } /** * @return array */ private function portalData(): array { if (! auth()->guard('contact')->user()) { return []; } auth()->guard('contact')->user()->loadMissing(['client' => function ($query) { $query->without('gateway_tokens', 'documents'); // Exclude 'grandchildren' relation of 'client' }]); $this->settings = auth()->guard('contact')->user()->client->getMergedSettings(); $data['sidebar'] = $this->sidebarMenu(); $data['header'] = []; $data['footer'] = []; $data['countries'] = app('countries'); $data['company'] = auth()->guard('contact')->user()->company; $data['client'] = auth()->guard('contact')->user()->client; $data['settings'] = $this->settings; $data['currencies'] = app('currencies'); $data['contact'] = auth()->guard('contact')->user(); $data['multiple_contacts'] = session()->get('multiple_contacts') ?: collect(); return $data; } private function sidebarMenu(): array { $enabled_modules = auth()->guard('contact')->user()->company->enabled_modules; $data = []; if ($this->settings->enable_client_portal_dashboard) { $data[] = [ 'title' => ctrans('texts.dashboard'), 'url' => 'client.dashboard', 'icon' => 'activity']; } if (self::MODULE_INVOICES & $enabled_modules) { $data[] = ['title' => ctrans('texts.invoices'), 'url' => 'client.invoices.index', 'icon' => 'file-text']; } if (self::MODULE_RECURRING_INVOICES & $enabled_modules) { $data[] = ['title' => ctrans('texts.recurring_invoices'), 'url' => 'client.recurring_invoices.index', 'icon' => 'file']; } $data[] = ['title' => ctrans('texts.payments'), 'url' => 'client.payments.index', 'icon' => 'credit-card']; if (self::MODULE_QUOTES & $enabled_modules) { $data[] = ['title' => ctrans('texts.quotes'), 'url' => 'client.quotes.index', 'icon' => 'align-left']; } if (self::MODULE_CREDITS & $enabled_modules) { $data[] = ['title' => ctrans('texts.credits'), 'url' => 'client.credits.index', 'icon' => 'credit-card']; } $data[] = ['title' => ctrans('texts.payment_methods'), 'url' => 'client.payment_methods.index', 'icon' => 'shield']; $data[] = ['title' => ctrans('texts.documents'), 'url' => 'client.documents.index', 'icon' => 'download']; if (auth()->guard('contact')->user()->client->getSetting('enable_client_portal_tasks')) { $data[] = ['title' => ctrans('texts.tasks'), 'url' => 'client.tasks.index', 'icon' => 'clock']; } $data[] = ['title' => ctrans('texts.statement'), 'url' => 'client.statement', 'icon' => 'activity']; // if (Ninja::isHosted() && auth()->guard('contact')->user()->company->id == config('ninja.ninja_default_company_id')) { $data[] = ['title' => ctrans('texts.plan'), 'url' => 'client.plan', 'icon' => 'credit-card']; // } else { $data[] = ['title' => ctrans('texts.subscriptions'), 'url' => 'client.subscriptions.index', 'icon' => 'calendar']; // } if (auth()->guard('contact')->user()->client->getSetting('client_initiated_payments')) { $data[] = ['title' => ctrans('texts.pre_payment'), 'url' => 'client.pre_payments.index', 'icon' => 'dollar-sign']; } return $data; } }