from src.models.user import db
from datetime import datetime

class Company(db.Model):
    __tablename__ = 'companies'
    
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(200), nullable=False)
    rnc = db.Column(db.String(11), unique=True, nullable=False)  # RNC dominicano: 101-12345-6
    address = db.Column(db.Text)
    phone = db.Column(db.String(20))
    email = db.Column(db.String(120))
    status = db.Column(db.String(20), default='active')  # active, inactive, suspended
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
    
    # Relación con usuarios (empleados y contadores)
    users = db.relationship('User', backref='company', lazy=True)
    
    # Relación con facturas
    invoices = db.relationship('Invoice', backref='company', lazy=True)
    
    def __repr__(self):
        return f'<Company {self.name} - {self.rnc}>'
    
    def to_dict(self):
        return {
            'id': self.id,
            'name': self.name,
            'rnc': self.rnc,
            'address': self.address,
            'phone': self.phone,
            'email': self.email,
            'status': self.status,
            'created_at': self.created_at.isoformat() if self.created_at else None,
            'updated_at': self.updated_at.isoformat() if self.updated_at else None,
            'users_count': len(self.users) if self.users else 0,
            'invoices_count': len(self.invoices) if self.invoices else 0
        }

