from rest_framework.response import Response
from .serializers import TodoSerializer
from rest_framework.views import APIView
from .models import Todo as TodoModel


class TodoList(APIView):
    def get(self, request,pk=None):
        if pk:
            Todo = TodoModel.object.filter(id=pk)
            serializer = TodoSerializer(Todo, many=True)
            return Response(serializer.data)
        else:
            Todo = TodoModel.object.all()
            serializer = TodoSerializer(Todo, many=True)
            return Response(serializer.data)

    def post(self,request):
        serializer = TodoSerializer(data=request.data)
        try:
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data)
            return Response(serializer.errors)
        except:
            return Response({'message': 'Only Post Allowed'})
    
    def put(self,request,pk=None):
        Todo_data = TodoModel.object.get(id=pk)
        if Todo_data:
            serializer = TodoSerializer(Todo_data, data=request.data)
            if serializer.is_valid():
                serializer.save()
                serializer = TodoSerializer(Todo_data)
                return Response(serializer.data)
            return Response(serializer.errors)
        else:
            return Response({'message': 'data not found'})
    
    def delete(self, request, pk=None):
        Todo_data = TodoModel.object.get(id=pk)
        if Todo_data:
            Todo_data.delete()
            return Response({'message': 'Delete Successfull'})
        else:
            return Response({'message': 'data not found'})