from pydantic import BaseModel, Field
from datetime import datetime
from typing import Optional, Dict, Any, List
from models.customer import Customer

class Company(BaseModel):
    id: int
    cnpj: str
    name: str
    cookie: str
    expires_on: datetime
    status: str
    updated_at: datetime
    created_at: datetime
    details: Optional[str] = None
    
    class Config:
        from_attributes = True

class CompanyWithCustomers(BaseModel):
    id: int
    cnpj: str
    name: str
    status: str
    customers: List['Customer'] = []

class Response(BaseModel):
    status: str
    message: str
    data: Optional[Dict[str, Any]] = None

class Request(BaseModel):
    cookie: str = Field(
        ..., 
        examples=["fgtsd_ni_usuario=36497467000136; fgtsd_lgpd=%7B%22selectAll%22%3Atrue%2C%22cookieGroups%22%3A%5B%7B%22cookieList%22%3A%5B%7B%22cookieId%22%3A%22necessarios-1%22%2C%22cookieSelected%22%3Atrue%7D%2C%7B%22cookieId%22%3A%22necessarios-2%22%2C%22cookieSelected%22%3Atrue%7D%5D%2C%22groupId%22%3A%22necessarios%22%2C%22groupSelected%22%3Atrue%7D%5D%7D; fgtsd_gateway=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1EaXJldGFGZWRlcmFsIjoiTiIsImFtciI6WyJ4NTA5IiwieDUwOV90b2tlbiIsImNhcHRjaGEiLCJhY2Vzc29nb3YiXSwiY25waiI6IjM2NDk3NDY3MDAwMTM2IiwiY25wal9ub21lIjoiU09MVVRUQSBNT1JVTUJJIENPTlRBQklMSURBREUgLSBMVERBLiIsImV4cCI6MTc2Njc3MDIzNCwiZmd0c2RpZ2l0YWwuZ292LmJyL2Zyb20iOiJmZ3RzZF9sb2dpbiIsImZndHNkaWdpdGFsLmdvdi5ici9uaV9wZXJmaWwiOiI0NjIyMTI1NzAwMDE3NCIsImZndHNkaWdpdGFsLmdvdi5ici9ub21lX3BlcmZpbCI6IkVNUE9SSU8gRSBQQURBUklBIEpPU0UgTUVOSU5PIERPSVMgTFREQSIsImZndHNkaWdpdGFsLmdvdi5ici9zZXJ2aWNvcyI6IltcIkJMT1FDMDAxXCIsXCJCTE9RRTAwMVwiLFwiQ09OU0MwMDFcIixcIkRBRE9DMDAxXCIsXCJEQURPRTAwMVwiLFwiR1VJQUMwMDFcIixcIkdVSUFFMDAxXCIsXCJISVNUQzAwMVwiLFwiSElTVEUwMDFcIixcIk1FTlNDMDAxXCIsXCJNRU5TRTAwMVwiLFwiUEFSQ0MwMDFcIixcIlBBUkNFMDAxXCJdIiwiZmd0c2RpZ2l0YWwuZ292LmJyL3RpcG9fcGVyZmlsIjoiMiIsImlzcyI6InBvcnRhbC1mZ3RzZCIsIm1hdHJpeiI6IjEiLCJuYW1lIjoiTEVBTkRSTyBNQUdBTEhBRVMgREUgU09VWkEiLCJwaWN0dXJlIjoiIiwic3ViIjoiMzg5MjUzODc4NjcifQ.UbDg0W5FFMhH5jUUu5OEgNiNTHodw57on0qyoQMbFcM; fgtsd_tipo_perfil=2; fgtsd_ni_perfil=46221257000174; fgtsd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1EaXJldGFGZWRlcmFsIjoiTiIsImFtciI6WyJ4NTA5IiwieDUwOV90b2tlbiIsImNhcHRjaGEiLCJhY2Vzc29nb3YiXSwiY25waiI6IjM2NDk3NDY3MDAwMTM2IiwiY25wal9ub21lIjoiU09MVVRUQSBNT1JVTUJJIENPTlRBQklMSURBREUgLSBMVERBLiIsImV4cCI6MTc2Njc3MDIzNCwiZmd0c2RpZ2l0YWwuZ292LmJyL2Zyb20iOiJmZ3RzZF9sb2dpbiIsImZndHNkaWdpdGFsLmdvdi5ici9uaV9wZXJmaWwiOiI0NjIyMTI1NzAwMDE3NCIsImZndHNkaWdpdGFsLmdvdi5ici9ub21lX3BlcmZpbCI6IkVNUE9SSU8gRSBQQURBUklBIEpPU0UgTUVOSU5PIERPSVMgTFREQSIsImZndHNkaWdpdGFsLmdvdi5ici9zZXJ2aWNvcyI6IltcIkJMT1FDMDAxXCIsXCJCTE9RRTAwMVwiLFwiQ09OU0MwMDFcIixcIkRBRE9DMDAxXCIsXCJEQURPRTAwMVwiLFwiR1VJQUMwMDFcIixcIkdVSUFFMDAxXCIsXCJISVNUQzAwMVwiLFwiSElTVEUwMDFcIixcIk1FTlNDMDAxXCIsXCJNRU5TRTAwMVwiLFwiUEFSQ0MwMDFcIixcIlBBUkNFMDAxXCJdIiwiZmd0c2RpZ2l0YWwuZ292LmJyL3RpcG9fcGVyZmlsIjoiMiIsImlzcyI6InBvcnRhbC1mZ3RzZCIsIm1hdHJpeiI6IjEiLCJuYW1lIjoiTEVBTkRSTyBNQUdBTEhBRVMgREUgU09VWkEiLCJwaWN0dXJlIjoiIiwic3ViIjoiMzg5MjUzODc4NjcifQ.; fgtsd_nomes=%5B%5B%221%3A36497467000136%22%2C%22SOLUTTA%20MORUMBI%20CONTABILIDADE%20-%20LTDA.%22%5D%2C%5B%222%3A46221257000174%22%2C%22EMPORIO%20E%20PADARIA%20JOSE%20MENINO%20DOIS%20LTDA%22%5D%5D; TSe61acda5027=082670627aab2000c14e42b6464918293b37c9ae0e4005a6b8b6dc4e8c8df7ac632f36059158130c08c93277f9113000a241e67a126a27eca465ad1b86f3f2f2d38d2e9a61336cbbd666622a729155d64a54eafd83923e68fdff3797d2e0007b"]
    )