"""
Script de Seed Multi-Tenant para a Plataforma NaRégua.
Cria as 3 barbearias com dados realistas, horários, clientes, agendamentos do dia,
comandas de caixa com divisão de comissão e produtos de conveniência.
"""
from datetime import datetime, timedelta
from app.database import init_db, get_db

def seed_database():
    init_db()
    with get_db() as conn:
        cursor = conn.cursor()
        
        # Verificar se já tem dados
        cursor.execute("SELECT COUNT(*) FROM barbershops")
        if cursor.fetchone()[0] > 0:
            return

        print("Populando banco multi-tenant NaRégua com barbearias de exemplo...")
        today = datetime.now().strftime("%Y-%m-%d")

        # -------------------------------------------------------------
        # BARBEARIA 1: Plano BÁSICO (Barbeiro Solo - R$ 49,90/mês)
        # -------------------------------------------------------------
        cursor.execute("""
        INSERT INTO barbershops (name, slug, phone, email, password, plan_tier, max_barbers, opening_time, closing_time, slot_interval, pix_key, pix_deposit_amount)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        """, (
            "Studio Lucas Fade",
            "studio-lucas",
            "11911112222",
            "lucas@barber.com",
            "123",
            "basico",
            1, # Limite de 1 profissional
            "09:00",
            "19:00",
            30,
            "11911112222",
            0.0
        ))
        shop1_id = cursor.lastrowid

        # 1 Barbeiro Solo
        cursor.execute("""
        INSERT INTO barbers (barbershop_id, name, nickname, phone, avatar_color, commission_rate, start_time, end_time)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        """, (shop1_id, "Lucas Fade", "Lucas", "11911112222", "#d97706", 1.0, "09:00", "19:00"))
        b1_id = cursor.lastrowid

        # Serviços do Studio Lucas
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Corte Degradê na Régua', 'Corte moderno com máquina e tesoura', 40.00, 35)", (shop1_id,))
        s1_id = cursor.lastrowid
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Barba Alinhada', 'Toalha quente e navalha', 30.00, 25)", (shop1_id,))
        s1_barba = cursor.lastrowid
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Combo Cabelo + Barba', 'Corte e barba completos', 60.00, 50)", (shop1_id,))
        s1_combo = cursor.lastrowid

        # Cliente e agendamento básico
        cursor.execute("INSERT INTO clients (barbershop_id, name, phone, total_visits, last_visit_at) VALUES (?, 'Carlos Eduardo', '11966661111', 3, ?)", (shop1_id, today))
        c1_id = cursor.lastrowid

        cursor.execute("""
        INSERT INTO appointments (barbershop_id, barber_id, client_id, service_id, appointment_date, start_time, end_time, status, total_amount)
        VALUES (?, ?, ?, ?, ?, '14:00', '14:35', 'confirmado', 40.00)
        """, (shop1_id, b1_id, c1_id, s1_id, today))

        cursor.execute("""
        INSERT INTO orders (barbershop_id, barber_id, client_name, total_services, final_amount, payment_method, payment_status, barber_commission_amount, house_net_amount)
        VALUES (?, ?, 'Carlos Eduardo', 40.00, 40.00, 'pix', 'pago', 40.00, 0.0)
        """, (shop1_id, b1_id))


        # -------------------------------------------------------------
        # BARBEARIA 2: Plano INTERMEDIÁRIO (Equipe - R$ 79,90/mês)
        # Login de Demonstração: marcos@navalha.com / 123
        # -------------------------------------------------------------
        cursor.execute("""
        INSERT INTO barbershops (name, slug, phone, email, password, plan_tier, max_barbers, opening_time, closing_time, slot_interval, pix_key, pix_deposit_amount)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        """, (
            "Navalha & Arte",
            "navalha-e-arte",
            "11987654321",
            "marcos@navalha.com",
            "123",
            "intermediario",
            5, # Até 5 profissionais
            "08:00",
            "20:00",
            30,
            "11987654321",
            15.00
        ))
        shop2_id = cursor.lastrowid

        # 3 Barbeiros da Equipe
        barbers2 = [
            ("Marcos Navalha", "Marcos", "11988881111", "#d97706", 0.50), # 50%
            ("Diego Barba Terapia", "Diego", "11988882222", "#059669", 0.50), # 50%
            ("Felipe Fade", "Felipe", "11988883333", "#6366f1", 0.45) # 45%
        ]
        b2_ids = []
        for name, nick, phone, col, comm in barbers2:
            cursor.execute("""
            INSERT INTO barbers (barbershop_id, name, nickname, phone, avatar_color, commission_rate)
            VALUES (?, ?, ?, ?, ?, ?)
            """, (shop2_id, name, nick, phone, col, comm))
            b2_ids.append(cursor.lastrowid)

        # Serviços da Navalha & Arte
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Corte Degradê na Régua', 'Lavagem especial, fade no pente e navalhete', 45.00, 35)", (shop2_id,))
        s2_corte = cursor.lastrowid
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Barba com Toalha Quente & Ozônio', 'Óleos essenciais, massagem facial e navalha', 35.00, 30)", (shop2_id,))
        s2_barba = cursor.lastrowid
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Combo Cabelo + Barba Alinhada', 'O combo mais pedido da casa', 70.00, 55)", (shop2_id,))
        s2_combo = cursor.lastrowid
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Pigmentação de Barba / Platinado', 'Realce de cor e alinhamento milimétrico', 55.00, 45)", (shop2_id,))
        s2_pigment = cursor.lastrowid
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Sobrancelha na Navalha', 'Alinhamento com acabamento limpo', 15.00, 15)", (shop2_id,))
        s2_sobrancelha = cursor.lastrowid

        # Produtos de Bancada
        cursor.execute("INSERT INTO products (barbershop_id, name, price, cost_price, stock_quantity) VALUES (?, 'Pomada Efeito Matte 150g', 45.00, 18.00, 16)", (shop2_id,))
        p2_pomada = cursor.lastrowid
        cursor.execute("INSERT INTO products (barbershop_id, name, price, cost_price, stock_quantity) VALUES (?, 'Óleo Hidratante de Barba 30ml', 39.90, 15.00, 11)", (shop2_id,))
        p2_oleo = cursor.lastrowid
        cursor.execute("INSERT INTO products (barbershop_id, name, price, cost_price, stock_quantity) VALUES (?, 'Cerveja Artesanal IPA 355ml', 15.00, 6.50, 22)", (shop2_id,))
        p2_cerveja = cursor.lastrowid
        cursor.execute("INSERT INTO products (barbershop_id, name, price, cost_price, stock_quantity) VALUES (?, 'Shampoo Anticaspa Mentolado', 42.00, 17.00, 9)", (shop2_id,))
        p2_shampoo = cursor.lastrowid

        # Clube de Assinatura
        cursor.execute("INSERT INTO subscription_plans (barbershop_id, name, monthly_price, cuts_included, description) VALUES (?, 'Clube VIP do Corte (4 cortes)', 129.90, 4, '4 cortes por mês sem filas e com horário garantido')", (shop2_id,))
        plan2_id = cursor.lastrowid

        # Clientes
        clients_data = [
            ("Rodrigo Silveira", "11977771111", 6),
            ("Bruno Carvalho", "11977772222", 10),
            ("Matheus Alencar", "11977773333", 4),
            ("Lucas Gabriel", "11977774444", 2),
            ("Thiago Mendes", "11977775555", 8),
            ("Rafael Souza", "11977776666", 1),
            ("André Costa", "11977777777", 5),
            ("Carlos Alberto", "11977778888", 3),
        ]
        c2_ids = []
        for cname, cphone, cvis in clients_data:
            cursor.execute("INSERT INTO clients (barbershop_id, name, phone, total_visits, last_visit_at) VALUES (?, ?, ?, ?, ?)", (shop2_id, cname, cphone, cvis, today))
            c2_ids.append(cursor.lastrowid)

        # Assinatura ativa para o Bruno Carvalho
        cursor.execute("INSERT INTO client_subscriptions (barbershop_id, client_id, plan_id, status, cuts_used_this_month, started_at, next_billing_date) VALUES (?, ?, ?, 'ativo', 2, '2026-09-15', '2026-10-15')", (shop2_id, c2_ids[1], plan2_id))

        # Agendamentos para HOJE na Navalha & Arte
        appts_today = [
            # barber_idx, client_idx, service_id, start, end, status, amount, notes
            (0, 0, s2_corte, "09:00", "09:35", "concluido", 45.00, "Corte degradê navalhado"),
            (1, 1, s2_barba, "09:30", "10:00", "concluido", 35.00, "Barboterapia completa"),
            (2, 2, s2_combo, "10:30", "11:25", "em_atendimento", 70.00, "Cliente na cadeira"),
            (0, 3, s2_corte, "11:30", "12:05", "confirmado", 45.00, "Confirmou pelo WhatsApp"),
            (1, 4, s2_combo, "14:00", "14:55", "confirmado", 70.00, "Horário pós almoço"),
            (2, 5, s2_barba, "15:30", "16:00", "agendado", 35.00, "Primeira vez na barbearia"),
            (0, 6, s2_pigment, "16:30", "17:15", "agendado", 55.00, "Pigmentação na barba"),
            (1, 7, s2_corte, "17:30", "18:05", "agendado", 45.00, "Corte social limpo")
        ]
        created_appts = []
        for bidx, cidx, sid, start, end, st, val, notes in appts_today:
            cursor.execute("""
            INSERT INTO appointments (barbershop_id, barber_id, client_id, service_id, appointment_date, start_time, end_time, status, total_amount, notes)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
            """, (shop2_id, b2_ids[bidx], c2_ids[cidx], sid, today, start, end, st, val, notes))
            created_appts.append(cursor.lastrowid)

        # Comandas Fechadas no Caixa HOJE
        # Comanda 1: Rodrigo Silveira (Corte + Pomada Matte = R$ 90,00 via PIX)
        cursor.execute("""
        INSERT INTO orders (barbershop_id, appointment_id, barber_id, client_name, total_services, total_products, discount, final_amount, payment_method, payment_status, barber_commission_amount, house_net_amount, items_summary)
        VALUES (?, ?, ?, 'Rodrigo Silveira', 45.00, 45.00, 0.0, 90.00, 'pix', 'pago', 27.00, 63.00, 'Corte Degradê na Régua + Pomada Efeito Matte 150g')
        """, (shop2_id, created_appts[0], b2_ids[0]))

        # Comanda 2: Bruno Carvalho (Barba + Cerveja IPA = R$ 50,00 via Cartão Crédito)
        cursor.execute("""
        INSERT INTO orders (barbershop_id, appointment_id, barber_id, client_name, total_services, total_products, discount, final_amount, payment_method, payment_status, barber_commission_amount, house_net_amount, items_summary)
        VALUES (?, ?, ?, 'Bruno Carvalho', 35.00, 15.00, 0.0, 50.00, 'cartao_credito', 'pago', 19.00, 31.00, 'Barba com Toalha Quente + Cerveja Artesanal IPA')
        """, (shop2_id, created_appts[1], b2_ids[1]))

        # Comanda 3: Venda avulsa de Balcão (Pomada Matte R$ 45,00 via PIX)
        cursor.execute("""
        INSERT INTO orders (barbershop_id, barber_id, client_name, total_services, total_products, discount, final_amount, payment_method, payment_status, barber_commission_amount, house_net_amount, items_summary)
        VALUES (?, ?, 'Cliente Balcão (Lucas)', 0.0, 45.00, 0.0, 45.00, 'pix', 'pago', 4.50, 40.50, '1x Pomada Efeito Matte 150g')
        """, (shop2_id, b2_ids[0]))

        # Comanda 4: Venda de Balcão (Óleo para Barba R$ 39,90 via Dinheiro)
        cursor.execute("""
        INSERT INTO orders (barbershop_id, barber_id, client_name, total_services, total_products, discount, final_amount, payment_method, payment_status, barber_commission_amount, house_net_amount, items_summary)
        VALUES (?, ?, 'Cliente Balcão (Gustavo)', 0.0, 39.90, 0.0, 39.90, 'dinheiro', 'pago', 4.00, 35.90, '1x Óleo Hidratante de Barba 30ml')
        """, (shop2_id, b2_ids[1]))

        # Vales dos Barbeiros de HOJE
        cursor.execute("INSERT INTO barber_advances (barbershop_id, barber_id, amount, description, date) VALUES (?, ?, 25.00, 'Vale Almoço', ?)", (shop2_id, b2_ids[0], today))
        cursor.execute("INSERT INTO barber_advances (barbershop_id, barber_id, amount, description, date) VALUES (?, ?, 20.00, 'Adiantamento Combustível', ?)", (shop2_id, b2_ids[1], today))


        # -------------------------------------------------------------
        # BARBEARIA 3: Plano PROFISSIONAL (Ilimitado - R$ 119,90/mês)
        # -------------------------------------------------------------
        cursor.execute("""
        INSERT INTO barbershops (name, slug, phone, email, password, plan_tier, max_barbers, opening_time, closing_time, slot_interval, pix_key, pix_deposit_amount)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        """, (
            "VIP Club Barbearia",
            "vip-club",
            "11999998888",
            "vip@barber.com",
            "123",
            "profissional",
            999, # Ilimitado
            "08:00",
            "21:00",
            30,
            "11999998888",
            20.00
        ))
        shop3_id = cursor.lastrowid

        # Barbeiros da VIP
        cursor.execute("INSERT INTO barbers (barbershop_id, name, nickname, phone, avatar_color, commission_rate) VALUES (?, 'Alexandre Master', 'Alex', '11999990001', '#8b5cf6', 0.60)", (shop3_id,))
        cursor.execute("INSERT INTO barbers (barbershop_id, name, nickname, phone, avatar_color, commission_rate) VALUES (?, 'Gabriel Tesoura', 'Biel', '11999990002', '#ec4899', 0.50)", (shop3_id,))

        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Corte Master VIP', 'Corte exclusivo com toalha aromatizada', 60.00, 40)", (shop3_id,))
        cursor.execute("INSERT INTO services (barbershop_id, name, description, price, duration_minutes) VALUES (?, 'Barba Terapia Completa', 'Barboterapia de luxo', 45.00, 35)", (shop3_id,))

        # Clientes inativos para testar a Máquina de Recuperação do Plano Profissional
        cursor.execute("INSERT INTO clients (barbershop_id, name, phone, notes, total_visits, last_visit_at) VALUES (?, 'Marcelo Zanin', '11977776666', 'Cliente sumido há 42 dias', 9, '2026-09-01')", (shop3_id,))
        cursor.execute("INSERT INTO clients (barbershop_id, name, phone, notes, total_visits, last_visit_at) VALUES (?, 'Gustavo Lima', '11977778888', 'Cliente sumido há 35 dias', 5, '2026-09-08')", (shop3_id,))

        print("Seed multi-tenant NaRégua concluído com sucesso!")

if __name__ == "__main__":
    seed_database()
