-- MySQL dump generated from the model-directory PostgreSQL database
-- Generated at 2026-06-11T10:58:49.589Z
-- Import e.g. via phpMyAdmin or: mysql -u USER -p DBNAME < model-directory-mysql.sql

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

DROP TABLE IF EXISTS `assets`;
CREATE TABLE `assets` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `title` TEXT NOT NULL,
  `description` TEXT,
  `category` TEXT NOT NULL,
  `url` TEXT NOT NULL,
  `icon_name` TEXT,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `assets` (`id`, `title`, `description`, `category`, `url`, `icon_name`, `created_at`) VALUES
(1, 'Style Guide 2024', 'Complete brand and style guidelines for professional shoots', 'Documentation', 'https://example.com/style-guide', 'BookOpen', '2026-06-09 09:44:19'),
(2, 'Rate Card Template', 'Standard rate card template for talent negotiations', 'Templates', 'https://example.com/rate-card', 'DollarSign', '2026-06-09 09:44:20'),
(3, 'Contract Templates', 'Model release and usage agreement templates', 'Legal', 'https://example.com/contracts', 'FileText', '2026-06-09 09:44:22'),
(4, 'Location Scouting App', 'Premium location scouting tool with 50k+ verified locations', 'Tools', 'https://example.com/locations', 'MapPin', '2026-06-09 09:44:23'),
(5, 'Photo Editing Suite', 'Professional retouching and editing tools for members', 'Tools', 'https://example.com/editing', 'Image', '2026-06-09 09:44:26'),
(6, 'Industry Contacts', 'Curated directory of casting directors, agents, and creatives', 'Network', 'https://example.com/contacts', 'Users', '2026-06-09 09:44:27'),
(7, 'Travel Insurance Guide', 'Recommended travel and equipment insurance for models', 'Documentation', 'https://example.com/insurance', 'Shield', '2026-06-09 09:44:29'),
(8, 'Portfolio Builder', 'AI-powered portfolio creation and hosting platform', 'Tools', 'https://example.com/portfolio', 'Layout', '2026-06-09 09:44:31');

DROP TABLE IF EXISTS `bookings`;
CREATE TABLE `bookings` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `profile_id` INT,
  `location_id` INT,
  `status` TEXT NOT NULL,
  `notes` TEXT,
  `scheduled_at` DATETIME,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  `service_id` INT,
  `duration` TEXT,
  `location_type` TEXT,
  `total_price` INT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `bookings` (`id`, `user_id`, `profile_id`, `location_id`, `status`, `notes`, `scheduled_at`, `created_at`, `updated_at`, `service_id`, `duration`, `location_type`, `total_price`) VALUES
(2, 2, 2, 3, 'completed', 'Editorial shoot for Vogue feature.', NULL, '2026-06-09 09:45:17', '2026-06-09 09:45:17', NULL, NULL, NULL, NULL),
(3, 3, 4, 2, 'pending', 'Beauty campaign booking request.', NULL, '2026-06-09 09:45:19', '2026-06-09 09:45:19', NULL, NULL, NULL, NULL),
(5, 4, 3, 5, 'completed', 'Swimwear campaign - Miami Beach location.', NULL, '2026-06-09 09:45:22', '2026-06-09 09:45:22', NULL, NULL, NULL, NULL),
(8, 5, 1, 2, 'cancelled', '', NULL, '2026-06-09 10:45:05', '2026-06-09 10:45:07', NULL, NULL, NULL, NULL),
(11, 9, 10, NULL, 'pending', 'e2e', '2026-07-01 10:00:00', '2026-06-09 11:14:30', '2026-06-09 11:14:30', 1, 'full_day', 'customer_location', 20500),
(12, 9, 10, NULL, 'pending', NULL, '2026-07-02 10:00:00', '2026-06-09 11:14:30', '2026-06-09 11:14:30', 1, '1h', 'in_studio', 3000),
(13, 12, 12, NULL, 'pending', NULL, '2026-07-02 10:00:00', '2026-06-09 11:18:25', '2026-06-09 11:18:25', 1, '1h', 'in_studio', 3000),
(1, 2, 1, 1, 'accepted', 'Runway prep session for the spring collection.', NULL, '2026-06-09 09:45:16', '2026-06-09 09:45:16', NULL, NULL, NULL, NULL),
(4, 3, 5, 4, 'accepted', 'Street style shoot for brand launch.', NULL, '2026-06-09 09:45:21', '2026-06-09 09:45:21', NULL, NULL, NULL, NULL),
(7, 1, 1, NULL, 'accepted', NULL, '2026-06-28 14:00:00', '2026-06-09 10:43:07', '2026-06-09 10:43:07', 1, '2h', 'customer_location', 575),
(14, 24, 1, NULL, 'accepted', NULL, '2026-06-11 05:00:00', '2026-06-10 07:05:36', '2026-06-10 07:05:36', 1, '1h', 'in_studio', 3000),
(17, 32, 19, NULL, 'completed', NULL, '2026-07-01 10:00:00', '2026-06-10 09:52:22', '2026-06-10 09:52:22', 1, '2h', 'in_studio', 5500),
(16, 30, 15, NULL, 'accepted', NULL, '2026-06-16 09:00:00', '2026-06-10 09:40:58', '2026-06-10 10:38:08', 1, '1h', 'customer_location', 533),
(10, 1, 1, NULL, 'paid', NULL, '2026-06-10 10:00:00', '2026-06-09 10:54:35', '2026-06-10 10:45:56', 1, '1h', 'in_studio', 250),
(15, 30, 15, NULL, 'proof_uploaded', NULL, '2026-06-26 07:00:00', '2026-06-10 07:40:19', '2026-06-10 10:46:33', 1, '1h', 'in_studio', 33);

