from rest_framework.response import Response
from rest_framework import status
from rest_framework.decorators import action
from users.models import Users


class UserViewSetMixin:
    """
    Disabling/Enabling endpoints of user accounts
    """

    @action(detail=True, methods=["GET"], serializer_class=None)
    def disable(self, request, pk=None):
        try:
            user = Users.objects.get(pk=pk)
            user.is_active = False
            user.save()

            return Response(
                {"message": "User has been disabled."}, status=status.HTTP_200_OK
            )
        except Users.DoesNotExist:
            return Response(
                {"message": "User does not exists."}, status=status.HTTP_404_NOT_FOUND
            )

    @action(detail=True, methods=["GET"], serializer_class=None)
    def enable(self, request, pk=None):
        try:
            user = Users.objects.get(pk=pk)
            user.is_active = True
            user.save()

            return Response(
                {"message": "User has been enabled."}, status=status.HTTP_200_OK
            )
        except Users.DoesNotExist:
            return Response(
                {"message": "User does not exists."}, status=status.HTTP_404_NOT_FOUND
            )
