95 lines
3.5 KiB
Python
95 lines
3.5 KiB
Python
from rest_framework.views import APIView
|
|
from rest_framework import serializers
|
|
from rest_framework.response import Response
|
|
from rest_framework import status
|
|
from apps.customer.services import create_customer_note, customer_note_edit, customer_note_delete
|
|
from apps.customer.selectors import customer_note_retrieve, customer_note_list
|
|
from apps.customer.models import CustomerNote as CustomerNoteModel
|
|
from apps.reminder.models import Reminder as ReminderModel
|
|
from utils.tools import inline_serializer
|
|
|
|
|
|
|
|
class CustomerCreateNoteApi(APIView):
|
|
class InputSerializer(serializers.Serializer):
|
|
desc = serializers.CharField()
|
|
reminder_datetime = serializers.DateTimeField(required=False, allow_null=True)
|
|
reminder_desc = serializers.CharField(required=False, allow_null=True, max_length=200)
|
|
|
|
def post(self, request, customer_id):
|
|
serializer = self.InputSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
output = create_customer_note(request=request, customer_id=customer_id, **serializer.validated_data)
|
|
|
|
return Response(data={'id': output.id}, status=status.HTTP_201_CREATED)
|
|
|
|
|
|
class CustomerListNoteApi(APIView):
|
|
|
|
class OutputSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = CustomerNoteModel
|
|
exclude = ['cuser_role', 'sys_ws']
|
|
|
|
def get(self, request, customer_id):
|
|
notes = customer_note_list(request=request, customer_id=customer_id)
|
|
output = self.OutputSerializer(notes, many=True)
|
|
|
|
return Response(data=output.data, status=status.HTTP_200_OK)
|
|
|
|
|
|
class CustomerRetrieveNoteApi(APIView):
|
|
|
|
class OutputSerializer(serializers.Serializer):
|
|
|
|
class CustomerNoteSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = CustomerNoteModel
|
|
fields = '__all__'
|
|
|
|
class CustomerNoteReminderSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ReminderModel
|
|
fields = '__all__'
|
|
|
|
customer_note = CustomerNoteSerializer(many=False, required=True)
|
|
customer_note_reminder = CustomerNoteReminderSerializer(many=False, required=False)
|
|
|
|
def get(self, request, customer_id, note_id):
|
|
note = customer_note_retrieve(request=request, customer_id=customer_id, note_id=note_id)
|
|
output = self.OutputSerializer(note)
|
|
|
|
return Response(data=output.data, status=status.HTTP_200_OK)
|
|
|
|
|
|
class CustomerEditNoteApi(APIView):
|
|
|
|
class InputSerializer(serializers.Serializer):
|
|
desc = serializers.CharField(required=True)
|
|
reminder_datetime = serializers.DateTimeField(required=False, allow_null=True)
|
|
reminder_desc = serializers.CharField(required=False, allow_null=True, max_length=200)
|
|
|
|
class OutputSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = CustomerNoteModel
|
|
fields = '__all__'
|
|
|
|
def patch(self, request, customer_id, note_id):
|
|
|
|
serializer = self.InputSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
note = customer_note_edit(request=request, customer_id=customer_id, note_id=note_id, **serializer.validated_data)
|
|
|
|
return Response(data={'id': note.id}, status=status.HTTP_201_CREATED)
|
|
|
|
|
|
class CustomerDeleteNoteApi(APIView):
|
|
|
|
def delete(self, request, customer_id, note_id):
|
|
note = customer_note_delete(request=request, customer_id=customer_id, note_id=note_id)
|
|
|
|
return Response(data={'result': 'deleted'}, status=status.HTTP_200_OK)
|
|
|