from sqlalchemy.orm import Session from datetime import datetime from typing import Optional from fastapi import HTTPException from app.modules.license.models import License from app.modules.license.schema import class LicenseService: @staticmethod def create_license(db: Session, data: ): new_license = License(**data.dict()) db.add(new_license) db.commit() db.refresh(new_license) return new_license @staticmethod def get_license(db: Session, license_id: int, current_user): license = db.query(License).filter(License.id == license_id).first() if not license: raise ValueError("license no encontrado") return license @staticmethod def update_license(db: Session, license_id: int, data: , current_user): license = db.query(License).filter(License.id == license_id).first() if not license: raise ValueError("license no encontrado") if current_user.role not in ["ROOT", "ADMIN"]: raise ValueError("No tienes permisos para actualizar este license") update_data = data.dict(exclude_unset=True) for key, value in update_data.items(): setattr(license, key, value) db.commit() db.refresh(license) return license @staticmethod def delete_license(db: Session, license_id: int, current_user): license = db.query(License).filter(License.id == license_id).first() if not license: raise ValueError("license no encontrado") if current_user.role not in ["ROOT", "ADMIN"]: raise ValueError("No tienes permisos para eliminar este license") try: license.is_active = False license.deleted_at = datetime.utcnow() license.deleted_by = current_user.id db.commit() db.refresh(license) except Exception as e: db.rollback() raise ValueError(f"Error al eliminar el license: {e}") return {"message": "license eliminado correctamente"}