from django.shortcuts import render
from django.http import JsonResponse
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import random

# ==================== DADOS COM PANDAS ====================
def gerar_dados_frota():
    """Gera dados simulados da frota usando Pandas"""
    
    modelos = [
        'Scania R450', 'Volvo FH540', 'Mercedes Actros', 
        'DAF XF530', 'Iveco S-Way', 'Volkswagen Constellation'
    ]
    
    cidades = ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Curitiba', 'Porto Alegre']
    status_list = ['Em rota', 'Disponível', 'Manutenção', 'Carregando']
    
    dados = []
    for i in range(25):  # 25 veículos
        dados.append({
            'id': i+1,
            'placa': f"MWM{1000 + i}",
            'modelo': random.choice(modelos),
            'ano': random.choice([2022, 2023, 2024]),
            'km': random.randint(10000, 200000),
            'status': random.choices(status_list, weights=[0.5, 0.3, 0.1, 0.1])[0],
            'cidade': random.choice(cidades),
            'motorista': f"Motorista {i+1}",
            'capacidade': random.choice([15, 18, 22, 26, 30]),
            'consumo': round(random.uniform(2.2, 3.5), 1)
        })
    
    return pd.DataFrame(dados)

def gerar_dados_entregas():
    """Gera dados de entregas"""
    entregas = []
    for i in range(150):
        data = datetime.now() - timedelta(days=random.randint(0, 45))
        entregas.append({
            'codigo': f"MWM{20000 + i}",
            'data': data,
            'origem': random.choice(['SP', 'RJ', 'MG', 'PR', 'RS', 'BA']),
            'destino': random.choice(['SP', 'RJ', 'MG', 'PR', 'RS', 'BA', 'SC']),
            'valor': round(random.uniform(2000, 35000), 2),
            'status': random.choice(['Entregue', 'Em trânsito', 'Agendado']),
            'peso': round(random.uniform(2, 28), 1)
        })
    return pd.DataFrame(entregas)

# DataFrames globais
df_frota = gerar_dados_frota()
df_entregas = gerar_dados_entregas()

# ==================== VIEWS ====================
def home(request):
    """Página inicial com vídeo"""
    # Métricas para o dashboard
    metricas = {
        'total_veiculos': len(df_frota),
        'veiculos_rota': len(df_frota[df_frota['status'] == 'Em rota']),
        'veiculos_disponiveis': len(df_frota[df_frota['status'] == 'Disponível']),
        'total_entregas': len(df_entregas[df_entregas['data'] >= datetime.now() - timedelta(days=30)]),
        'faturamento': round(df_entregas['valor'].sum() / 1000, 1),
    }
    
    return render(request, 'mwm_app/home.html', {
        'metricas': metricas,
        'frota_destaque': df_frota.sample(min(6, len(df_frota))).to_dict('records')
    })

def quem_somos(request):
    """Página Quem Somos"""
    return render(request, 'mwm_app/quem_somos.html', {
        'total_veiculos': len(df_frota),
        'total_entregas': len(df_entregas),
        'anos_experiencia': 15
    })

def frota(request):
    """Página completa da frota"""
    return render(request, 'mwm_app/frota.html', {
        'frota': df_frota.to_dict('records'),
        'total_veiculos': len(df_frota),
        'capacidade_total': df_frota['capacidade'].sum()
    })

def contato(request):
    """Página de contato"""
    return render(request, 'mwm_app/contato.html')

def api_frota(request):
    """API para atualização em tempo real"""
    return JsonResponse({
        'frota': df_frota.to_dict('records'),
        'metricas': {
            'total': len(df_frota),
            'em_rota': len(df_frota[df_frota['status'] == 'Em rota']),
            'disponiveis': len(df_frota[df_frota['status'] == 'Disponível'])
        }
    })

