diff --git a/FusionIIIT/applications/central_mess/api/serializers.py b/FusionIIIT/applications/central_mess/api/serializers.py new file mode 100644 index 000000000..29b750ec4 --- /dev/null +++ b/FusionIIIT/applications/central_mess/api/serializers.py @@ -0,0 +1,80 @@ +from rest_framework import serializers +from applications.central_mess.models import * + +class MessinfoSerializer(serializers.ModelSerializer): + + class Meta: + model=Messinfo + fields=('__all__') + +class Mess_regSerializer(serializers.ModelSerializer): + class Meta: + model = Mess_reg + fields=('__all__') + +class MessBillBaseSerializer(serializers.ModelSerializer): + class Meta: + model = MessBillBase + fields=('__all__') + +class Monthly_billSerializer(serializers.ModelSerializer): + class Meta: + model=Monthly_bill + fields=('__all__') + +class PaymentsSerializer(serializers.ModelSerializer): + class Meta: + model=Payments + fields=('__all__') + +class MenuSerializer(serializers.ModelSerializer): + class Meta: + model=Menu + fields=('__all__') + +class RebateSerializer(serializers.ModelSerializer): + + class Meta: + model=Rebate + fields=('__all__') + +class Vacation_foodSerializer(serializers.ModelSerializer): + class Meta: + model = Vacation_food + fields=('__all__') + +class Nonveg_menuSerializer(serializers.ModelSerializer): + class Meta: + model = Nonveg_menu + fields=('__all__') + +class Nonveg_dataSerializer(serializers.ModelSerializer): + class Meta: + model=Nonveg_data + fields=('__all__') + +class Special_requestSerializer(serializers.ModelSerializer): + class Meta: + model=Special_request + fields=('__all__') + +class Mess_meetingSerializer(serializers.ModelSerializer): + class Meta: + model=Mess_meeting + fields=('__all__') + +class Mess_minutesSerializer(serializers.ModelSerializer): + class Meta: + model = Mess_minutes + fields=('__all__') + +class Menu_change_requestSerializer(serializers.ModelSerializer): + class Meta: + model = Menu_change_request + fields=('__all__') + +class FeedbackSerializer(serializers.ModelSerializer): + class Meta: + model=Feedback + fields=('__all__') + diff --git a/FusionIIIT/applications/central_mess/api/urls.py b/FusionIIIT/applications/central_mess/api/urls.py new file mode 100644 index 000000000..bc6252de7 --- /dev/null +++ b/FusionIIIT/applications/central_mess/api/urls.py @@ -0,0 +1,21 @@ +from django.conf.urls import url +from . import views +from .views import * + +urlpatterns = [ + url("feedbackApi", views.FeedbackApi.as_view(), name="feedbackApi"), + url("menuChangeRequestApi", views.Menu_change_requestApi.as_view(), name="menuChangeRequestApi"), + url("messMinutesApi", views.Mess_minutesApi.as_view(), name="messMinutesApi"), + url("nonvegDataApi", views.Nonveg_dataApi.as_view(), name="nonvegDataApi"), + url("specialRequestApi", views.Special_requestApi.as_view(), name="specialRequestApi"), + url("messMeetingApi", views.Mess_meetingApi.as_view(), name="messMeetingApi"), + url("nonvegMenuApi", views.Nonveg_menuApi.as_view(), name="nonvegMenuApi"), + url("vacationFoodApi", views.Vacation_foodApi.as_view(), name="vacationFoodApi"), + url("messInfoApi", views.MessinfoApi.as_view(), name="messInfoApi"), + url("rebateApi", views.RebateApi.as_view(), name="rebateApi"), + url("menuApi", views.MenuApi.as_view(), name="menuApi"), + url("paymentsApi", views.PaymentsApi.as_view(), name="paymentsApi"), + url("monthlyBillApi", views.Monthly_billApi.as_view(), name="monthlyBillApi"), + url("messBillBaseApi", views.MessBillBaseApi.as_view(), name="messBillBaseApi"), + url("messRegApi", views.Mess_regApi.as_view(), name="messRegApi"), +] \ No newline at end of file diff --git a/FusionIIIT/applications/central_mess/api/views.py b/FusionIIIT/applications/central_mess/api/views.py new file mode 100644 index 000000000..2653481da --- /dev/null +++ b/FusionIIIT/applications/central_mess/api/views.py @@ -0,0 +1,407 @@ + #APIs +from rest_framework.views import APIView +from rest_framework.response import Response +from .serializers import * +from django.shortcuts import get_object_or_404 +from applications.central_mess.models import * +from django.contrib.auth.models import User +from applications.globals.models import ExtraInfo, HoldsDesignation, Designation + + +class FeedbackApi(APIView): + + def get(self, request): + feedback_obj = Feedback.objects.all(); + serialized_obj = FeedbackSerializer(feedback_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + mess = data['mess'] + _type = data['type'] + desc = data['desc'] + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + obj = Feedback( + student_id = student, + mess =mess, + feedback_type=_type, + description=desc + ) + obj.save() + return Response({'status':200}) + + +class MessinfoApi(APIView): + def get(self, request): + messinfo_obj = Messinfo.objects.all(); + serialized_obj = MessinfoSerializer(messinfo_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + mess_option = data['mess_option'] + + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + obj = Messinfo( + student_id = student, + mess_option =mess_option, + ) + obj.save() + return Response({'status':200}) + +class Mess_regApi(APIView): + def get(self, request): + mess_reg_obj = Mess_reg.objects.all(); + serialized_obj = Mess_regSerializer(mess_reg_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + sem = data['sem'] + start_reg = data['start_reg'] + end_reg= data['end_reg'] + + obj = Mess_reg( + sem = sem, + start_reg = start_reg, + end_reg = end_reg + ) + obj.save() + return Response({'status':200}) + +class MessBillBaseApi(APIView): + def get(self, request): + messBillBase_obj = MessBillBase.objects.all(); + serialized_obj = MessBillBaseSerializer(messBillBase_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + bill_amount = data['bill_amount'] + # timestamp = data['timestamp'] + + obj = MessBillBase( + bill_amount = bill_amount, + # timestamp = timestamp, + ) + obj.save() + return Response({'status':200}) + +class Monthly_billApi(APIView): + def get(self, request): + monthly_bill_obj = Monthly_bill.objects.all(); + serialized_obj = Monthly_billSerializer(monthly_bill_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + month = data['month'] + year = data['year'] + amount = data['amount'] + rebate_count = data['rebate_count'] + rebate_amount = data['rebate_amount'] + nonveg_total_bill = data['nonveg_total_bill'] + paid = data['paid'] + + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + + + obj = Monthly_bill( + student_id = student, + month = month, + year = year, + amount = amount, + rebate_count = rebate_count, + rebate_amount = rebate_amount, + nonveg_total_bill = nonveg_total_bill, + paid = paid + ) + obj.save() + return Response({'status':200}) + +class PaymentsApi(APIView): + def get(self, request): + payments_obj = Payments.objects.all(); + serialized_obj = PaymentsSerializer(payments_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + sem = data['sem'] + year = data['year'] + amount_paid = data['amount_paid'] + + + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + + + obj = Payments( + student_id = student, + sem = sem, + year = year, + amount_paid = amount_paid, + ) + obj.save() + return Response({'status':200}) +class MenuApi(APIView): + def get(self, request): + menu_obj = Menu.objects.all(); + serialized_obj = MenuSerializer(menu_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + mess_option = data['mess_option'] + meal_time = data['meal_time'] + dish = data['dish'] + + + obj = Menu( + mess_option = mess_option, + meal_time = meal_time, + dish = dish, + ) + obj.save() + return Response({'status':200}) +class RebateApi(APIView): + def get(self, request): + rebate_obj = Rebate.objects.all(); + serialized_obj = RebateSerializer(rebate_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + # student_id = data['mess_option'] + start_date = data['start_date'] + end_date = data['end_date'] + purpose = data['purpose'] + status = data['status'] + app_date = data['app_date'] + leave_type = data['leave_type'] + + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + + + obj = Rebate( + student_id = student, + leave_type = leave_type, + app_date = app_date, + status = status, + purpose = purpose, + end_date= end_date, + start_date = start_date + ) + obj.save() + return Response({'status':200}) +class Vacation_foodApi(APIView): + def get(self, request): + vacation_food_obj = Vacation_food.objects.all(); + serialized_obj = Vacation_foodSerializer(vacation_food_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + start_date = data['start_date'] + end_date = data['end_date'] + purpose = data['purpose'] + status = data['status'] + app_date = data['app_date'] + + + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + + + obj = Vacation_food( + student_id = student, + app_date = app_date, + status = status, + purpose = purpose, + end_date= end_date, + start_date = start_date + ) + obj.save() + return Response({'status':200}) + +class Nonveg_menuApi(APIView): + def get(self, request): + nonveg_menu_obj = Nonveg_menu.objects.all(); + serialized_obj = Nonveg_menuSerializer(nonveg_menu_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + dish= data['dish'] + price = data['price'] + order_interval = data['order_interval'] + + + obj = Nonveg_menu( + dish = dish, + price = price, + order_interval = order_interval, + ) + obj.save() + return Response({'status':200}) + +class Nonveg_dataApi(APIView): + def get(self, request): + nonveg_data_obj = Nonveg_data.objects.all(); + serialized_obj = Nonveg_dataSerializer(nonveg_data_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + dish= data['dish'] + order_date = data['order_date'] + app_date = data['app_date'] + order_interval = data['order_interval'] + + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + + dish_obj = Nonveg_menu.objects.get(dish=dish) + + obj = Nonveg_data( + student_id = student, + order_date = order_date, + app_date = app_date, + dish = dish_obj, + order_interval = order_interval, + ) + obj.save() + return Response({'status':200}) + +class Special_requestApi(APIView): + def get(self, request): + special_request_obj = Special_request.objects.all(); + serialized_obj = Special_requestSerializer(special_request_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + + def post(self, request): + data = request.data + + + start_date = data['start_date'] + end_date = data['end_date'] + status = data['status'] + app_date = data['app_date'] + request_= data['request'] + item1 = data['item1'] + item2 = data['item2'] + + + + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + + obj = Special_request( + student_id = student, + app_date = app_date, + status = status, + item1 = item1, + item2 = item2, + end_date= end_date, + start_date = start_date, + request = request_ + ) + obj.save() + return Response({'status':200}) + +class Mess_meetingApi(APIView): + def get(self, request): + mess_meeting_obj = Mess_meeting.objects.all(); + serialized_obj = Mess_meetingSerializer(mess_meeting_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + meet_date = data['meet_date'] + agenda = data['agenda'] + venue = data['venue'] + meeting_time = data['meeting_time'] + + obj = Mess_meeting( + meet_date = meet_date, + meeting_time = meeting_time, + agenda = agenda, + venue = venue, + ) + obj.save() + return Response({'status':200}) + +class Mess_minutesApi(APIView): + def get(self, request): + mess_minutes_obj = Mess_minutes.objects.all(); + serialized_obj = Mess_minutesSerializer(mess_minutes_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + + meeting_date = data['meeting_date'] + mess_minutes = data['mess_minutes'] + meeting_date_obj = Mess_meeting.objects.get(meet_date=meeting_date) + + obj = Mess_minutes( + meeting_date = meeting_date_obj, + mess_minutes = mess_minutes, + ) + obj.save() + return Response({'status':200}) + +class Menu_change_requestApi(APIView): + def get(self, request): + menu_change_request_obj = Menu_change_request.objects.all(); + serialized_obj = Menu_change_requestSerializer(menu_change_request_obj, many=True) + return Response({'status':200, 'payload':serialized_obj.data}) + + def post(self, request): + data = request.data + dish = data['dish'] + reason = data['reason'] + status = data['status'] + app_date = data['app_date'] + request_ = data['request'] + + + dish_obj = Menu.objects.get(dish=dish) + username = get_object_or_404(User,username=request.user.username) + idd = ExtraInfo.objects.get(user=username) + student = Student.objects.get(id=idd.id) + + obj = Menu_change_request( + student_id = student, + app_date = app_date, + status = status, + reason = reason, + request = request_, + dish = dish_obj + ) + obj.save() + return Response({'status':200}) diff --git a/FusionIIIT/applications/central_mess/urls.py b/FusionIIIT/applications/central_mess/urls.py index f98b83047..cec4f78c1 100644 --- a/FusionIIIT/applications/central_mess/urls.py +++ b/FusionIIIT/applications/central_mess/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import url +from django.conf.urls import url , include from . import views @@ -37,4 +37,7 @@ url(r'^billdownload', views.download_bill_mess, name='billdownload'), url("info-form", views.mess_info, name="info"), + url(r'^api', include('applications.central_mess.api.urls')), + + ] diff --git a/FusionIIIT/applications/central_mess/views.py b/FusionIIIT/applications/central_mess/views.py index b740ac104..321eb3b59 100644 --- a/FusionIIIT/applications/central_mess/views.py +++ b/FusionIIIT/applications/central_mess/views.py @@ -300,7 +300,7 @@ def mess(request): return render(request, "messModule/mess.html", context) context = { - 'reg_menu': y, + 'reg_menu': y, 'messinfo': mess_optn, 'monthly_bill': monthly_bill, 'payments': payments, @@ -320,10 +320,14 @@ def mess(request): 'desig': desig, 'minutes': minutes, 'meeting': meeting, + } return render(request, "messModule/mess.html", context) + + + elif extrainfo.user_type == 'staff': current_bill = MessBillBase.objects.latest('timestamp') nonveg_orders_today = Nonveg_data.objects.filter(order_date=today_g)\ @@ -342,6 +346,40 @@ def mess(request): leave_past = Rebate.objects.select_related('student_id','student_id__id','student_id__id__user','student_id__id__department').filter(status='2').order_by('-app_date') meeting = Mess_meeting.objects.all() minutes = Mess_minutes.objects.all() + + + feed = Feedback.objects.select_related('student_id','student_id__id','student_id__id__user','student_id__id__department').all().order_by('-fdate') + for f in feed: + mess_opt = Messinfo.objects.select_related('student_id','student_id__id','student_id__id__user','student_id__id__department').get(student_id=f.student_id) + if f.feedback_type == 'Maintenance' and mess_opt.mess_option == 'mess1': + count1 += 1 + + elif f.feedback_type == 'Food' and mess_opt.mess_option == 'mess1': + count2 += 1 + + elif f.feedback_type == 'Cleanliness' and mess_opt.mess_option == 'mess1': + count3 += 1 + + elif f.feedback_type == 'Others' and mess_opt.mess_option == 'mess1': + count4 += 1 + + for f in feed: + mess_opt = Messinfo.objects.select_related('student_id','student_id__id','student_id__id__user','student_id__id__department').get(student_id=f.student_id) + if f.feedback_type == 'Maintenance' and mess_opt.mess_option == 'mess2': + count5 += 1 + + elif f.feedback_type == 'Food' and mess_opt.mess_option == 'mess2': + count6 += 1 + + elif f.feedback_type == 'Cleanliness' and mess_opt.mess_option == 'mess2': + count7 += 1 + + elif f.feedback_type == 'Others' and mess_opt.mess_option == 'mess2': + count8 += 1 + + + + context = { 'bill_base': current_bill, 'today': today_g.date(), @@ -360,8 +398,14 @@ def mess(request): 'desig': desig, 'meeting': meeting, 'minutes': minutes, - } + + 'count1': count1, + 'count2': count2, 'count3': count3, 'feed': feed, + 'count4': count4, 'form': form, 'count5': count5, + 'count6': count6, 'count7': count7, 'count8': count8, 'desig': desig + + } return render(request, "messModule/mess.html", context) elif extrainfo.user_type == 'faculty': @@ -406,6 +450,7 @@ def mess(request): 'count2': count2, 'count3': count3, 'feed': feed, 'count4': count4, 'form': form, 'count5': count5, 'count6': count6, 'count7': count7, 'count8': count8, 'desig': desig + } return render(request, 'messModule/mess.html', context) diff --git a/FusionIIIT/templates/messModule/menu_card.html b/FusionIIIT/templates/messModule/menu_card.html index 2bbb3f543..9a880da87 100644 --- a/FusionIIIT/templates/messModule/menu_card.html +++ b/FusionIIIT/templates/messModule/menu_card.html @@ -120,6 +120,9 @@ {% if info.user_type == 'staff' and d.designation.name == 'mess_manager' %} + + View Feedback | Statistics + Respond to requests diff --git a/FusionIIIT/templates/messModule/menudownloadable1.html b/FusionIIIT/templates/messModule/menudownloadable1.html index 1188b7c78..d72789ad0 100644 --- a/FusionIIIT/templates/messModule/menudownloadable1.html +++ b/FusionIIIT/templates/messModule/menudownloadable1.html @@ -1,11 +1,11 @@ - + + + + + + + + Mess Menu + + +
+ + + + + + + + + + + +
+

