
from management.management.utils.utils import create_audit_log
from management.models.gruppo_driver import GruppoDriver
from management.repositories.base import BaseRepository
from management.serializers.gruppo_driver_serializer import GruppoDriverSerializer
from django.db import transaction


class GruppoDriverRepository(BaseRepository):
    entity=GruppoDriver

    @transaction.atomic
    def save(self, dto, user_id=None) -> tuple:
        serializer = GruppoDriverSerializer(data=dto)
        plan_id = dto.get("plan")

        serializer.is_valid(raise_exception=True)
        gruppo_driver = serializer.save()
        new_values = {
            "title": 
                {
                    "old": '',
                    "new": gruppo_driver.title
                }
        }
        activity_type = "CREAZIONE GRUPPO"

        create_audit_log(
            user=user_id,
            activity_type=activity_type,
            entity=gruppo_driver,
            entity_name='GruppoDriver',
            entity_id=plan_id,
            old_values=None,
            new_values=new_values
        )
        return True, {"id": gruppo_driver.id}
