@extends('layouts.app') @section('title', $campaign->name) @section('page-title', $campaign->name) @section('page-subtitle', $campaign->brand_name ?? 'Campaign Overview') @section('topbar-actions') View Posts @unless(auth()->user()->role === 'influencer') Edit @endunless ← All Campaigns @endsection @push('styles') @endpush @section('content')
@php $isInfluencer = auth()->user()->role === 'influencer'; $symbol = match ($campaign->payment_currency ?? 'INR') { 'USD' => '$', 'EUR' => '€', 'GBP' => '£', 'AED' => 'د.إ', 'SGD' => 'S$', default => '₹', }; $statusClass = match ($campaign->status) { 'active' => 'badge-active', 'paused' => 'badge-paused', 'completed' => 'badge-completed', default => 'badge-draft', }; @endphp {{-- ─── Hero ─── --}}
{{ $campaign->name }}
{{ ucfirst($campaign->status ?? 'draft') }}
Campaign Manager
{{ $campaign->campaign_manager ?? '—' }}
Brand
{{ $campaign->brand_name ?? '—' }}
Industry
{{ $campaign->industry ? ucwords(strtolower($campaign->industry)) : '—' }}
@if ($campaign->start_date || $campaign->end_date || $campaign->total_budget || $campaign->payment_model)
@if ($campaign->start_date)
{{ \Carbon\Carbon::parse($campaign->start_date)->format('d M Y') }}
Start Date
@endif @if ($campaign->end_date)
{{ \Carbon\Carbon::parse($campaign->end_date)->format('d M Y') }}
End Date
@endif @if ($campaign->start_date && $campaign->end_date)
{{ \Carbon\Carbon::parse($campaign->start_date)->diffInDays(\Carbon\Carbon::parse($campaign->end_date)) }}d
Duration
@endif @if ($campaign->payment_model)
{{ str_replace('_', ' ', ucfirst($campaign->payment_model)) }}
Payment Model
@endif
@endif
{{-- 1. Campaign Basics --}}
Campaign Basics
@if ($campaign->objective)
Objective
{{ $campaign->objective }}
@endif @if ($campaign->description)
Description
{{ $campaign->description }}
@endif @if ($campaign->target_audience)
Target Audience
{{ $campaign->target_audience }}
@endif @if (!$campaign->objective && !$campaign->description && !$campaign->target_audience)
No campaign details added yet.
@endif
{{-- 2. Eligibility --}}
Eligibility Requirements
@if (!empty($campaign->allowed_platforms))
Allowed Platforms
@foreach ((array) $campaign->allowed_platforms as $p) {{ $p }} @endforeach
@endif @if ($campaign->min_followers)
Min. Followers
{{ number_format($campaign->min_followers) }}
@endif @if ($campaign->min_avg_views)
Min. Avg. Views
{{ number_format($campaign->min_avg_views) }}
@endif @if ($campaign->geo_eligibility)
Geo / Country
{{ $campaign->geo_eligibility }}
@endif @if ($campaign->language_requirement)
Language
{{ $campaign->language_requirement }}
@endif @if ($campaign->gender_preference)
Gender Preference
{{ ucfirst($campaign->gender_preference) }}
@endif @if ($campaign->age_preference)
Audience Age Range
{{ $campaign->age_preference }}
@endif
Manual Influencer Approval
@if ($campaign->manual_approval)
Required — each influencer must be individually approved
@else
Not required — open enrollment
@endif
{{-- 3. Payment & Budget --}}
Payment & Budget
Payment Model
@if ($campaign->payment_model) {{ str_replace('_', ' ', ucwords($campaign->payment_model, '_')) }} @else Not set @endif
Currency
{{ $campaign->payment_currency ?? 'INR' }}
@if ($campaign->payout_release_rule)
Payout Release Rule
{{ str_replace('_', ' ', ucfirst($campaign->payout_release_rule)) }}
@endif @if (in_array($campaign->payment_model, ['per_view', 'hybrid']))
Per-View Pricing
@if ($campaign->per_view_price)
Rate Per View
{{ $symbol }} {{ number_format($campaign->per_view_price, 5) }}
@endif @if ($campaign->max_payable_views)
Max Payable Views
{{ number_format($campaign->max_payable_views) }}
@endif @if ($campaign->min_view_threshold)
Min. Views for Payout
{{ number_format($campaign->min_view_threshold) }}
@endif @endif @if (in_array($campaign->payment_model, ['fixed_fee', 'hybrid']))
Fixed Fee
@if ($campaign->fixed_fee_amount)
Fixed Fee per Influencer
{{ $symbol }} {{ number_format($campaign->fixed_fee_amount, 2) }}
@endif @endif @if ($campaign->payment_model === 'per_post')
Per-Post Pricing
@if ($campaign->per_post_rate)
Rate per Post
{{ $symbol }} {{ number_format($campaign->per_post_rate, 2) }}
@endif @if ($campaign->max_posts_per_influencer)
Max Posts / Influencer
{{ $campaign->max_posts_per_influencer }}
@endif @endif @if ($campaign->payment_model === 'per_conversion')
Per-Conversion Pricing
@if ($campaign->per_conversion_rate)
Payout per Conversion
{{ $symbol }} {{ number_format($campaign->per_conversion_rate, 2) }}
@endif @if ($campaign->conversion_event)
Conversion Event
{{ $campaign->conversion_event }}
@endif @if ($campaign->max_conversions_per_influencer)
Max Conversions / Influencer
{{ number_format($campaign->max_conversions_per_influencer) }}
@endif @endif @if ($campaign->platform_commission)
Platform Commission
{{ $campaign->platform_commission }}%
@endif @if ($campaign->total_budget && !$isInfluencer)
Budget Usage
@php $consumed = $campaign->budget_consumed ?? 0; $total = $campaign->total_budget; $bpct = $total > 0 ? min(100, ($consumed / $total) * 100) : 0; $warn = $bpct >= 80; @endphp
{{ $symbol }}{{ number_format($consumed) }} spent {{ round($bpct, 1) }}% of {{ $symbol }}{{ number_format($total) }}
@endif @if ($campaign->gst_percent || $campaign->tds_percent)
Tax & Deductions
@if ($campaign->gst_percent)
GST
{{ $campaign->gst_percent }}%
@endif @if ($campaign->tds_percent)
TDS
{{ $campaign->tds_percent }}%
@endif @if ($campaign->tax_notes)
Tax Notes
{{ $campaign->tax_notes }}
@endif @endif
{{-- 4. Content Brief --}}
Content Brief
@if (!empty($campaign->video_formats))
Video Formats
@foreach ((array) $campaign->video_formats as $f) {{ $f }} @endforeach
@endif @if ($campaign->required_duration)
Required Duration
{{ $campaign->required_duration }}
@endif @if ($campaign->aspect_ratio)
Aspect Ratio
{{ $campaign->aspect_ratio }}
@endif @if ($campaign->caption_instructions)
Caption Instructions
{{ $campaign->caption_instructions }}
@endif @if ($campaign->required_hashtags)
Required Hashtags
{{ $campaign->required_hashtags }}
@endif @if ($campaign->mandatory_keywords)
Mandatory Keywords / Phrases
{{ $campaign->mandatory_keywords }}
@endif @if ($campaign->mandatory_cta)
Mandatory CTA
{{ $campaign->mandatory_cta }}
@endif @if ($campaign->promo_code)
Promo Code
{{ $campaign->promo_code }}
@endif @if ($campaign->landing_page_url) @endif
Mandatory Product Shots
@if ($campaign->mandatory_product_shots)
Required
@else
Not required
@endif
@if (!empty($campaign->content_tone))
Content Tone
@foreach ((array) $campaign->content_tone as $t) {{ $t }} @endforeach
@endif @if ($campaign->script_guidance)
Script Guidance
{{ $campaign->script_guidance }}
@endif @if ($campaign->content_dos || $campaign->content_donts)
Do's & Don'ts
@if ($campaign->content_dos)
✅ Do's
{{ $campaign->content_dos }}
@endif @if ($campaign->content_donts)
❌ Don'ts
{{ $campaign->content_donts }}
@endif @endif @if ($campaign->reference_videos)
Reference Videos
@foreach (explode(',', $campaign->reference_videos) as $link) @php $link = trim($link); @endphp @if ($link) {{ $link }} @endif @endforeach
@endif
{{-- 5. Compliance --}}
Compliance & Disclosure
@if ($campaign->disclosure_text)
Required Disclosure Text
{{ $campaign->disclosure_text }}
@endif @if ($campaign->platform_disclosure_instructions)
Platform Disclosure Instructions
{{ $campaign->platform_disclosure_instructions }}
@endif
YouTube "Paid Promotion" Checkbox
@if ($campaign->youtube_paid_promotion_required)
Required
@else
Not required
@endif
@if ($campaign->compliance_notes)
Additional Compliance Notes
{{ $campaign->compliance_notes }}
@endif
⚖️
FTC Disclosure Reminder
Any material connection between an influencer and a brand must be clearly and conspicuously disclosed before consumers engage with the content. Ensure all influencers in this campaign comply.
{{-- 6. Approval Rules --}}
Approval Rules
Rejection Criteria
@foreach ([ 'reject_missing_hashtag_cta' => 'Missing mandatory hashtag or CTA', 'reject_wrong_product' => 'Wrong product or service shown', 'reject_misleading_claim' => 'False or misleading claim made', 'reject_poor_quality' => 'Poor audio or video quality', 'reject_competitor_visible' => 'Competitor brand visible in video', 'reject_offensive_content' => 'Offensive or inappropriate content', 'reject_no_disclosure' => 'No disclosure or sponsored label present', 'reject_wrong_language' => 'Video in wrong language', 'reject_after_deadline' => 'Uploaded after submission deadline', 'reject_fake_engagement' => 'AI-generated or fake engagement suspected', ] as $field => $label) @php $active = $campaign->$field ?? true; @endphp
{{ $active ? '✕' : '–' }} {{ $label }}
@endforeach
Approval Criteria
@foreach ([ 'approve_mandatory_included' => 'All mandatory items are included', 'approve_brand_message' => 'Brand message is clearly communicated', 'approve_quality_standard' => 'Video quality meets minimum standard', 'approve_disclosure_visible' => 'Disclosure label is clearly visible', 'approve_cta_included' => 'CTA, link, and/or promo code is included', 'approve_platform_format' => 'Correct platform format and aspect ratio used', 'approve_manager_sign_off' => 'Campaign manager has given final approval', ] as $field => $label) @php $active = $campaign->$field ?? true; @endphp
{{ $active ? '✓' : '–' }} {{ $label }}
@endforeach
Recommended Submission Flow
  1. Influencer applies or accepts campaign terms
  2. Manager approves the influencer for this campaign
  3. Influencer uploads video draft for review
  4. Manager approves, rejects, or requests revision
  5. Influencer posts approved video and submits live URL
  6. Views are tracked and payment is calculated
@endsection