Mess 1 menu

+
+ + + + + {% for item in menu %} + {% if item.mess_option == 'mess1' %} + {% if item.meal_time == 'MB' or item.meal_time == 'ML' or item.meal_time == 'MD' %} + + {% if item.meal_time == 'MB' %} + + {% elif item.meal_time == 'ML' %} + + {% elif item.meal_time == 'MD' %} + + {% endif %} + + {% endif %} + {% endif %} + {% endfor %} + + + + + + + {% for item in menu %} + {% if item.mess_option == 'mess1' %} + + {% if item.meal_time == 'TB' or item.meal_time == 'TL' or item.meal_time == 'TD' %} + + {% if item.meal_time == 'TB' %} + + {% elif item.meal_time == 'TL' %} + + {% elif item.meal_time == 'TD' %} + + {% endif %} + + {% endif %} + {% endif %} + {% endfor %} + + + + + + + + {% for item in menu %} + {% if item.mess_option == 'mess1' %} + {% if item.meal_time == 'WB' or item.meal_time == 'WL' or item.meal_time == 'WD' %} + + {% if item.meal_time == 'WB' %} + + {% elif item.meal_time == 'WL' %} + + {% elif item.meal_time == 'WD' %} + + {% endif %} + + {% endif %} + {% endif %} + {% endfor %} + + + + + + {% for item in menu %} + {% if item.mess_option == 'mess1' %} + {% if item.meal_time == 'THB' or item.meal_time == 'THL' or item.meal_time == 'THD' %} + + + {% if item.meal_time == 'THB' %} + + {% elif item.meal_time == 'THL' %} + + {% elif item.meal_time == 'THD' %} + + {% endif %} + + {% endif %} + {% endif %} + {% endfor %} + + + + + + + {% for item in menu %} + {% if item.mess_option == 'mess1' %} + {% if item.meal_time == 'FB' or item.meal_time == 'FL' or item.meal_time == 'FD' %} + + {% if item.meal_time == 'FB' %} + + {% elif item.meal_time == 'FL' %} + + {% elif item.meal_time == 'FD' %} + + {% endif %} + + {% endif %} + {% endif %} + {% endfor %} + + + + + + + {% for item in menu %} + {% if item.mess_option == 'mess1' %} + {% if item.meal_time == 'SB' or item.meal_time == 'SL' or item.meal_time == 'SD' %} + + {% if item.meal_time == 'SB' %} + + {% elif item.meal_time == 'SL' %} + + {% elif item.meal_time == 'SD' %} + + {% endif %} + + {% endif %} + {% endif %} + {% endfor %} + + + + + + + {% for item in menu %} + {% if item.mess_option == 'mess1' %} + {% if item.meal_time == 'SUB' or item.meal_time == 'SUL' or item.meal_time == 'SUD' %} + + {% if item.meal_time == 'SUB' %} + + {% elif item.meal_time == 'SUL' %} + + {% elif item.meal_time == 'SUD' %} + + {% endif %} + + {% endif %} + {% endif %} + {% endfor %} + + + + + + +
Breakfast
Lunch
Dinner
Monday{{item.dish}}{{item.dish}}{{item.dish}}
Tuesday{{item.dish}}{{item.dish}}{{item.dish}}
Wednesday{{item.dish}}{{item.dish}}{{item.dish}}
Thursday{{item.dish}}{{item.dish}}{{item.dish}}
Friday{{item.dish}}{{item.dish}}{{item.dish}}
Saturday{{item.dish}}{{item.dish}}{{item.dish}}
Sunday{{item.dish}}{{item.dish}}{{item.dish}}
+ + +
+ + \ No newline at end of file diff --git a/FusionIIIT/templates/messModule/view_feedback.html b/FusionIIIT/templates/messModule/view_feedback.html index 827957e92..82ca0955b 100644 --- a/FusionIIIT/templates/messModule/view_feedback.html +++ b/FusionIIIT/templates/messModule/view_feedback.html @@ -45,7 +45,7 @@ {% if item.feedback_type == 'Food' %} {{item.fdate}} - {{ item.student_id.id|truncatewords:1|slice:"-1" }} + {{ item.student_id.id|truncatewords:1|slice:"8" }} {{item.feedback_type}} {{item.description}} @@ -75,7 +75,7 @@ {% if item.feedback_type == 'Cleanliness' %} {{item.fdate}} - {{ item.student_id|truncatewords:1|slice:"-1" }} + {{ item.student_id|truncatewords:1|slice:"8" }} {{item.feedback_type}} {{item.description}} @@ -105,7 +105,7 @@ {% if item.feedback_type == 'Maintenance' %} {{item.fdate}} - {{ item.student_id.id|truncatewords:1|slice:"-1" }} + {{ item.student_id.id|truncatewords:1|slice:"8" }} {{item.feedback_type}} {{item.description}} @@ -117,7 +117,7 @@

- +
@@ -135,7 +135,7 @@ {% if item.feedback_type == 'Others' %} {{item.fdate}} - {{ item.student_id.id|truncatewords:1|slice:"-1" }} + {{ item.student_id.id|truncatewords:1|slice:"8" }} {{item.feedback_type}} {{item.description}}