Files
blackcanyontickets/supabase/migrations/20250109_add_sample_territories.sql
dzinesco 26a87d0d00 feat: Complete platform enhancement with multi-tenant architecture
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>
2025-07-12 18:21:40 -06:00

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';