@extends('layouts.demo10.base') @php $projectStatus = strtolower($currentProject->status ?? 'active'); $projectDescription = filled($currentProject->description) ? $currentProject->description : 'N/A'; $createdDate = optional($currentProject->created_at)->format('F, d, Y') ?? 'N/A'; $updatedDate = optional($currentProject->updated_at)->format('F, d, Y') ?? 'N/A'; $schemaDesignUrl = route('tenants.projects.schema_design', ['projectName' => $currentProject->slug]) . '?tenant_id=' . $currentProject->id; $projectImportUrl = route('tenants.projects.import', ['projectName' => $currentProject->slug]); $dataSourceType = strtolower($dataSourceConnection->source_type ?? 'odk'); $dataSourceUpdatedDate = optional($dataSourceConnection?->updated_at)->format('F, d, Y') ?? 'N/A'; $dataSourceStatus = strtolower($dataSourceConnection->status ?? 'inactive'); $dataSourceUsesToken = (bool) data_get($dataSourceConnection?->settings, 'use_auth_token', false); $dataSourceColspan = $dataSourceType === 'csv' ? 6 : 7; $groupedPiiAttributes = collect($attributes ?? [])->groupBy('table'); $dataSourceConfig = [ 'id' => $dataSourceConnection?->id, 'type' => $dataSourceType, 'base_url' => $dataSourceConnection?->base_url, 'project_id' => $dataSourceConnection?->project_id, 'form_id' => $dataSourceConnection?->form_id, 'username' => $dataSourceConnection?->username, 'file_name' => $dataSourceConnection?->file_name, 'file_path' => $dataSourceConnection?->file_path, 'use_auth_token' => $dataSourceUsesToken, ]; $adminFormTabs = [ [ 'key' => 'progress', 'label' => 'Progress', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'progress']), ], [ 'key' => 'component1', 'label' => 'Component 1', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'component1']), ], [ 'key' => 'component2', 'label' => 'Component 2', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'component2']), ], [ 'key' => 'component3', 'label' => 'Component 3', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'component3']), ], [ 'key' => 'component4', 'label' => 'Component 4', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'component4']), ], [ 'key' => 'baseline', 'label' => 'Baseline', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'baseline']), ], [ 'key' => 'import', 'label' => 'Import', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'import']), ], [ 'key' => 'group', 'label' => 'Group', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'group']), ], [ 'key' => 'user', 'label' => 'User', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'user']), ], [ 'key' => 'alert', 'label' => 'Alert', 'route' => route('tenants.projects.admin_forms', ['projectName' => $currentProject->slug, 'tab' => 'alert']), ], ]; $activeTab = $activeTab ?? 'general'; $adminFormValidTabs = ['beneficiaries', 'financial', 'import', 'threshold', 'group', 'user', 'alert', 'alert_engine']; $adminFormDefaultTab = 'import'; $querySettingsTab = request('tab', 'general'); $queryAdminTab = request('adminTab'); $settingsTabKeys = [ 'general', 'data-source', 'schema-design', 'tenant-domain', 'tenant-themes', 'Themes-configuration', 'import', 'cron-scheduler', 'pii-management', 'view-data', 'theme', 'admin-forms', ]; $settingsActiveTab = in_array($querySettingsTab, $settingsTabKeys, true) ? $querySettingsTab : 'general'; $adminFormActiveTab = $adminFormDefaultTab; if ($queryAdminTab && in_array($queryAdminTab, $adminFormValidTabs, true)) { $settingsActiveTab = 'admin-forms'; $adminFormActiveTab = $queryAdminTab; } elseif (!in_array($querySettingsTab, $settingsTabKeys, true) && in_array($querySettingsTab, $adminFormValidTabs, true)) { $settingsActiveTab = 'admin-forms'; $adminFormActiveTab = $querySettingsTab; } elseif (in_array($activeTab, $adminFormValidTabs, true)) { $adminFormActiveTab = $activeTab; } @endphp @section('content')

Projects Settings

Project/{{ $currentProject->name }}/Settings
{{--
--}}
{{--
@can('edit.projects') @else @endcan
--}}
@can('view.general')@endcan @can('view.data_source')@endcan @can('view.schema_design')@endcan @can('view.tenant_themes')@endcan @can('view.themes-configuration')@endcan @can('view.import')@endcan @can('view.cron_scheduler')@endcan @can('view.pii_management')@endcan @can('view.datasets')@endcan
{{-- Header --}}

Project information

{{-- Hidden old structure data for existing JS --}} {{-- Body --}}
{{-- Footer --}}
@can('edit.general') @else @endcan @can('delete.general') @endcan
{{-- Header --}}

ODK Connection Information

{{-- Body --}}
{{-- Server URL --}}
{{-- Project ID + Form ID --}}
{{-- Auth + Status --}}
{{-- Last Updated --}}
{{-- Footer --}}
@php $latestSchema = $schemaHistories->first(); $schemaFileName = $latestSchema && $latestSchema->schema_file ? basename($latestSchema->schema_file) : ''; $generatedBy = $latestSchema && $latestSchema->user ? $latestSchema->user->name : 'Super Admin'; $generatedAt = $latestSchema && $latestSchema->created_at ? $latestSchema->created_at->format('F d, Y') : ''; @endphp

Schema design information

