@include('admin.partials.alerts') {{-- For displaying validation errors --}} @php // Prepare Alpine.js states for features $featureStates = []; foreach($moduleFeatures ?? [] as $moduleName => $features) { foreach($features as $feature) { $featureKey = $feature['key'] ?? Str::slug($moduleName.' '.$feature['name']); $featureKeySlug = Str::slug($featureKey, '_'); $isCheckedInitial = false; if (old('selected_features')) { $isCheckedInitial = in_array($featureKey, old('selected_features', [])); } elseif (is_array($plan->features)) { foreach($plan->features as $planFeature) { if (isset($planFeature['key']) && $planFeature['key'] === $featureKey) { $isCheckedInitial = true; break; } } } $featureStates[] = "selectedFeature_". $featureKeySlug .": " . ($isCheckedInitial ? 'true' : 'false'); } } @endphp
@csrf @if($method === 'PUT') @method('PUT') @endif
@error('name')

{{ $message }}

@enderror
@error('price')

{{ $message }}

@enderror
@error('currency')

{{ $message }}

@enderror
@error('interval')

{{ $message }}

@enderror
@error('interval_count')

{{ $message }}

@enderror
@error('trial_period_days')

{{ $message }}

@enderror
@error('credits_awarded_on_purchase')

{{ $message }}

@enderror
@error('credits_awarded_on_renewal')

{{ $message }}

@enderror

Specify if this plan is for a particular type of user.

@error('target_role')

{{ $message }}

@enderror
@error('description')

{{ $message }}

@enderror

Module Features

@if(empty($moduleFeatures))

No modules with definable features found.

@else
@foreach($moduleFeatures as $moduleName => $featuresInModule) {{-- Renamed $features to $featuresInModule for clarity --}}
{{ $moduleName }}
@foreach($featuresInModule as $feature) @php $featureKey = $feature['key'] ?? Str::slug($moduleName.' '.$feature['name']); $featureKeySlug = Str::slug($featureKey, '_'); $isLimitable = $feature['limitable'] ?? false; $limitLabel = $feature['limit_label'] ?? 'Set Limit'; $currentLimit = ''; // For initial checked state (PHP side) $isCheckedPhp = false; if (old('selected_features')) { $isCheckedPhp = in_array($featureKey, old('selected_features')); if ($isCheckedPhp && isset(old('feature_limits')[$featureKey])) { $currentLimit = old('feature_limits.'.$featureKey, ''); } } elseif (is_array($plan->features)) { foreach($plan->features as $planFeature) { if (isset($planFeature['key']) && $planFeature['key'] === $featureKey) { $isCheckedPhp = true; $currentLimit = $planFeature['limit'] ?? ''; break; } } } @endphp
@if(isset($feature['description']))

{{ $feature['description'] }}

@endif
@if($isLimitable)
@endif
@endforeach
@endforeach
@endif @error('selected_features')

{{ $message }}

@enderror @error('feature_limits')

{{ $message }}

@enderror @foreach($moduleFeatures ?? [] as $moduleName => $featuresInModuleLoopOnError) {{-- Changed variable name to avoid conflict if $features was global --}} @foreach($featuresInModuleLoopOnError as $feature) @php $featureKey = $feature['key'] ?? Str::slug($moduleName.' '.$feature['name']); @endphp @error('feature_limits.'.$featureKey)

Limit for {{ $feature['name'] }}: {{ $message }}

@enderror @endforeach @endforeach

Available Payment Gateways for this Plan

@if(empty($availableGateways))

No active payment gateways found in the system. Configure them in settings.

@else
Select Gateways
@foreach($availableGateways as $gatewayKey => $gatewayName) @php $isGatewayChecked = false; if (old('available_gateways_input')) { $isGatewayChecked = in_array((string)$gatewayKey, (array)old('available_gateways_input', [])); } elseif ($plan->available_gateways) { $isGatewayChecked = in_array((string)$gatewayKey, (array)$plan->available_gateways); } @endphp
@endforeach
@endif @error('available_gateways_input')

{{ $message }}

@enderror

Gateway Specific Plan IDs

{{-- PayPal Plan ID --}}
@error('paypal_plan_id')

{{ $message }}

@enderror
{{-- Stripe Product & Price IDs --}}
@error('stripe_product_id')

{{ $message }}

@enderror
@error('stripe_price_id')

{{ $message }}

@enderror
{{-- Paystack Plan Code --}}
@error('paystack_plan_code')

{{ $message }}

@enderror
{{-- Authorize.Net / Custom Gateway Plan ID --}} {{-- Assuming 'authorizenet_gateway' is the key for Authorize.Net in $availableGateways --}}

Used for Authorize.Net Automated Recurring Billing (ARB) or other custom gateways requiring a plan identifier.

@error('custom_gateway_plan_id')

{{ $message }}

@enderror

Global Resource Limits

@error('resource_limits.companies_creation_limit')

{{ $message }}

@enderror
{{-- Example: If you still need a global job posting limit separate from a feature --}} {{--
@error('resource_limits.jobs_posting_limit')

{{ $message }}

@enderror
--}}
@error('active')

{{ $message }}

@enderror
Cancel