from sqlalchemy.orm import Session from typing import List from app.services.auth.module_service import ModuleService from app.schemas.auth.module_schema import ModuleCreate, ModuleUpdate, ModuleResponse from app.models.auth.module_model import Module class ModuleController: @staticmethod def list_modules(db: Session) -> List[ModuleResponse]: modules = ModuleService.list_modules(db) return [ModuleResponse.model_validate(m) for m in modules] @staticmethod def create_module(db: Session, module_data: ModuleCreate) -> ModuleResponse: module = ModuleService.create_module(db, module_data) return ModuleResponse.model_validate(module) @staticmethod def get_available_modules(db: Session, current_user) -> List[ModuleResponse]: from app.schemas.auth.module_schema import ModuleAvailableResponse results = ModuleService.get_available_modules(db, current_user.tenant_id) response = [] for item in results: mod = item["module"] response.append(ModuleAvailableResponse( module_id=mod.module_id, module_name=mod.module_name, description=mod.description, icon_url=mod.icon_url, display_order=mod.display_order or 0, is_active=item["is_active"] )) return response @staticmethod def get_module(db: Session, module_id: str) -> ModuleResponse: module = ModuleService.get_module(db, module_id) return ModuleResponse.model_validate(module) @staticmethod def update_module(db: Session, module_id: str, module_data: ModuleUpdate) -> ModuleResponse: module = ModuleService.update_module(db, module_id, module_data) return ModuleResponse.model_validate(module) @staticmethod def delete_module(db: Session, module_id: str): ModuleService.delete_module(db, module_id) return {"message": "Module deleted successfully"}