@can('edit.schema_design') @endcan
@php $domainsData = $tenantDomains->map(function ($td) { return [ 'id' => $td->id, 'domain' => $td->domain, 'domain_type' => $td->domain_type, 'domain_scheme' => $td->domain_scheme, 'project' => $td->project?->name, 'theme_id' => $td->theme_id, 'theme_name' => $td->theme?->name, 'verification_mode' => $td->verification_mode, 'expected_cname_target' => $td->expected_cname_target, 'expected_ip_address' => $td->expected_ip_address, 'expected_targets' => $td->verification_targets ?: array_values(array_filter([ $td->expected_cname_target, $td->expected_ip_address, ])), 'notes' => $td->notes, 'is_primary' => (bool) $td->is_primary, 'status' => $td->status, 'verified_at' => $td->verified_at?->format('M d, Y'), 'created_by' => $td->createdBy?->name, ]; })->values(); $domainThemeOptions = collect($themes ?? [])->map(fn($theme) => [ 'id' => $theme->id, 'name' => $theme->name, ])->values(); $defaultDomainTargets = array_values(array_unique(array_filter((array) config('tenant_domains.default_expected_targets', [])))); $defaultDomainTargetsText = implode(', ', $defaultDomainTargets); $defaultDomainScheme = config('tenant_domains.default_scheme', 'https'); $defaultActiveThemeId = $currentThemeSetting?->theme_id; $primaryTarget = $defaultDomainTargets[0] ?? parse_url(config('app.url'), PHP_URL_HOST) ?? '127.0.0.1'; $primaryTargetType = filter_var($primaryTarget, FILTER_VALIDATE_IP) ? 'A' : 'CNAME'; @endphp

Configured Domains

Add new domain

@csrf

Enter domain without https://

Connect your domain

DNS Configuration

Pending propagation

Type

CNAME

Name

www

Target

app.yourplatform.com

DNS changes can take up to 24–48 hours to propagate globally.

Add Base Theme

Select how the application interface should appear to you.

{{-- Default Theme 1 --}}
Default Theme
Clean and minimal
{{-- Default Theme 2 --}}
Default Theme
Clean and minimal
{{-- Government Progress Theme --}}
Government Progress Theme
Formal and professional
{{-- Branding Assets --}}

Branding Assets

Select how the application interface should appear to you.

Primary Logo
Dark Logo
Favicon
{{-- Color Theme --}}

Color Theme

Choose colors for your tenant workspace.

Primary color
Cobalt Blue
#111FF
Secondary color
Forest Green
#111FF
Accent color
Royal Purple
#111FF
Text color
Dark
#111FF
{{-- Typography & Layout --}}

Typography & Layout

Choose typography for your tenant workspace.

{{-- Additional Settings --}}

Additional Settings

Import history

JD
{{ $importHistories->first()?->user?->name ?? 'Jane Doe (Lead Admin)' }}
{{-- Header --}}

PII Management

{{-- Body --}}
@can('view.pii_management') {{-- Role --}}
{{-- Dataset Attributes --}}
{{-- Dummy Users Card --}}

Users

{{-- Existing Dynamic Data --}} @if($groupedPiiAttributes->isNotEmpty())
@foreach($groupedPiiAttributes as $tableName => $tableAttributes) @php $tableSlug = \Illuminate\Support\Str::slug($tableName); @endphp

{{ $tableName }}

@foreach($tableAttributes as $index => $attribute) @endforeach
@endforeach
@endif
@else
You do not have permission to view PII Management.
@endcan
{{-- Footer --}} @can('edit.pii_management')
@endcan

Cron Scheduler

Scheduled tasks will run automatically according to the specified frequency.
Ensure your server URL is reachable from our network.

View Data

@can('delete.view_data') @endcan @can('edit.view_data') @endcan
↕ User ↕ Project ↕ Time ↕ Last Run ↕ Next Run ↕ Status
Syed Bilal
bilal@example.com
IFRAP 04:50:12 March, 06, 2026 March, 08, 2026 March, 06, 2026
Alex Rivera
a.exr@project.com
SYSTEM 12:15:00 March, 05, 2026 March, 07, 2026 Pending
{{-- Header --}}

Select Tenant Theme

Choose a visual identity that best represents your organization’s workflow and reporting style.

{{-- Default Theme --}}

Default Theme

A clean and minimal aesthetic designed for
high-focus task management.

{{-- Government Theme --}}

Government Progress Theme

Formal and professional layout optimized for
compliance and official reporting.

{{-- Info Box --}}

Theme changes will be applied globally for all users in your tenant. Review the preview in the branding dashboard before finalizing significant stylistic shifts.

{{-- Footer --}}
@can('edit.projects')

Edit Project

@csrf

Add Projects

Edit Data Source

@csrf

ODK Central Connection

Projects/{{ $currentProject->name }}/Data Source/ODK Connection

@can('create.cron_scheduler')

Add Cron Schedule

@csrf
@endcan @can('edit.cron_scheduler')

Edit Cron Schedule

@csrf
@endcan @canany(['run.cron_scheduler', 'process.import'])

Running Import

Please wait, we are importing data from ODK Central.

@endcanany @endcan
@include('pages.project.admin-forms.partials.import')
@include('pages.project.admin-forms.partials.beneficiaries')
@include('pages.project.admin-forms.partials.financial')
@include('pages.project.admin-forms.partials.group')
@include('pages.project.admin-forms.partials.alert')
@include('pages.project.admin-forms.partials.alert_engine')
@endsection @section('scripts') @vite('resources/js/pages/project-settings.js') @vite('resources/js/ImportDataset/view-dataset.js') @endsection