
from django.views import View
from django.shortcuts import render
from django.http import JsonResponse

from apps.agencies.models import Agency
from apps.activities.models import Activity, ActionType
# Create your views here.



class CreateAgencyAPIView(View):
    def post(self, request, *args, **kwargs):
        # Check if the user is authenticated
        if not request.user.is_authenticated:
            return JsonResponse({'error': 'Authentication required'}, status=401)
        # # Get all data from the request.POST
        # all_data = dict(request.POST)
        # Get the values of agencyName and agencyDescription directly from request.POST
        agency_name = request.POST.get('agencyName', '')  # Default value '' in case key doesn't exist
        agency_description = request.POST.get('agencyDescription', '')  # Default value '' in case key doesn't exist
        # Check if agency_name is empty or None
        if not agency_name:
            #  
            Activity.objects.create(
                performer = request.user,   
                action_type = ActionType.REJECT, 
                details = "Reject Adding New Agency Object Using API Request, Agency name is required",
                related_object_id = None,
                related_object_type = "Agency",
            )
            # Return a message indicating that agencyName is required
            return JsonResponse({'error': 'Agency name is required'}, status=400) 
        # Check if an agency with the same name already exists
        if Agency.objects.filter(name=agency_name).exists():
            #  
            Activity.objects.create(
                performer = request.user,   
                action_type = ActionType.REJECT, 
                details = "Reject Adding New Agency Object Using API Request, Agency Already exists",
                related_object_id = Agency.objects.get(name=agency_name).id,
                related_object_type = "Agency",
            )
            # Return a message indicating that the agency already exists
            return JsonResponse({'error': 'Agency with this name already exists'}, status=400)
        # Create a new agency 
        agency =Agency.objects.create(
            name=agency_name, 
            description=agency_description, 
            created_by=request.user,
            user=request.user
        )
        # 
        Activity.objects.create(
            performer = request.user,   
            action_type = ActionType.ADD, 
            details = "Create New Agency Object Using API Request",
            related_object_id = agency.id,
            related_object_type = "Agency",
        )

        # Return a JSON response indicating success
        data = {'message': 'Agency created successfully'}
        
        return JsonResponse(data) 
    