DROP TABLE IF EXISTS `favorites`;
CREATE TABLE `favorites` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `profile_id` INT NOT NULL,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `favorites_user_profile_unique` (`user_id`, `profile_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

DROP TABLE IF EXISTS `locations`;
CREATE TABLE `locations` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` TEXT NOT NULL,
  `city` TEXT NOT NULL,
  `type` TEXT NOT NULL,
  `rating` DOUBLE NOT NULL,
  `photo_url` TEXT,
  `description` TEXT,
  `address` TEXT,
  `is_featured` TINYINT(1) NOT NULL,
  `is_active` TINYINT(1) NOT NULL,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `locations` (`id`, `name`, `city`, `type`, `rating`, `photo_url`, `description`, `address`, `is_featured`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'The St. Regis New York', 'New York', 'hotel', 4.9, 'https://images.unsplash.com/photo-1566073771259-6a8506099945?w=400&q=80', 'Iconic luxury hotel in Midtown Manhattan. Perfect for high-end editorial shoots.', '2 E 55th St, New York, NY 10022', 1, 1, '2026-06-09 09:44:04', '2026-06-09 09:44:04'),
(2, 'Chateau Marmont', 'Los Angeles', 'hotel', 4.7, 'https://images.unsplash.com/photo-1551882547-ff40c63fe5fa?w=400&q=80', 'Legendary Hollywood hideaway. Discreet, storied, and iconic.', '8221 Sunset Blvd, Los Angeles, CA 90046', 1, 1, '2026-06-09 09:44:06', '2026-06-09 09:44:06'),
(3, 'The Lightbox Studio', 'New York', 'venue', 4.8, 'https://images.unsplash.com/photo-1598928506311-c55ded91a20c?w=400&q=80', 'State-of-the-art photography studio with 20,000 sq ft of space in Chelsea.', '259 W 30th St, New York, NY 10001', 1, 1, '2026-06-09 09:44:08', '2026-06-09 09:44:08'),
(4, 'Malibu Compound', 'Los Angeles', 'safehouse', 4.9, 'https://images.unsplash.com/photo-1613977257363-707ba9348227?w=400&q=80', 'Private oceanfront estate. Complete privacy for exclusive sessions.', 'Malibu, CA (address on booking)', 1, 1, '2026-06-09 09:44:09', '2026-06-09 09:44:09'),
(5, 'Ritz Paris', 'Paris', 'hotel', 5, 'https://images.unsplash.com/photo-1548614606-52b4451f994b?w=400&q=80', 'The definitive luxury address in Paris. Iconic Vendôme location.', '15 Pl. Vendôme, 75001 Paris, France', 1, 1, '2026-06-09 09:44:11', '2026-06-09 09:44:11'),
(6, 'Shoreditch Warehouse', 'London', 'venue', 4.6, 'https://images.unsplash.com/photo-1497366216548-37526070297c?w=400&q=80', 'Raw industrial space converted into a versatile creative studio.', 'Shoreditch, London E1 (address on booking)', 0, 1, '2026-06-09 09:44:13', '2026-06-09 09:44:13'),
(7, 'South Beach Villa', 'Miami', 'safehouse', 4.8, 'https://images.unsplash.com/photo-1512917774080-9991f1c4c750?w=400&q=80', 'Exclusive waterfront villa in South Beach. Complete privacy guaranteed.', 'Miami Beach, FL (address on booking)', 1, 1, '2026-06-09 09:44:15', '2026-06-09 09:44:15'),
(8, 'Aman Tokyo', 'Tokyo', 'hotel', 4.9, 'https://images.unsplash.com/photo-1590490360182-c33d57733427?w=400&q=80', 'Urban sanctuary above the Otemachi Tower with sweeping city views.', '1-5-6 Otemachi, Chiyoda City, Tokyo', 0, 1, '2026-06-09 09:44:17', '2026-06-09 09:44:17');

DROP TABLE IF EXISTS `membership_payments`;
CREATE TABLE `membership_payments` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `plan_id` INT NOT NULL,
  `method` TEXT NOT NULL,
  `transaction_id` TEXT NOT NULL,
  `amount` INT NOT NULL,
  `payment_number` TEXT NOT NULL,
  `status` TEXT NOT NULL,
  `note` TEXT,
  `reviewed_at` DATETIME,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `membership_payments_one_pending_per_user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `membership_payments` (`id`, `user_id`, `plan_id`, `method`, `transaction_id`, `amount`, `payment_number`, `status`, `note`, `reviewed_at`, `created_at`) VALUES
(1, 16, 3, 'bkash', 'TRX12345TEST', 999, '+8801XXXXXXXXX', 'approved', NULL, '2026-06-10 06:13:25', '2026-06-10 06:13:24'),
(2, 17, 2, 'nagad', 'REJTRX', 499, '+8801XXXXXXXXX', 'rejected', 'Invalid transaction', '2026-06-10 06:13:49', '2026-06-10 06:13:49'),
(3, 18, 4, 'rocket', 'HARDTRX', 1999, '+8801XXXXXXXXX', 'approved', NULL, '2026-06-10 06:17:33', '2026-06-10 06:17:32');

DROP TABLE IF EXISTS `membership_plans`;
CREATE TABLE `membership_plans` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `key` TEXT NOT NULL,
  `name` TEXT NOT NULL,
  `price` INT NOT NULL,
  `duration_days` INT NOT NULL,
  `description` TEXT,
  `features` TEXT NOT NULL,
  `sort_order` INT NOT NULL,
  `is_active` TINYINT(1) NOT NULL,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `membership_plans_key_unique` (`key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `membership_plans` (`id`, `key`, `name`, `price`, `duration_days`, `description`, `features`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'free', 'Free', 0, 30, 'Basic access to the platform', '["Browse public profiles","View locations","Up to 2 bookings/month"]', 0, 1, '2026-06-10 06:04:38', '2026-06-10 06:04:38'),
(3, 'premium', 'Premium', 999, 30, 'Premium membership for professionals', '["All Basic features","Unlimited bookings","Featured access","Network access"]', 2, 1, '2026-06-10 06:04:38', '2026-06-10 06:04:38'),
(4, 'vip', 'VIP', 1999, 30, 'The ultimate membership with full access', '["All Premium features","Private concierge","Direct admin line","Priority matching"]', 3, 1, '2026-06-10 06:04:38', '2026-06-10 06:04:38'),
(2, 'basic', 'Basic', 499, 30, 'Enhanced access with more features', '["All Free features","10 bookings/month","Priority support"]', 1, 1, '2026-06-10 06:04:38', '2026-06-10 06:13:50');

DROP TABLE IF EXISTS `memberships`;
CREATE TABLE `memberships` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `tier` TEXT NOT NULL,
  `expires_at` DATETIME,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `memberships_user_id_unique` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `memberships` (`id`, `user_id`, `tier`, `expires_at`, `created_at`, `updated_at`) VALUES
(4, 4, 'free', NULL, '2026-06-09 09:45:14', '2026-06-09 09:45:14'),
(5, 5, 'free', NULL, '2026-06-09 10:23:07', '2026-06-09 10:23:07'),
(6, 6, 'free', NULL, '2026-06-09 11:12:30', '2026-06-09 11:12:30'),
(7, 7, 'free', NULL, '2026-06-09 11:12:42', '2026-06-09 11:12:42'),
(8, 8, 'free', NULL, '2026-06-09 11:12:54', '2026-06-09 11:12:54'),
(9, 9, 'free', NULL, '2026-06-09 11:13:45', '2026-06-09 11:13:45'),
(10, 10, 'free', NULL, '2026-06-09 11:17:49', '2026-06-09 11:17:49'),
(11, 11, 'free', NULL, '2026-06-09 11:17:50', '2026-06-09 11:17:50'),
(12, 12, 'free', NULL, '2026-06-09 11:18:23', '2026-06-09 11:18:23'),
(13, 13, 'free', NULL, '2026-06-09 11:18:24', '2026-06-09 11:18:24'),
(14, 14, 'free', NULL, '2026-06-09 11:23:05', '2026-06-09 11:23:05'),
(15, 15, 'free', NULL, '2026-06-09 11:23:05', '2026-06-09 11:23:05'),
(1, 1, 'vip', NULL, '2026-06-09 09:45:09', '2026-06-09 09:45:09'),
(2, 2, 'premium', NULL, '2026-06-09 09:45:10', '2026-06-09 09:45:10'),
(3, 3, 'basic', NULL, '2026-06-09 09:45:12', '2026-06-09 09:45:12'),
(16, 16, 'premium', '2026-07-10 06:13:25', '2026-06-10 06:13:24', '2026-06-10 06:13:25'),
(17, 17, 'free', NULL, '2026-06-10 06:13:49', '2026-06-10 06:13:49'),
(18, 18, 'vip', '2026-07-10 06:17:33', '2026-06-10 06:17:32', '2026-06-10 06:17:33'),
(22, 22, 'free', NULL, '2026-06-10 07:00:51', '2026-06-10 07:00:51'),
(24, 24, 'free', NULL, '2026-06-10 07:02:48', '2026-06-10 07:02:48'),
(30, 30, 'free', NULL, '2026-06-10 07:39:24', '2026-06-10 07:39:24'),
(31, 31, 'free', NULL, '2026-06-10 09:49:03', '2026-06-10 09:49:03'),
(32, 32, 'free', NULL, '2026-06-10 09:49:03', '2026-06-10 09:49:03'),
(33, 33, 'free', NULL, '2026-06-10 09:49:48', '2026-06-10 09:49:48'),
(35, 35, 'free', NULL, '2026-06-10 09:50:36', '2026-06-10 09:50:36');

DROP TABLE IF EXISTS `order_proofs`;
CREATE TABLE `order_proofs` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `booking_id` INT NOT NULL,
  `user_id` INT NOT NULL,
  `photo_url` TEXT NOT NULL,
  `status` TEXT NOT NULL,
  `note` TEXT,
  `reviewed_at` DATETIME,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `order_proofs` (`id`, `booking_id`, `user_id`, `photo_url`, `status`, `note`, `reviewed_at`, `created_at`) VALUES
(4, 15, 22, '/api/storage/objects/uploads/a0b68987-add9-4038-add6-06ccd37815d2', 'pending', NULL, NULL, '2026-06-10 10:46:33');

DROP TABLE IF EXISTS `password_reset_tokens`;
CREATE TABLE `password_reset_tokens` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `token_hash` TEXT NOT NULL,
  `expires_at` DATETIME NOT NULL,
  `used_at` DATETIME,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `password_reset_tokens_token_hash_unique` (`token_hash`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

DROP TABLE IF EXISTS `payment_methods`;
CREATE TABLE `payment_methods` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `method` TEXT NOT NULL,
  `label` TEXT NOT NULL,
  `receiving_number` TEXT NOT NULL,
  `instructions` TEXT,
  `is_active` TINYINT(1) NOT NULL,
  `sort_order` INT NOT NULL,
  `updated_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `payment_methods_method_unique` (`method`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `payment_methods` (`id`, `method`, `label`, `receiving_number`, `instructions`, `is_active`, `sort_order`, `updated_at`) VALUES
(2, 'nagad', 'Nagad', '+8801XXXXXXXXX', 'Send Money to this Nagad number, then submit your Transaction ID.', 1, 1, '2026-06-10 06:04:43'),
(3, 'rocket', 'Rocket', '+8801XXXXXXXXX', 'Send Money to this Rocket number, then submit your Transaction ID.', 1, 2, '2026-06-10 06:04:43'),
(4, 'bank', 'Bank Transfer', '', 'Transfer to our bank account, then submit the reference/Transaction ID.', 1, 3, '2026-06-10 06:04:43'),
(1, 'bkash', 'bKash', '+8801XXXXXXXXX', 'Send Money to this bKash number, then submit your Transaction ID.', 1, 0, '2026-06-10 06:14:03');

DROP TABLE IF EXISTS `profile_photos`;
CREATE TABLE `profile_photos` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `profile_id` INT NOT NULL,
  `url` TEXT NOT NULL,
  `sort_order` INT NOT NULL,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

DROP TABLE IF EXISTS `profiles`;
CREATE TABLE `profiles` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `profile_id` TEXT NOT NULL,
  `name` TEXT NOT NULL,
  `city` TEXT NOT NULL,
  `photo_url` TEXT,
  `bio` TEXT,
  `is_featured` TINYINT(1) NOT NULL,
  `is_active` TINYINT(1) NOT NULL,
  `tags` TEXT NOT NULL,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  `user_id` INT,
  `pro_status` TEXT,
  `price_1h` INT,
  `price_2h` INT,
  `price_full_day` INT,
  `services` TEXT,
  `contact_platform` TEXT,
  `whatsapp_number` TEXT,
  `approval_status` TEXT NOT NULL,
  `price_night` INT,
  PRIMARY KEY (`id`),
  UNIQUE KEY `profiles_profile_id_unique` (`profile_id`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `profiles` (`id`, `profile_id`, `name`, `city`, `photo_url`, `bio`, `is_featured`, `is_active`, `tags`, `created_at`, `updated_at`, `user_id`, `pro_status`, `price_1h`, `price_2h`, `price_full_day`, `services`, `contact_platform`, `whatsapp_number`, `approval_status`, `price_night`) VALUES
(1, 'MDL-0001', 'Aria Montclair', 'New York', 'https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e?w=400&q=80', '15 years in editorial and runway. Specializes in high-concept fashion campaigns.', 1, 1, '["editorial","luxury","runway"]', '2026-06-09 09:43:26', '2026-06-09 09:43:26', NULL, 'professional', 3000, 5500, 20000, NULL, 'whatsapp', '+8801700000000', 'approved', NULL),
(2, 'MDL-0002', 'Sienna Voss', 'Los Angeles', 'https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400&q=80', 'Commercial and fitness specialist. Based in LA, available globally.', 1, 1, '["commercial","fitness","lifestyle"]', '2026-06-09 09:43:28', '2026-06-09 09:43:28', NULL, 'professional', 3000, 5500, 20000, NULL, 'whatsapp', '+8801700000000', 'approved', NULL),
(3, 'MDL-0003', 'Kamille D\'Santos', 'Miami', 'https://images.unsplash.com/photo-1517841905240-472988babdf9?w=400&q=80', 'Miami-based swimwear and luxury brand specialist.', 1, 1, '["swimwear","luxury","beach"]', '2026-06-09 09:43:30', '2026-06-09 09:43:30', NULL, 'professional', 3000, 5500, 20000, NULL, 'whatsapp', '+8801700000000', 'approved', NULL),
(4, 'MDL-0004', 'Remy Laurent', 'Paris', 'https://images.unsplash.com/photo-1524504388940-b1c1722653e1?w=400&q=80', 'Parisian editorial model. Works with the top European houses.', 1, 1, '["haute couture","editorial"]', '2026-06-09 09:43:32', '2026-06-09 09:43:32', NULL, 'professional', 3000, 5500, 20000, NULL, 'whatsapp', '+8801700000000', 'approved', NULL),
(5, 'MDL-0005', 'Zoe Blake', 'London', 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&q=80', 'Known for bold editorial work in London\'s underground fashion scene.', 0, 1, '["street style","avant-garde","editorial"]', '2026-06-09 09:43:34', '2026-06-09 09:43:34', NULL, 'professional', 3000, 5500, 20000, NULL, 'whatsapp', '+8801700000000', 'approved', NULL),
(6, 'MDL-0006', 'Mila Chen', 'Tokyo', 'https://images.unsplash.com/photo-1488426862026-3ee34a7d66df?w=400&q=80', 'Tokyo-based beauty and commercial talent.', 1, 1, '["commercial","beauty","J-fashion"]', '2026-06-09 09:43:36', '2026-06-09 09:43:36', NULL, 'professional', 3000, 5500, 20000, NULL, 'whatsapp', '+8801700000000', 'approved', NULL),
(7, 'MDL-0007', 'Anya Petrova', 'Moscow', 'https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?w=400&q=80', 'Russian luxury model. Extensive European campaign work.', 0, 1, '["luxury","couture","editorial"]', '2026-06-09 09:43:38', '2026-06-09 09:43:38', NULL, 'professional', 3000, 5500, 20000, NULL, 'whatsapp', '+8801700000000', 'approved', NULL),
(8, 'MDL-0008', 'Lena Okafor', 'Lagos', 'https://images.unsplash.com/photo-1531123897727-8f129e1688ce?w=400&q=80', 'Bringing African fashion to the global stage through editorial work.', 1, 1, '["editorial","culture","lifestyle"]', '2026-06-09 09:43:40', '2026-06-09 09:43:40', NULL, 'professional', 3000, 5500, 20000, NULL, 'whatsapp', '+8801700000000', 'approved', NULL),
(10, 'MDL-0010', 'E2E Model', 'Dhaka', NULL, NULL, 0, 1, '[]', '2026-06-09 11:13:45', '2026-06-09 11:13:46', 9, 'professional', 3000, 5500, 20000, 'Photoshoot', 'whatsapp', '+8801700000000', 'approved', NULL),
(12, 'MDL-0012', 'Pending Model', 'Dhaka', NULL, NULL, 0, 1, '[]', '2026-06-09 11:18:24', '2026-06-09 11:18:25', 13, 'professional', 3000, 5500, 20000, 'x', 'whatsapp', '+880170', 'approved', NULL),
(11, 'MDL-0011', 'Pending Model', 'Dhaka', NULL, NULL, 0, 1, '[]', '2026-06-09 11:17:50', '2026-06-10 06:02:29', 11, 'professional', 3000, 5500, 20000, 'x', 'whatsapp', '+880170', 'approved', NULL),
(13, 'MDL-0013', 'Detail Pending', 'Dhaka', NULL, NULL, 0, 1, '[]', '2026-06-09 11:23:05', '2026-06-10 06:02:32', 14, 'professional', 3000, 5500, 20000, 'x', 'whatsapp', '+880170', 'approved', NULL),
(9, 'MDL-0009', 'Test Model', 'Dhaka', NULL, NULL, 0, 1, '[]', '2026-06-09 11:12:54', '2026-06-10 09:36:35', 8, 'professional', 3000, 5500, 20000, 'Photoshoot, Runway', 'whatsapp', '+8801700000000', 'rejected', NULL),
(15, 'MDL-0015', 'fjhauif', 'dhaka', NULL, 'te', 0, 1, '[]', '2026-06-10 07:00:51', '2026-06-10 09:40:04', 22, 'professional', 33, 535, 75785, 'ndfn', 'whatsapp', '0178455411', 'approved', NULL),
(19, 'MDL-0019', 'E2E Pay Model', 'Dhaka', NULL, NULL, 0, 1, '[]', '2026-06-10 09:49:03', '2026-06-10 09:49:03', 31, 'professional', 3000, 5500, 20000, 'photoshoot', 'whatsapp', '01700000000', 'approved', NULL),
(20, 'MDL-0020', 'E2E Pay Model2', 'Dhaka', NULL, NULL, 0, 1, '[]', '2026-06-10 09:49:48', '2026-06-10 09:49:48', 33, 'professional', 3000, 5500, 20000, 'photoshoot', 'whatsapp', '01700000000', 'approved', NULL),
(22, 'MDL-0022', 'E2E Pay M3', 'Dhaka', NULL, NULL, 0, 1, '[]', '2026-06-10 09:50:36', '2026-06-10 09:50:40', 35, 'professional', 3000, 5500, 20000, 'photoshoot', 'whatsapp', '01700000000', 'approved', NULL);

DROP TABLE IF EXISTS `services`;
CREATE TABLE `services` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` TEXT NOT NULL,
  `description` TEXT,
  `hourly_rate` INT NOT NULL,
  `is_active` TINYINT(1) NOT NULL,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `services` (`id`, `name`, `description`, `hourly_rate`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Photoshoot', 'Professional photography session for editorial, commercial, or portfolio work.', 250, 1, '2026-06-09 10:34:01', '2026-06-09 10:34:01'),
(2, 'Runway / Fashion Show', 'Runway modeling for fashion shows and live presentations.', 400, 1, '2026-06-09 10:34:01', '2026-06-09 10:34:01'),
(3, 'Brand Campaign', 'Featured talent for advertising and brand marketing campaigns.', 500, 1, '2026-06-09 10:34:01', '2026-06-09 10:34:01'),
(4, 'Video / Commercial Shoot', 'On-camera talent for video, commercials, and motion content.', 350, 1, '2026-06-09 10:34:01', '2026-06-09 10:34:01'),
(5, 'Event Appearance', 'Promotional and hosting appearances at events and launches.', 300, 1, '2026-06-09 10:34:01', '2026-06-09 10:34:01'),
(6, 'Fitting / Showroom', 'Garment fittings and showroom presentations.', 150, 1, '2026-06-09 10:34:01', '2026-06-09 10:34:01');

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `email` TEXT NOT NULL,
  `password_hash` TEXT NOT NULL,
  `name` TEXT NOT NULL,
  `role` TEXT NOT NULL,
  `is_online` TINYINT(1) NOT NULL,
  `avatar_url` TEXT,
  `bio` TEXT,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  `phone` TEXT,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`(191)),
  UNIQUE KEY `users_phone_unique` (`phone`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `users` (`id`, `email`, `password_hash`, `name`, `role`, `is_online`, `avatar_url`, `bio`, `created_at`, `updated_at`, `phone`) VALUES
(33, 'paymodel2_1781084987@test.com', '$2b$10$AvvnrAZxVkSdE.PH8ii6Fuk/EG6m9RXcou09BmJqrBondZ0ip0VpS', 'E2E Pay Model2', 'model', 1, NULL, NULL, '2026-06-10 09:49:48', '2026-06-10 09:49:48', NULL),
(2, 'alex@example.com', '$2b$10$pALBWYxX9ww66EjQ9iDM4OwoV4Cf1s9aguyEyl0JfAoxVJt8uBfoG', 'Alex Morgan', 'user', 0, NULL, 'Professional talent scout with 10 years experience.', '2026-06-09 09:44:48', '2026-06-09 09:44:48', NULL),
(3, 'sarah@example.com', '$2b$10$pALBWYxX9ww66EjQ9iDM4OwoV4Cf1s9aguyEyl0JfAoxVJt8uBfoG', 'Sarah Chen', 'user', 0, NULL, 'Independent creative director and stylist.', '2026-06-09 09:44:49', '2026-06-09 09:44:49', NULL),
(4, 'marcus@example.com', '$2b$10$pALBWYxX9ww66EjQ9iDM4OwoV4Cf1s9aguyEyl0JfAoxVJt8uBfoG', 'Marcus Webb', 'user', 0, NULL, 'Luxury brand consultant and booking agent.', '2026-06-09 09:44:51', '2026-06-09 09:44:51', NULL),
(6, 'modeltester_1781003550@test.com', '$2b$10$a4HSewE3PC06nHUNOvJSUOqF3rzGfMq4uZ0pVrgZ2z/rS9YU6GHa2', 'Model Tester', 'user', 1, NULL, NULL, '2026-06-09 11:12:30', '2026-06-09 11:12:30', NULL),
(7, 'modeltester_1781003561@test.com', '$2b$10$0YxjSYzGkk.iuJaUZ6Ek7Oe1pZFGoNNGc3eOVYWQNwDdgd9rX5sDS', 'Model Tester', 'user', 1, NULL, NULL, '2026-06-09 11:12:42', '2026-06-09 11:12:42', NULL),
(8, 'modeltester_1781003574@test.com', '$2b$10$k8xNs3JD60U/NZBuNN6AE.aveYrO2T1taX..20NE2EWI6flInSITO', 'Model Tester', 'user', 1, NULL, NULL, '2026-06-09 11:12:54', '2026-06-09 11:12:54', NULL),
(9, 'modeltester_1781003625@test.com', '$2b$10$eKMuu1WDTvB0pAsFs7y1ZuXGrAYw2VjhPLMwGiPX4zIx0eJjdUFxy', 'MT', 'user', 1, NULL, NULL, '2026-06-09 11:13:45', '2026-06-09 11:13:45', NULL),
(35, 'pm3_1781085033@test.com', '$2b$10$EC7TTdWn0RkJaB9GwLN6TOdD9XUonoHfIk6AosFyy4z89PGgJzed2', 'E2E Pay M3', 'model', 1, NULL, NULL, '2026-06-10 09:50:36', '2026-06-10 09:50:36', NULL),
(10, 'gatetest_1781003869@test.com', '$2b$10$rnxlr.Z2aWM4yxpcY4EYyOrwZzZ8I9V7gXQ9hGG0c8lNVt.WLE5l6', 'GT', 'user', 1, NULL, NULL, '2026-06-09 11:17:49', '2026-06-09 11:17:49', NULL),
(11, 'gatemodel_1781003869@test.com', '$2b$10$qAlyJS1s3Yf9trlFkdRYyeKvZUNlvnDRZMZA7HGcPXQW32LUGeckG', 'GM', 'user', 1, NULL, NULL, '2026-06-09 11:17:50', '2026-06-09 11:17:50', NULL),
(12, 'gt_1781003903@t.com', '$2b$10$DXUusO.XKEzkYK3WlasuG.d8qeEFSNAvOZXGp2QK9zWQhM0ek05pC', 'GT', 'user', 1, NULL, NULL, '2026-06-09 11:18:23', '2026-06-09 11:18:23', NULL),
(13, 'gm_1781003903@t.com', '$2b$10$zqZjZJDKx3SglYvU7N0UOu2gBKEk8emky50Gij5UACI1tqarVxk/m', 'GM', 'user', 1, NULL, NULL, '2026-06-09 11:18:24', '2026-06-09 11:18:24', NULL),
(14, 'own_1781004185@t.com', '$2b$10$rARmZDvTRsnMA23nWzEB/.dennqC9vwLQ44k1uvtVXjirhuRpozx6', 'OW', 'user', 1, NULL, NULL, '2026-06-09 11:23:05', '2026-06-09 11:23:05', NULL),
(15, 'oth_1781004185@t.com', '$2b$10$fzW.imhFrYMg/qAOMcZX4O6IDsBUXzU.B3p/L5.cgBuPOAp7gJ9.2', 'OT', 'user', 1, NULL, NULL, '2026-06-09 11:23:05', '2026-06-09 11:23:05', NULL),
(24, 'hafi@gmail.com', '$2b$10$XRbshrw2XtoBgZ/lMPrHYuMLe21ojgEoMcg0nDKY1ENK9pqOSgGQi', 'fjhauif', 'user', 0, NULL, NULL, '2026-06-10 07:02:48', '2026-06-10 07:05:50', '254784144'),
(5, 'user1@example.com', '$2b$10$zCGO.vACIxjzSrQmtGGqTeHwfSAQvqopk10olQ4w.g1epKT56VtAu', 'fuihfuiw', 'user', 0, NULL, NULL, '2026-06-09 10:23:07', '2026-06-10 05:49:58', NULL),
(16, 'memtest_1781072004@test.com', '$2b$10$S1fBlLOm6G7VzM.fLJbBTe30zSIKC9.QYIS1XrD2stgXCQJPG4T7e', 'Mem Test', 'user', 1, NULL, NULL, '2026-06-10 06:13:24', '2026-06-10 06:13:24', NULL),
(17, 'rej_1781072028@test.com', '$2b$10$C0gbLhmCJlIpYvd/tz1zfe4XF/yl/oOz3v9bKfez6gXYGk4PFpgwW', 'Rej User', 'user', 1, NULL, NULL, '2026-06-10 06:13:49', '2026-06-10 06:13:49', NULL),
(18, 'h_1781072252@test.com', '$2b$10$Y6Anaaq.lQj9xL7gf1tLg.qnai3.JfidHjC1dj2KGbFd.OnAZeRLm', 'Harden User', 'user', 1, NULL, NULL, '2026-06-10 06:17:32', '2026-06-10 06:17:32', NULL),
(22, 'model@gmail.com', '$2b$10$2oMfLkPdu3Phn5MmPZ9fzeUplStCxSkCk1uk5F1eqXZ7u8idi2MNS', 'fjhauif', 'model', 0, NULL, NULL, '2026-06-10 07:00:51', '2026-06-10 10:46:36', NULL),
(30, 'user2@example.com', '$2b$10$MGmEWjZ1WhKCyr8hJmBmE.h5R98UYFHOoV.9L1X3Uupgams91u0Xm', 'user', 'user', 0, NULL, NULL, '2026-06-10 07:39:24', '2026-06-10 10:48:36', '01485444'),
(31, 'paymodel_1781084942@test.com', '$2b$10$rafJf0vIgLB4Tbp61QbrgO7sie0QubAc7WJJPLRWIrHVnoV3cj2Oe', 'E2E Pay Model', 'model', 1, NULL, NULL, '2026-06-10 09:49:03', '2026-06-10 09:49:03', NULL),
(32, 'paycust_1781084942@test.com', '$2b$10$Nf3Gd2mGUmq1GGfDrxA75uRRaONUV0sgeDCXMPyJzF7nXyR8.IEtO', 'E2E Customer', 'user', 1, NULL, NULL, '2026-06-10 09:49:03', '2026-06-10 09:49:03', '01800000000'),
(1, 'admin@modeldir.com', '$2b$10$pALBWYxX9ww66EjQ9iDM4OwoV4Cf1s9aguyEyl0JfAoxVJt8uBfoG', 'Admin User', 'admin', 1, NULL, 'Platform administrator', '2026-06-09 09:44:46', '2026-06-10 11:18:28', NULL);

DROP TABLE IF EXISTS `wallet_deposits`;
CREATE TABLE `wallet_deposits` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `amount` INT NOT NULL,
  `method` TEXT NOT NULL,
  `transaction_id` TEXT NOT NULL,
  `status` TEXT NOT NULL,
  `note` TEXT,
  `reviewed_at` DATETIME,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `wallet_deposits` (`id`, `user_id`, `amount`, `method`, `transaction_id`, `status`, `note`, `reviewed_at`, `created_at`) VALUES
(1, 32, 10000, 'bkash', 'TXN123', 'approved', NULL, '2026-06-10 09:49:04', '2026-06-10 09:49:04');

DROP TABLE IF EXISTS `wallet_transactions`;
CREATE TABLE `wallet_transactions` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `type` TEXT NOT NULL,
  `amount` INT NOT NULL,
  `balance_after` INT NOT NULL,
  `booking_id` INT,
  `description` TEXT,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `wallet_transactions` (`id`, `user_id`, `type`, `amount`, `balance_after`, `booking_id`, `description`, `created_at`) VALUES
(1, 32, 'deposit', 10000, 10000, NULL, 'Deposit approved (bkash)', '2026-06-10 09:49:04'),
(2, 32, 'order_payment', -5500, 4500, 17, 'Payment for booking #17', '2026-06-10 09:52:22'),
(3, 31, 'earning', 4950, 4950, 17, 'Earnings from booking #17', '2026-06-10 09:52:22'),
(4, 1, 'commission', 550, 550, 17, 'Commission from booking #17', '2026-06-10 09:52:22'),
(5, 31, 'withdrawal', -4000, 950, NULL, 'Withdrawal request (bkash)', '2026-06-10 09:52:23'),
(6, 31, 'withdrawal', -500, 450, NULL, 'Withdrawal request (nagad)', '2026-06-10 09:52:23'),
(7, 31, 'refund', 500, 950, NULL, 'Withdrawal request rejected — funds returned', '2026-06-10 09:52:24'),
(13, 30, 'deposit', 20000, 20000, NULL, 'Admin credit', '2026-06-10 10:39:59'),
(14, 30, 'order_payment', -33, 19967, 15, 'Payment for order #15', '2026-06-10 10:40:24'),
(15, 1, 'escrow_in', 33, 583, 15, 'Escrow hold for order #15', '2026-06-10 10:40:24'),
(21, 1, 'order_payment', -250, 300, 10, 'Payment for order #10', '2026-06-10 10:45:56'),
(22, 1, 'escrow_in', 250, 550, 10, 'Escrow hold for order #10', '2026-06-10 10:45:56');

DROP TABLE IF EXISTS `wallets`;
CREATE TABLE `wallets` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `balance` INT NOT NULL,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `wallets_user_id_unique` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `wallets` (`id`, `user_id`, `balance`, `created_at`, `updated_at`) VALUES
(1, 22, 0, '2026-06-10 09:46:23', '2026-06-10 09:46:23'),
(3, 33, 0, '2026-06-10 09:49:49', '2026-06-10 09:49:49'),
(4, 35, 0, '2026-06-10 09:50:41', '2026-06-10 09:50:41'),
(2, 32, 4500, '2026-06-10 09:49:04', '2026-06-10 09:52:22'),
(5, 31, 950, '2026-06-10 09:52:00', '2026-06-10 09:52:24'),
(7, 30, 19967, '2026-06-10 09:59:24', '2026-06-10 10:40:24'),
(6, 1, 550, '2026-06-10 09:52:22', '2026-06-10 10:45:56');

DROP TABLE IF EXISTS `withdrawals`;
CREATE TABLE `withdrawals` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `amount` INT NOT NULL,
  `method` TEXT NOT NULL,
  `account_number` TEXT NOT NULL,
  `status` TEXT NOT NULL,
  `note` TEXT,
  `reviewed_at` DATETIME,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `withdrawals` (`id`, `user_id`, `amount`, `method`, `account_number`, `status`, `note`, `reviewed_at`, `created_at`) VALUES
(1, 31, 4000, 'bkash', '01700000000', 'approved', NULL, '2026-06-10 09:52:23', '2026-06-10 09:52:23'),
(2, 31, 500, 'nagad', '019', 'rejected', NULL, '2026-06-10 09:52:24', '2026-06-10 09:52:23');

SET FOREIGN_KEY_CHECKS = 1;
