Major additions: - Territory manager system with application workflow - Custom pricing and page builder with Craft.js - Enhanced Stripe Connect onboarding - CodeReadr QR scanning integration - Kiosk mode for venue sales - Super admin dashboard and analytics - MCP integration for AI-powered operations Infrastructure improvements: - Centralized API client and routing system - Enhanced authentication with organization context - Comprehensive theme management system - Advanced event management with custom tabs - Performance monitoring and accessibility features Database schema updates: - Territory management tables - Custom pages and pricing structures - Kiosk PIN system - Enhanced organization profiles - CodeReadr integration tables 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
579 lines
12 KiB
SQL
579 lines
12 KiB
SQL
-- Add sample territories for testing
|
|
-- This creates realistic territory data for the Territory Manager system
|
|
|
|
-- Insert sample territories
|
|
INSERT INTO territories (id, name, boundary, population, market_size, is_active, created_at, updated_at) VALUES
|
|
(
|
|
'territory-denver-metro',
|
|
'Denver Metro Area',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-105.1178, 39.7392],
|
|
[-104.8736, 39.7392],
|
|
[-104.8736, 39.9142],
|
|
[-105.1178, 39.9142],
|
|
[-105.1178, 39.7392]
|
|
]]
|
|
}',
|
|
2963821,
|
|
'large',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-boulder-county',
|
|
'Boulder County',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-105.6000, 39.9000],
|
|
[-105.0000, 39.9000],
|
|
[-105.0000, 40.3000],
|
|
[-105.6000, 40.3000],
|
|
[-105.6000, 39.9000]
|
|
]]
|
|
}',
|
|
330758,
|
|
'medium',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-colorado-springs',
|
|
'Colorado Springs',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-104.9000, 38.7000],
|
|
[-104.6000, 38.7000],
|
|
[-104.6000, 39.0000],
|
|
[-104.9000, 39.0000],
|
|
[-104.9000, 38.7000]
|
|
]]
|
|
}',
|
|
715522,
|
|
'medium',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-fort-collins',
|
|
'Fort Collins',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-105.2000, 40.4000],
|
|
[-105.0000, 40.4000],
|
|
[-105.0000, 40.7000],
|
|
[-105.2000, 40.7000],
|
|
[-105.2000, 40.4000]
|
|
]]
|
|
}',
|
|
169810,
|
|
'small',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-grand-junction',
|
|
'Grand Junction',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-108.7000, 39.0000],
|
|
[-108.4000, 39.0000],
|
|
[-108.4000, 39.2000],
|
|
[-108.7000, 39.2000],
|
|
[-108.7000, 39.0000]
|
|
]]
|
|
}',
|
|
65560,
|
|
'small',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-aspen-vail',
|
|
'Aspen & Vail Valley',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-106.9000, 39.4000],
|
|
[-106.2000, 39.4000],
|
|
[-106.2000, 39.7000],
|
|
[-106.9000, 39.7000],
|
|
[-106.9000, 39.4000]
|
|
]]
|
|
}',
|
|
25000,
|
|
'premium',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-steamboat-springs',
|
|
'Steamboat Springs',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-106.9000, 40.4000],
|
|
[-106.7000, 40.4000],
|
|
[-106.7000, 40.6000],
|
|
[-106.9000, 40.6000],
|
|
[-106.9000, 40.4000]
|
|
]]
|
|
}',
|
|
13224,
|
|
'small',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-durango',
|
|
'Durango & Southwest Colorado',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-108.0000, 37.0000],
|
|
[-107.5000, 37.0000],
|
|
[-107.5000, 37.5000],
|
|
[-108.0000, 37.5000],
|
|
[-108.0000, 37.0000]
|
|
]]
|
|
}',
|
|
52000,
|
|
'small',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-pueblo',
|
|
'Pueblo',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-104.8000, 38.1000],
|
|
[-104.4000, 38.1000],
|
|
[-104.4000, 38.4000],
|
|
[-104.8000, 38.4000],
|
|
[-104.8000, 38.1000]
|
|
]]
|
|
}',
|
|
111876,
|
|
'small',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-greeley',
|
|
'Greeley & Weld County',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-104.9000, 40.3000],
|
|
[-104.5000, 40.3000],
|
|
[-104.5000, 40.6000],
|
|
[-104.9000, 40.6000],
|
|
[-104.9000, 40.3000]
|
|
]]
|
|
}',
|
|
328981,
|
|
'medium',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-loveland',
|
|
'Loveland',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-105.2000, 40.2000],
|
|
[-105.0000, 40.2000],
|
|
[-105.0000, 40.5000],
|
|
[-105.2000, 40.5000],
|
|
[-105.2000, 40.2000]
|
|
]]
|
|
}',
|
|
76378,
|
|
'small',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-longmont',
|
|
'Longmont',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-105.2000, 40.1000],
|
|
[-105.0000, 40.1000],
|
|
[-105.0000, 40.3000],
|
|
[-105.2000, 40.3000],
|
|
[-105.2000, 40.1000]
|
|
]]
|
|
}',
|
|
98885,
|
|
'small',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-summit-county',
|
|
'Summit County (Breckenridge, Keystone)',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-106.2000, 39.4000],
|
|
[-105.9000, 39.4000],
|
|
[-105.9000, 39.7000],
|
|
[-106.2000, 39.7000],
|
|
[-106.2000, 39.4000]
|
|
]]
|
|
}',
|
|
31055,
|
|
'premium',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-eagle-county',
|
|
'Eagle County (Vail, Beaver Creek)',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-106.7000, 39.5000],
|
|
[-106.3000, 39.5000],
|
|
[-106.3000, 39.8000],
|
|
[-106.7000, 39.8000],
|
|
[-106.7000, 39.5000]
|
|
]]
|
|
}',
|
|
58731,
|
|
'premium',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
),
|
|
(
|
|
'territory-telluride',
|
|
'Telluride',
|
|
'{
|
|
"type": "Polygon",
|
|
"coordinates": [[
|
|
[-108.0000, 37.8000],
|
|
[-107.8000, 37.8000],
|
|
[-107.8000, 38.0000],
|
|
[-108.0000, 38.0000],
|
|
[-108.0000, 37.8000]
|
|
]]
|
|
}',
|
|
2607,
|
|
'premium',
|
|
true,
|
|
NOW(),
|
|
NOW()
|
|
);
|
|
|
|
-- Add some sample territory managers (for testing purposes)
|
|
INSERT INTO territory_managers (id, user_id, territory_id, referral_code, status, application_date, approved_date, profile, earnings_data, created_at, updated_at) VALUES
|
|
(
|
|
'tm-john-denver',
|
|
'user-john-denver',
|
|
'territory-denver-metro',
|
|
'DENVER001',
|
|
'active',
|
|
NOW() - INTERVAL '30 days',
|
|
NOW() - INTERVAL '25 days',
|
|
'{
|
|
"full_name": "John Denver",
|
|
"phone": "+1-303-555-0101",
|
|
"address": {
|
|
"street": "123 Main St",
|
|
"city": "Denver",
|
|
"state": "CO",
|
|
"zip_code": "80202",
|
|
"country": "US"
|
|
},
|
|
"has_transportation": true,
|
|
"has_event_experience": true,
|
|
"motivation": "I love helping local events succeed and have extensive experience in event management."
|
|
}',
|
|
'{
|
|
"total_commission": 3250.00,
|
|
"current_month_commission": 850.00,
|
|
"total_events_referred": 12,
|
|
"success_rate": 0.85,
|
|
"average_commission_per_event": 270.83
|
|
}',
|
|
NOW() - INTERVAL '30 days',
|
|
NOW()
|
|
),
|
|
(
|
|
'tm-sarah-boulder',
|
|
'user-sarah-boulder',
|
|
'territory-boulder-county',
|
|
'BOULDER01',
|
|
'active',
|
|
NOW() - INTERVAL '45 days',
|
|
NOW() - INTERVAL '40 days',
|
|
'{
|
|
"full_name": "Sarah Mitchell",
|
|
"phone": "+1-303-555-0102",
|
|
"address": {
|
|
"street": "456 Pearl St",
|
|
"city": "Boulder",
|
|
"state": "CO",
|
|
"zip_code": "80302",
|
|
"country": "US"
|
|
},
|
|
"has_transportation": true,
|
|
"has_event_experience": true,
|
|
"motivation": "Boulder has an amazing event scene and I want to help connect organizers with the best ticketing solutions."
|
|
}',
|
|
'{
|
|
"total_commission": 2180.00,
|
|
"current_month_commission": 620.00,
|
|
"total_events_referred": 8,
|
|
"success_rate": 0.92,
|
|
"average_commission_per_event": 272.50
|
|
}',
|
|
NOW() - INTERVAL '45 days',
|
|
NOW()
|
|
),
|
|
(
|
|
'tm-mike-springs',
|
|
'user-mike-springs',
|
|
'territory-colorado-springs',
|
|
'SPRINGS01',
|
|
'active',
|
|
NOW() - INTERVAL '20 days',
|
|
NOW() - INTERVAL '15 days',
|
|
'{
|
|
"full_name": "Mike Thompson",
|
|
"phone": "+1-719-555-0103",
|
|
"address": {
|
|
"street": "789 Pikes Peak Ave",
|
|
"city": "Colorado Springs",
|
|
"state": "CO",
|
|
"zip_code": "80903",
|
|
"country": "US"
|
|
},
|
|
"has_transportation": true,
|
|
"has_event_experience": false,
|
|
"motivation": "New to events but excited to learn and help grow the Colorado Springs event community."
|
|
}',
|
|
'{
|
|
"total_commission": 480.00,
|
|
"current_month_commission": 320.00,
|
|
"total_events_referred": 3,
|
|
"success_rate": 0.75,
|
|
"average_commission_per_event": 160.00
|
|
}',
|
|
NOW() - INTERVAL '20 days',
|
|
NOW()
|
|
);
|
|
|
|
-- Add sample leads
|
|
INSERT INTO leads (id, territory_manager_id, event_name, organizer_contact, event_details, status, notes, follow_up_date, created_at, updated_at) VALUES
|
|
(
|
|
'lead-wedding-denver',
|
|
'tm-john-denver',
|
|
'Johnson Wedding Reception',
|
|
'{
|
|
"name": "Emily Johnson",
|
|
"email": "emily.johnson@email.com",
|
|
"phone": "+1-303-555-0201",
|
|
"organization": "Johnson Family",
|
|
"title": "Bride"
|
|
}',
|
|
'{
|
|
"event_type": "Wedding",
|
|
"event_date": "2025-08-15",
|
|
"venue": "Denver Art Museum",
|
|
"expected_attendance": 150,
|
|
"budget_range": "$5,000-$10,000",
|
|
"description": "Elegant wedding reception with cocktail hour and dinner"
|
|
}',
|
|
'confirmed',
|
|
'["Initial contact made", "Venue confirmed", "Date set", "Waiting for final guest count"]',
|
|
NOW() + INTERVAL '7 days',
|
|
NOW() - INTERVAL '5 days',
|
|
NOW()
|
|
),
|
|
(
|
|
'lead-festival-boulder',
|
|
'tm-sarah-boulder',
|
|
'Boulder Music Festival',
|
|
'{
|
|
"name": "David Chen",
|
|
"email": "david@bouldermusic.org",
|
|
"phone": "+1-303-555-0202",
|
|
"organization": "Boulder Music Association",
|
|
"title": "Event Director"
|
|
}',
|
|
'{
|
|
"event_type": "Music Festival",
|
|
"event_date": "2025-07-20",
|
|
"venue": "Chautauqua Park",
|
|
"expected_attendance": 500,
|
|
"budget_range": "$15,000-$25,000",
|
|
"description": "Annual outdoor music festival featuring local and regional artists"
|
|
}',
|
|
'contacted',
|
|
'["Sent initial proposal", "Discussed pricing options", "Awaiting decision"]',
|
|
NOW() + INTERVAL '3 days',
|
|
NOW() - INTERVAL '2 days',
|
|
NOW()
|
|
),
|
|
(
|
|
'lead-gala-denver',
|
|
'tm-john-denver',
|
|
'Children\'s Hospital Charity Gala',
|
|
'{
|
|
"name": "Lisa Rodriguez",
|
|
"email": "lisa.rodriguez@childrenshospital.org",
|
|
"phone": "+1-303-555-0203",
|
|
"organization": "Children\'s Hospital Colorado",
|
|
"title": "Development Manager"
|
|
}',
|
|
'{
|
|
"event_type": "Charity Gala",
|
|
"event_date": "2025-09-12",
|
|
"venue": "Union Station",
|
|
"expected_attendance": 300,
|
|
"budget_range": "$20,000-$30,000",
|
|
"description": "Annual fundraising gala with silent auction and dinner"
|
|
}',
|
|
'cold',
|
|
'["Need to follow up with initial contact"]',
|
|
NOW() + INTERVAL '1 day',
|
|
NOW() - INTERVAL '1 day',
|
|
NOW()
|
|
),
|
|
(
|
|
'lead-corporate-springs',
|
|
'tm-mike-springs',
|
|
'Tech Company Annual Conference',
|
|
'{
|
|
"name": "Robert Kim",
|
|
"email": "robert.kim@techcorp.com",
|
|
"phone": "+1-719-555-0204",
|
|
"organization": "TechCorp Solutions",
|
|
"title": "HR Director"
|
|
}',
|
|
'{
|
|
"event_type": "Corporate Conference",
|
|
"event_date": "2025-08-05",
|
|
"venue": "The Broadmoor",
|
|
"expected_attendance": 200,
|
|
"budget_range": "$10,000-$15,000",
|
|
"description": "Annual company conference with keynotes and networking"
|
|
}',
|
|
'converted',
|
|
'["Successfully converted to BCT customer", "Event setup complete", "Tickets selling well"]',
|
|
NULL,
|
|
NOW() - INTERVAL '10 days',
|
|
NOW()
|
|
);
|
|
|
|
-- Add sample commissions
|
|
INSERT INTO commissions (id, territory_manager_id, event_id, tickets_sold, commission_per_ticket, total_commission, status, payout_date, created_at, updated_at) VALUES
|
|
(
|
|
'comm-springs-tech',
|
|
'tm-mike-springs',
|
|
'event-tech-conference',
|
|
180,
|
|
0.40,
|
|
72.00,
|
|
'paid',
|
|
NOW() - INTERVAL '5 days',
|
|
NOW() - INTERVAL '10 days',
|
|
NOW()
|
|
),
|
|
(
|
|
'comm-denver-wedding',
|
|
'tm-john-denver',
|
|
'event-smith-wedding',
|
|
120,
|
|
0.40,
|
|
48.00,
|
|
'paid',
|
|
NOW() - INTERVAL '2 days',
|
|
NOW() - INTERVAL '15 days',
|
|
NOW()
|
|
),
|
|
(
|
|
'comm-boulder-concert',
|
|
'tm-sarah-boulder',
|
|
'event-boulder-concert',
|
|
250,
|
|
0.40,
|
|
100.00,
|
|
'unpaid',
|
|
NULL,
|
|
NOW() - INTERVAL '3 days',
|
|
NOW()
|
|
);
|
|
|
|
-- Add sample notifications
|
|
INSERT INTO tm_notifications (id, territory_manager_id, type, title, message, data, read, created_at) VALUES
|
|
(
|
|
'notif-john-payout',
|
|
'tm-john-denver',
|
|
'payout',
|
|
'Commission Payout Processed',
|
|
'Your commission of $48.00 for the Smith Wedding has been processed and will arrive in 2-3 business days.',
|
|
'{"amount": 48.00, "event_name": "Smith Wedding"}',
|
|
false,
|
|
NOW() - INTERVAL '2 days'
|
|
),
|
|
(
|
|
'notif-sarah-lead',
|
|
'tm-sarah-boulder',
|
|
'lead_update',
|
|
'Lead Status Updated',
|
|
'Your lead for Boulder Music Festival has been updated to "contacted" status.',
|
|
'{"lead_id": "lead-festival-boulder", "status": "contacted"}',
|
|
false,
|
|
NOW() - INTERVAL '1 day'
|
|
),
|
|
(
|
|
'notif-mike-achievement',
|
|
'tm-mike-springs',
|
|
'achievement',
|
|
'Achievement Unlocked: First Conversion!',
|
|
'Congratulations! You\'ve successfully converted your first lead. You\'ve earned the "First Conversion" achievement and a $50 bonus.',
|
|
'{"achievement_name": "First Conversion", "bonus": 50.00}',
|
|
false,
|
|
NOW() - INTERVAL '3 days'
|
|
),
|
|
(
|
|
'notif-john-system',
|
|
'tm-john-denver',
|
|
'system',
|
|
'New Marketing Materials Available',
|
|
'We\'ve added new marketing materials to your toolkit including updated flyers and email templates.',
|
|
'{"materials_count": 3}',
|
|
true,
|
|
NOW() - INTERVAL '5 days'
|
|
);
|
|
|
|
-- Update territories with assignments
|
|
UPDATE territories SET assigned_to = 'tm-john-denver' WHERE id = 'territory-denver-metro';
|
|
UPDATE territories SET assigned_to = 'tm-sarah-boulder' WHERE id = 'territory-boulder-county';
|
|
UPDATE territories SET assigned_to = 'tm-mike-springs' WHERE id = 'territory-colorado-springs'; |