@if ($search) @endif
{{ __('Search') }}
@foreach ($this->typeOptions as $type) @endforeach
@foreach ($this->activeOptions as $status) @endforeach
@foreach ($this->emailVerifiedOptions as $status) @endforeach
{{-- Sortable ID column --}} {{-- Sortable Language column --}} {{-- Sortable User Name column --}} {{-- Sortable Type column --}} {{-- Sortable Comment column --}} {{-- Non-sortable Action columns --}} @forelse ($profiles as $profile) @empty @endforelse
{{ __('Id') }} @if ($sortField === 'id') @endif
{{ __('Name') }} @if ($sortField === 'name') @endif
{{ __('Type') }} @if ($sortField === 'type') @endif
{{ __('Comment') }} @if ($sortField === 'comment') @endif
{{ __('Active') }} @if ($sortField === 'inactive') @endif
{{ __('Conf.') }} @if ($sortField === 'email_verif') @endif
{{ __('Last login') }} @if ($sortField === 'last_login_at') @endif
{{ __('Created') }} @if ($sortField === 'created_at') @endif
{{ __('Actions') }}
{{ $profile->id }} @if ($profile->profile_photo_path)
profile
@endif
{{ $profile->name }}
{{ $profile->full_name }}
{{ $profile->type }}
{{ $profile->comment }}
@if ($profile->deleted === __('yes'))
{{ __('removed') }}
@elseif ($profile->deleted === __('planned'))
{{ __('removing') }}
@elseif ($profile->inactive == __('no')) {{ __('yes') }} @elseif ($profile->inactive == __('yes'))
{{ __('no') }}
@else
{{ __('pausing') }}
@endif
@if ($profile->email_suppressed)
{{ __('Blocked') }}
@elseif ($profile->email_verif == __('yes')) {{ __('yes') }} @else
{{ $profile->email_verif }}
@endif
@if ($profile->last_login_at) {{ \Carbon\Carbon::createFromTimeStamp(strtotime($profile->last_login_at))->diffForHumans() }} @endif @if ($profile->created_at) {{ \Carbon\Carbon::createFromTimeStamp(strtotime($profile->created_at))->diffForHumans() }} @endif
@if ($profile->deleted === __('yes')) {{-- Show restore button for deleted profiles --}} @else {{-- Show delete button for active profiles --}} @endif
{{ __('No results found') }}
@if($profiles->hasPages())
{{ __('per page') }}
{{ $profiles->links('livewire.long-paginator') }}
@endif @if ($editAccounts) {{ __('Accounts') . ' ' . class_basename($editAccounts['model']) . ' ' . $editAccounts['id'] }}
{{-- Photo on the left --}}
@if ($editAccounts['profile_photo_path'])
@else {{-- Optional: Placeholder if no photo --}}
@endif
{{ $initAccounts['name'] }}
{{ $initAccounts['full_name'] }}
{{ $initAccounts['location'] }}
{{ App\Models\Language::where('lang_code', $editAccounts['lang_preference'])->value('flag') }}
{{ __('Last login') . ': ' }}
{{ __('Last update') . ': ' }}
{{ __('Registered') . ': ' }}
@if ($initAccounts['inactive_at'])
{{ __('Inactive') . ': ' }}
@endif @if ($initAccounts['deleted_at'])
{{ __('Deleted') . ': ' }}
@endif
{{ $initAccounts['last_login_at'] ? \Carbon\Carbon::parse($initAccounts['last_login_at'])->diffForHumans() : '-' }}
{{ $initAccounts['last_login_at'] ? \Carbon\Carbon::createFromTimeStamp(strtotime($initAccounts['updated_at']))->diffForHumans() : '-' }}
{{ $initAccounts['created_at'] ? \Carbon\Carbon::createFromTimeStamp(strtotime($initAccounts['created_at']))->diffForHumans() : '-' }}
@if ($initAccounts['inactive_at'])
{{ \Carbon\Carbon::createFromTimeStamp(strtotime($initAccounts['inactive_at']))->diffForHumans() }}
@endif @if ($initAccounts['deleted_at'])
{{ \Carbon\Carbon::createFromTimeStamp(strtotime($initAccounts['deleted_at']))->diffForHumans() }}
@endif
@if (!empty($initAccounts['deleted_at']) && \Carbon\Carbon::parse($editAccounts['deleted_at'])->isPast())
{{ __('Re-activate') }}
@elseif (!empty($initAccounts['inactive_at']) && \Carbon\Carbon::parse($initProfile['inactive_at'])->isPast())
{{ __('Re-activate') }}
@endif
{{ __('Account id') }}
{{ __('Name') }}
{{ __('Balance') }}
{{ __('Min. limit') }}
{{ __('Max. limit') }}
{{ __('Inactive') }}
@foreach ($editAccounts['accounts'] as $account)
{{ $account['id'] }}
{{ ucfirst($account['name']) }}
{{ tbFormat($account['balance']) }}
{{ tbFormat($account['limitMin']) }}
{{ tbFormat($account['limitMax']) }}
@if ($account['inactiveAt'] && \Illuminate\Support\Carbon::parse($account['inactiveAt'])->isPast())
{{ \Illuminate\Support\Carbon::parse($account['inactiveAt'])->format('Y-m-d') }}
@else
{{ $account['inactiveAt'] ? \Illuminate\Support\Carbon::parse($account['inactiveAt'])->format('Y-m-d') : '' }}
@endif
@endforeach
{{ __('Sum of all accounts') }}
{{ tbFormat($editAccounts['totals']['sumBalances']) }}
{{ __('Receivable limit') }}
{{ !empty($editAccounts['accounts'][0]) ? tbFormat($editAccounts['accounts'][0]['limitReceivable']) : '-' }}
{{ __('Total transfers (ever)') }}
{{ $editAccounts['totals']['transfers'] }} @if ($editAccounts['totals']['transfers'] > 0) ({{ $editAccounts['totals']['transfersGiven'] }} {{ __('paid') }}, {{ $editAccounts['totals']['transfersReceived'] }} {{ __('received') }}) @endif
{{ __('Transfers') }} {{ __(timebank_config('account_info.account_totals.countTransfersSince_humanReadable')) }}
{{ $editAccounts['totalsPastYear']['transfers'] }} @if ($editAccounts['totalsPastYear']['transfers'] > 0) ({{ $editAccounts['totalsPastYear']['transfersGiven'] }} {{ __('paid') }}, {{ $editAccounts['totalsPastYear']['transfersReceived'] }} {{ __('received') }}) @endif
{{ __('Last transfer') }}
@if (empty($editAccounts['totals']['lastTransferDate'])) {{ __('No transfers yet') }} @else {{ \Carbon\Carbon::createFromTimeStamp(strtotime($editAccounts['totals']['lastTransferDate']))->diffForHumans() }} ({{ $editAccounts['totals']['lastTransferDate'] }}) @endif
{{ __('Close') }} @endif @if ($editProfile) {{ __('Profile info') . ': ' . class_basename($editProfile['model']) . ' ' . $editProfile['id'] }}
{{-- Photo on the left --}}
@if ($editProfile['profile_photo_path'])
profile
@else {{-- Optional: Placeholder if no photo --}}
@endif
{{ $initProfile['name'] }}
{{ $initProfile['full_name'] }}
{{ $initProfile['location'] }}
{{ App\Models\Language::where('lang_code', $editProfile['lang_preference'])->value('flag') }}
{{ __('Last login') . ': ' }}
{{ __('Last update') . ': ' }}
{{ __('Registered') . ': ' }}
@if ($initProfile['inactive_at'])
{{ __('Inactive') . ': ' }}
@endif @if ($initProfile['deleted_at'])
{{ __('Deleted') . ': ' }}
@endif
{{ $initProfile['last_login_at'] ? \Carbon\Carbon::parse($initProfile['last_login_at'])->diffForHumans() : '-' }}
{{ $initProfile['last_login_at'] ? \Carbon\Carbon::createFromTimeStamp(strtotime($initProfile['updated_at']))->diffForHumans() : '-' }}
{{ $initProfile['created_at'] ? \Carbon\Carbon::createFromTimeStamp(strtotime($initProfile['created_at']))->diffForHumans() : '-' }}
@if ($initProfile['inactive_at'])
{{ \Carbon\Carbon::createFromTimeStamp(strtotime($initProfile['inactive_at']))->diffForHumans() }}
@endif @if ($initProfile['deleted_at'])
{{ \Carbon\Carbon::createFromTimeStamp(strtotime($initProfile['deleted_at']))->diffForHumans() }}
@endif
@if (!empty($initProfile['deleted_at']) && \Illuminate\Support\Carbon::parse($editProfile['deleted_at'])->isPast())
{{ __('Re-activate') }}
@elseif (!empty($initProfile['inactive_at']) && \Illuminate\Support\Carbon::parse($initProfile['inactive_at'])->isPast())
{{ __('Re-activate') }}
@endif
{{ __('Username') }}
{{ __('Full name') }}
@if (isset($editProfile['modelClass']) && $editProfile['modelClass'] === 'App\Models\Bank')
{{ __('Bank level') }}
@endif
@if ($editProfile['email_verified_at'])
{{ __('Email') }}
@else
{{ __('Email (not verified)') }}
@endif
@php $emailPending = $editProfile['email_suppression_pending'] ?? null; $emailIsSuppressed = $emailPending !== null ? $emailPending : ($editProfile['email'] ? \App\Models\MailingBounce::isSuppressed($editProfile['email']) : false); @endphp @if ($emailIsSuppressed) @else @endif
{{ __('Short introduction') }}
{{ __('Long introduction') }}
{{ __('Motivation to Timebank') }}
{{ __('Website') }}
@if ($editProfile['phone_public']) @if ($editProfile['model'] == 'user')
{{ __('Phone (only public for friends!)') }}
@else
{{ __('Phone (public for ' . platform_users() . ')') }}
@endif @else
{{ __('Phone (not public!)') }}
@endif
{{ __('Admin comments') }}
@if ($editProfileChanged)
{{ __('The profile owner will be notified about this update.') }} @if (count($editProfileMessages) > 0) @foreach ($editProfileMessages as $message)
{{ $message }}
@endforeach @endif
{{ __('This update can not be undone!') }}
@endif
{{ __('Cancel') }} {{ __('Update') }}
@endif @if ($editAttachProfile) {{ __('Profile links') . ': ' . class_basename($editAttachProfile['model']) . ' ' . $editAttachProfile['id'] }}
{{-- Photo on the left --}}
@if ($editAttachProfile['profile_photo_path'])
profile
@else {{-- Optional: Placeholder if no photo --}}
@endif
{{ $initAttachProfile['name'] }}
{{ $initAttachProfile['full_name'] }}
{{ $initAttachProfile['location'] }}
{{ App\Models\Language::where('lang_code', $initAttachProfile['lang_preference'])->value('flag') }}
{{ __('Last login') . ': ' }}
{{ __('Last update') . ': ' }}
{{ __('Registered') . ': ' }}
@if ($initAttachProfile['inactive_at'])
{{ __('Inactive') . ': ' }}
@endif @if ($initAttachProfile['deleted_at'])
{{ __('Deleted') . ': ' }}
@endif
{{ $initAttachProfile['last_login_at'] ? \Carbon\Carbon::parse($initAttachProfile['last_login_at'])->diffForHumans() : '-' }}
{{ $initAttachProfile['last_login_at'] ? \Carbon\Carbon::createFromTimeStamp(strtotime($initAttachProfile['updated_at']))->diffForHumans() : '-' }}
{{ $initAttachProfile['created_at'] ? \Carbon\Carbon::createFromTimeStamp(strtotime($initAttachProfile['created_at']))->diffForHumans() : '-' }}
@if ($initAttachProfile['inactive_at'])
{{ \Carbon\Carbon::createFromTimeStamp(strtotime($initAttachProfile['inactive_at']))->diffForHumans() }}
@endif @if ($initAttachProfile['deleted_at'])
{{ \Carbon\Carbon::createFromTimeStamp(strtotime($initAttachProfile['deleted_at']))->diffForHumans() }}
@endif
{{ __('Linked profiles') }}
@foreach ($editAttachProfile['profiles'] as $profileIndex => $profile) @php $isRemoved = !empty($profile['removed']); // For Org/Bank modals the role type is the parent; for User modals it's the linked profile's own type. $roleType = ucfirst($editAttachProfile['model']) === 'User' ? ($profile['type'] ?? '') : ucfirst($editAttachProfile['model']); $roleOptions = match($roleType) { 'Organization' => [ ['id' => 'organization-coordinator','name' => __('Coordinator (full access except payments)')], ['id' => 'organization-manager', 'name' => __('Manager (full access including payments)')], ], 'Bank' => [ ['id' => 'bank-coordinator','name' => __('Coordinator (full access except payments)')], ['id' => 'bank-manager', 'name' => __('Manager (full access including payments)')], ], 'Admin' => [['id' => 'administrator', 'name' => __('Administrator')]], default => [], }; $showRoleSelect = !$isRemoved && count($roleOptions) > 0; @endphp
{{-- Photo spanning both rows --}}
@if ($profile['profile_photo_path'] ?? false) profile @else
@endif
{{-- Name + role stacked --}}
{{ ($profile['username'] ?? '') . ' - ' . ucfirst($profile['name'] ?? '') }}
@if (!$isRemoved) @endif
@if ($showRoleSelect) @php $fixedRole = in_array($roleType, ['User', 'Admin']); @endphp
@foreach ($roleOptions as $opt) @endforeach
@endif
@endforeach
{{ __('Attach new profile') }}
@if (!empty($editAttachProfile['newProfile'])) @php $newProfileModel = class_basename($editAttachProfile['newProfile']['type'] ?? ''); $parentModel = ucfirst($editAttachProfile['model'] ?? ''); $newRoleType = $newProfileModel !== 'User' ? $newProfileModel : $parentModel; $newRoleOptions = match($newRoleType) { 'Organization' => [ ['id' => 'organization-coordinator','name' => __('Coordinator (full access except payments)')], ['id' => 'organization-manager', 'name' => __('Manager (full access including payments)')], ], 'Bank' => [ ['id' => 'bank-coordinator','name' => __('Coordinator (full access except payments)')], ['id' => 'bank-manager', 'name' => __('Manager (full access including payments)')], ], 'Admin' => [['id' => 'administrator', 'name' => __('Administrator')]], default => [], }; @endphp @if (count($newRoleOptions) > 0) @php $newRoleFixed = in_array($newRoleType, ['User', 'Admin']); @endphp
@foreach ($newRoleOptions as $opt) @endforeach @error('editAttachProfile.newProfile.role')