def gerar_dados():
    """Gera dados simulados da frota com tipos de veículos e imagens"""
    
    # Configuração dos tipos de veículos com suas imagens - AGORA CORRESPONDENDO AOS FILTROS
    veiculos_config = [
        {'tipo': 'BITRUCK', 'imagem': 'bitruck.jpg', 'modelos': ['Volkswagen Constellation', 'Mercedes Atego']},
        {'tipo': 'BITRUCK BLINDADO', 'imagem': 'bitruck-blindado.jpg', 'modelos': ['Volvo VM', 'Scania P360']},
        {'tipo': 'CAMINHÃO TRATOR', 'imagem': 'caminhao-trator.jpg', 'modelos': ['Scania R450', 'Volvo FH540']},
        {'tipo': 'CARRETA', 'imagem': 'carreta.jpg', 'modelos': ['Facchini', 'Randon', 'Librelato']},
        {'tipo': 'CARRETA BLINDADA', 'imagem': 'carreta-blindada.jpg', 'modelos': ['Randon Blindada', 'Facchini Blindada']},
        {'tipo': 'CARRETA CONVENCIONAL', 'imagem': 'carreta-convencional.jpg', 'modelos': ['Randon Convencional', 'Facchini']},
        {'tipo': 'CARRETA SIDER', 'imagem': 'carreta-sider.jpg', 'modelos': ['Sider Randon', 'Sider Facchini']},
        {'tipo': 'CAVALO', 'imagem': 'cavalo.jpg', 'modelos': ['Mercedes Axor', 'Volvo FH']},
        {'tipo': 'CAVALO BLINDADO', 'imagem': 'cavalo-blindado.jpg', 'modelos': ['Scania Blindado', 'Volvo Blindado']},
        {'tipo': 'TOCO BLINDADO', 'imagem': 'toco-blindado.jpg', 'modelos': ['Mercedes Atego Blindado', 'Volvo VM Blindado']},
        {'tipo': 'TRUCK CONVENCIONAL', 'imagem': 'truck-convencional.jpg', 'modelos': ['Volkswagen Delivery', 'Iveco Tector']},
    ]
    
    cidades = ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Curitiba', 'Porto Alegre', 'Brasília']
    status_list = ['Em rota', 'Disponível', 'Manutenção', 'Carregando']
    
    # Gerar frota
    frota = []
    for i in range(33):  # 33 veículos (3 de cada tipo)
        config = random.choice(veiculos_config)
        modelo = random.choice(config['modelos'])
        
        frota.append({
            'id': i+1,
            'placa': f"MWM{1000 + i}",
            'modelo': modelo,
            'tipo': config['tipo'],  # ← AGORA CORRESPONDE EXATAMENTE AOS FILTROS
            'imagem': config['imagem'],
            'ano': random.choice([2022, 2023, 2024]),
            'km': random.randint(10000, 200000),
            'status': random.choices(status_list, weights=[0.5, 0.3, 0.1, 0.1])[0],
            'cidade': random.choice(cidades),
            'motorista': f"Motorista {i+1}",
            'capacidade': random.choice([15, 18, 22, 26, 30]),
            'consumo': round(random.uniform(2.2, 3.5), 1)
        })
    
    return pd.DataFrame(frota)
    """Gera dados simulados da frota"""
    
    # Modelos de caminhões com seus tipos
    veiculos_config = [
        {'modelo': 'Scania R450', 'tipo': 'CAVALO', 'imagem': 'cavalo.jpg'},
        {'modelo': 'Volvo FH540', 'tipo': 'CAVALO BLINDADO', 'imagem': 'cavalo-blindado.jpg'},
        {'modelo': 'Mercedes Actros', 'tipo': 'BITRUCK', 'imagem': 'bitruck.jpg'},
        {'modelo': 'DAF XF530', 'tipo': 'BITRUCK BLINDADO', 'imagem': 'bitruck-blindado.jpg'},
        {'modelo': 'Iveco S-Way', 'tipo': 'CARRETA', 'imagem': 'carreta.jpg'},
        {'modelo': 'Volkswagen Constellation', 'tipo': 'CARRETA BLINDADA', 'imagem': 'carreta-blindada.jpg'},
        {'modelo': 'Scania R450', 'tipo': 'CARRETA CONVENCIONAL', 'imagem': 'carreta-convencional.jpg'},
        {'modelo': 'Volvo FH540', 'tipo': 'CARRETA SIDER', 'imagem': 'carreta-sider.jpg'},
        {'modelo': 'Mercedes Actros', 'tipo': 'TOCO BLINDADO', 'imagem': 'toco-blindado.jpg'},
        {'modelo': 'DAF XF530', 'tipo': 'TRUCK CONVENCIONAL', 'imagem': 'truck-convencional.jpg'},
    ]
    
    cidades = ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Curitiba', 'Porto Alegre', 'Brasília']
    status_list = ['Em rota', 'Disponível', 'Manutenção', 'Carregando']
    
    # Gerar frota
    frota = []
    for i in range(30):  # 30 veículos
        config = random.choice(veiculos_config)
        frota.append({
            'id': i+1,
            'placa': f"MWM{1000 + i}",
            'modelo': config['modelo'],
            'tipo': config['tipo'],
            'imagem': config['imagem'],
            'ano': random.choice([2022, 2023, 2024]),
            'km': random.randint(10000, 200000),
            'status': random.choices(status_list, weights=[0.5, 0.3, 0.1, 0.1])[0],
            'cidade': random.choice(cidades),
            'motorista': f"Motorista {i+1}",
            'capacidade': random.choice([15, 18, 22, 26, 30]),
            'consumo': round(random.uniform(2.2, 3.5), 1)
        })
    
    return pd.DataFrame(frota)