diff --git a/FusionIIIT/applications/visitor_hostel/api/serializers.py b/FusionIIIT/applications/visitor_hostel/api/serializers.py new file mode 100644 index 000000000..f5e4c1cf4 --- /dev/null +++ b/FusionIIIT/applications/visitor_hostel/api/serializers.py @@ -0,0 +1,16 @@ +from rest_framework import serializers +from applications.visitor_hostel.models import Inventory, InventoryBill + +class InventorySerializer(serializers.ModelSerializer): + class Meta: + model = Inventory + fields = ['item_name', 'quantity', 'consumable'] + +class InventoryBillSerializer(serializers.ModelSerializer): + class Meta: + model = InventoryBill + fields = ['item_name', 'bill_number', 'cost'] +class InventoryItemSerializer(serializers.ModelSerializer): + class Meta: + model = Inventory + fields = ['item_name', 'quantity'] \ No newline at end of file diff --git a/FusionIIIT/applications/visitor_hostel/api/views.py b/FusionIIIT/applications/visitor_hostel/api/views.py new file mode 100644 index 000000000..b0b658e3a --- /dev/null +++ b/FusionIIIT/applications/visitor_hostel/api/views.py @@ -0,0 +1,50 @@ +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework import status +from applications.visitor_hostel.models import Inventory, InventoryBill +from .serializers import InventorySerializer, InventoryBillSerializer, InventoryItemSerializer +from rest_framework.generics import ListAPIView +class AddToInventory(APIView): + def post(self, request): + # Extract data from request + item_name = request.data.get('item_name') + bill_number = request.data.get('bill_number') + quantity = request.data.get('quantity') + cost = request.data.get('cost') + consumable = request.data.get('consumable') + + # Validate and save Inventory item + inventory_data = { + 'item_name': item_name, + 'quantity': quantity, + 'consumable': consumable, + } + inventory_serializer = InventorySerializer(data=inventory_data) + + if inventory_serializer.is_valid(): + inventory_item = Inventory.objects.filter(item_name=item_name).first() + if inventory_item: + inventory_item.quantity = quantity + inventory_item.consumable = consumable + inventory_item.save() + else: + inventory_item = inventory_serializer.save() + + # Save InventoryBill + bill_data = { + 'item_name': inventory_item.id, # Link to inventory item + 'bill_number': bill_number, + 'cost': cost, + } + bill_serializer = InventoryBillSerializer(data=bill_data) + if bill_serializer.is_valid(): + bill_serializer.save() + return Response({"message": "Item added successfully!"}, status=status.HTTP_201_CREATED) + else: + return Response(bill_serializer.errors, status=status.HTTP_400_BAD_REQUEST) + else: + return Response(inventory_serializer.errors, status=status.HTTP_400_BAD_REQUEST) + +class InventoryListView(ListAPIView): + queryset = Inventory.objects.all() + serializer_class = InventorySerializer \ No newline at end of file diff --git a/FusionIIIT/applications/visitor_hostel/apps.py b/FusionIIIT/applications/visitor_hostel/apps.py index cf256aeb7..6fdf22599 100644 --- a/FusionIIIT/applications/visitor_hostel/apps.py +++ b/FusionIIIT/applications/visitor_hostel/apps.py @@ -3,3 +3,4 @@ class VisitorHostelConfig(AppConfig): name = 'applications.visitor_hostel' + diff --git a/FusionIIIT/applications/visitor_hostel/urls.py b/FusionIIIT/applications/visitor_hostel/urls.py index dc3b43691..f25bc7f68 100644 --- a/FusionIIIT/applications/visitor_hostel/urls.py +++ b/FusionIIIT/applications/visitor_hostel/urls.py @@ -1,4 +1,5 @@ from django.conf.urls import url +from applications.visitor_hostel.api.views import AddToInventory, InventoryListView from . import views @@ -30,9 +31,7 @@ url(r'^edit-room-status/', views.edit_room_status, name = 'edit_room_status'), url(r'^booking-details/', views.booking_details, name = 'booking_details'), url(r'^forward-booking/', views.forward_booking, name = 'forward_booking'), - url(r'^intenders/', views.get_intenders, name='get_intenders'), # - url(r'^user-details/', views.get_user_details, name='get_user_details'), # - url(r'^get-booking-details/(?P\d+)/$', views.get_booking_details, name='get_booking_details'), # - url(r'^forward-booking-new/$', views.forward_booking_new, name='forward_booking_new'), - url(r'^confirm-booking-new/$', views.confirm_booking_new, name='confirm_booking_new'), # + #api + url('api/inventory_add/', AddToInventory.as_view(), name='add-to-inventory'), + url('api/inventory_list/', InventoryListView.as_view(), name='inventory-list'), ]