{{ $message }}

@enderror
@endif @endif
{{ __('Admin comments') }}
@if ($editAttachProfileChanged)
{{ __('The profile owner will be notified about this update.') }}
{{ __('This update can not be undone!') }}
@endif
{{ __('Cancel') }} {{ __('Update') }}
@endif @if ($modalRestoreProfile && $restoreProfileData) {{ __('Are you sure?') }}
{{ __('Do you want to restore this profile?') }}
{{-- Profile Info --}}
{{ $restoreProfileData['name'] }}
{{ $restoreProfileData['full_name'] }}
{{ $restoreProfileData['email'] }}
{{ __('Type') }}: {{ $restoreProfileData['type'] }}
{{ __('Deleted') }}:
{{ $restoreProfileData['deletedAt'] }}
{{ __('Time remaining') }}:
{{ $restoreProfileData['timeRemaining'] }}
{{ __('Grace period expires') }}:
{{ $restoreProfileData['gracePeriodExpiry'] }}
{{ __('This profile will be fully restored and the user will be able to log in again. All balance handling preferences will be cleared.') }}
{{ __('Cancel') }} {{ __('Restore profile') }}
@endif @if ($modalDeleteProfile && $deleteProfileData) {{ __('Delete this profile?') }}
{{ __('Are you sure you want to delete this profile? This step is irreversible.') }}
{{-- Profile Info --}}
{{ $deleteProfileData['name'] }}
{{ $deleteProfileData['full_name'] }}
{{ $deleteProfileData['email'] }}
{{ __('Type') }}: {{ $deleteProfileData['type'] }}
{{ __('Once your profile is deleted, all of its balance totals and data will be permanently deleted. All your transactions will be anonymized, also in the online transaction overviews and statements of other ' . platform_name() . ' users.')}}
{{-- Account Balances Overview --}} @if($deleteProfileData['accounts'] && count($deleteProfileData['accounts']) > 0)

