Files
Verificacion_EFOS_Backend/app/modules/configuration/service.py

64 lines
2.4 KiB
Python

from sqlalchemy.orm import Session
from datetime import datetime
from typing import Optional
from fastapi import HTTPException
from app.modules.configuration.models import Configuration
from app.modules.configuration.schema import ConfigCreate, ConfigResponse, Configupdate, MessageResponse
class ConfigurationService:
@staticmethod
def create_configuration(db: Session, data: ConfigCreate):
new_configuration = Configuration(**data.dict())
db.add(new_configuration)
db.commit()
db.refresh(new_configuration)
return new_configuration
@staticmethod
def get_configuration(db: Session, configuration_id: int, current_user):
configuration = db.query(Configuration).filter(Configuration.id == configuration_id).first()
if not configuration:
raise ValueError("configuration no encontrado")
return configuration
@staticmethod
def update_configuration(db: Session, configuration_id: int, data: Configupdate , current_user):
configuration = db.query(Configuration).filter(Configuration.id == configuration_id).first()
if not configuration:
raise ValueError("configuration no encontrado")
if current_user.role not in ["ROOT", "ADMIN"]:
raise ValueError("No tienes permisos para actualizar este configuration")
update_data = data.dict(exclude_unset=True)
for key, value in update_data.items():
setattr(configuration, key, value)
db.commit()
db.refresh(configuration)
return configuration
@staticmethod
def delete_configuration(db: Session, configuration_id: int, current_user):
configuration = db.query(Configuration).filter(Configuration.id == configuration_id).first()
if not configuration:
raise ValueError("configuration no encontrado")
if current_user.role not in ["ROOT", "ADMIN"]:
raise ValueError("No tienes permisos para eliminar este configuration")
try:
configuration.is_active = False
configuration.deleted_at = datetime.utcnow()
configuration.deleted_by = current_user.id
db.commit()
db.refresh(configuration)
except Exception as e:
db.rollback()
raise ValueError(f"Error al eliminar el configuration: {e}")
return {"message": "configuration eliminado correctamente"}