
from management.models.associazione_pratiche_a_modello import PraticheModello
from management.models.gruppo import Gruppo
from management.models.modello import Modello
from management.repositories.base import BaseRepository
from django.db import transaction

from management.serializers.gruppo_serializer import GruppoSerializer
from management.serializers.modello_serializer import ModelloSerializer


class GruppoRepository(BaseRepository):
    entity=Gruppo

    @transaction.atomic
    def save(self, dto) -> tuple:
        gruppo_id = dto.get("id")

        if gruppo_id:
            try:
                instance = Gruppo.objects.get(id=gruppo_id)
            except Gruppo.DoesNotExist:
                return False, {"detail": "Gruppo not found"}
            serializer = GruppoSerializer(instance, data=dto, partial=True)
        else:
            serializer = GruppoSerializer(data=dto)
        
        serializer.is_valid(raise_exception=True)
        gruppo = serializer.save()
        return True, {"id": gruppo.id}