{{ __('Your accounts') }}

@foreach($deleteProfileData['accounts'] as $account)
{{ $account['name'] }} {{ $account['balanceFormatted'] }}
@endforeach
{{ __('Total balance') }} {{ tbFormat($deleteProfileData['totalBalance']) }}
@endif {{-- Central Bank Warning --}} @if($deleteProfileData['isCentralBank'])
{{ __('Central bank cannot be deleted') }}

{{ __('This is the central bank (level 0) and cannot be removed from the system. Central banks are essential for currency creation and management.') }}

@endif {{-- Final Admin Warning --}} @if($deleteProfileData['isFinalAdmin'])
{{ __('Final administrator cannot be deleted') }}

{{ __('At least one administrator account must remain active in the system.') }}

@endif {{-- Negative Balance Warning --}} @if($deleteProfileData['hasNegativeBalance'])
{{ __('Cannot delete profile with negative balance') }}

{{ __('You must settle all debts before you can delete your profile. Please ensure all your account balances are zero or positive.') }}

@endif {{-- Balance Handling Options --}} @if($deleteProfileData['showBalanceOptions'] && $deleteProfileData['totalBalance'] != 0 && !$deleteProfileData['hasNegativeBalance'] && !$deleteProfileData['isCentralBank'] && !$deleteProfileData['isFinalAdmin'])
@if($balanceHandlingOption === 'donate')
@if($donationExceedsLimit && $donationLimitError)
{{ __('Donation exceeds account limits') }}

{{ $donationLimitError }}

@endif
@endif
@endif @if(!$deleteProfileData['isCentralBank'] && !$deleteProfileData['hasNegativeBalance'] && !$deleteProfileData['isFinalAdmin'])
@endif
{{ __('Cancel') }} {{ __('Delete profile') }}
@endif @push('scripts') @endpush