mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
refactor: Mise à jour de la doc swagger / URL
This commit is contained in:
@ -40,8 +40,8 @@ class SessionView(APIView):
|
|||||||
try:
|
try:
|
||||||
decoded_token = jwt.decode(token, settings.SECRET_KEY, algorithms=['HS256'])
|
decoded_token = jwt.decode(token, settings.SECRET_KEY, algorithms=['HS256'])
|
||||||
print(f'decode : {decoded_token}')
|
print(f'decode : {decoded_token}')
|
||||||
user_id = decoded_token.get('id')
|
userid = decoded_token.get('id')
|
||||||
user = Profile.objects.get(id=user_id)
|
user = Profile.objects.get(id=userid)
|
||||||
|
|
||||||
response_data = {
|
response_data = {
|
||||||
'user': {
|
'user': {
|
||||||
@ -84,7 +84,7 @@ class ProfileSimpleView(APIView):
|
|||||||
|
|
||||||
def put(self, request, id):
|
def put(self, request, id):
|
||||||
data=JSONParser().parse(request)
|
data=JSONParser().parse(request)
|
||||||
profil = Profile.objects.get(id=_id)
|
profil = Profile.objects.get(id=id)
|
||||||
profil_serializer = ProfilUpdateSerializer(profil, data=data)
|
profil_serializer = ProfilUpdateSerializer(profil, data=data)
|
||||||
if profil_serializer.is_valid():
|
if profil_serializer.is_valid():
|
||||||
profil_serializer.save()
|
profil_serializer.save()
|
||||||
@ -108,7 +108,7 @@ class LoginView(APIView):
|
|||||||
def post(self, request):
|
def post(self, request):
|
||||||
data=JSONParser().parse(request)
|
data=JSONParser().parse(request)
|
||||||
validatorAuthentication = validator.ValidatorAuthentication(data=data)
|
validatorAuthentication = validator.ValidatorAuthentication(data=data)
|
||||||
retour = error.returnMessage[error.WRONG_ID]
|
retour = error.returnMessage[error.WRONGid]
|
||||||
validationOk, errorFields = validatorAuthentication.validate()
|
validationOk, errorFields = validatorAuthentication.validate()
|
||||||
user = None
|
user = None
|
||||||
if validationOk:
|
if validationOk:
|
||||||
@ -133,7 +133,7 @@ class LoginView(APIView):
|
|||||||
# 'role': "admin"
|
# 'role': "admin"
|
||||||
# }, settings.SECRET_KEY, algorithm='HS256')
|
# }, settings.SECRET_KEY, algorithm='HS256')
|
||||||
else:
|
else:
|
||||||
retour = error.returnMessage[error.WRONG_ID]
|
retour = error.returnMessage[error.WRONGid]
|
||||||
|
|
||||||
|
|
||||||
return JsonResponse({
|
return JsonResponse({
|
||||||
|
|||||||
@ -87,6 +87,7 @@ class PlanningSerializer(serializers.ModelSerializer):
|
|||||||
class SchoolClassSerializer(serializers.ModelSerializer):
|
class SchoolClassSerializer(serializers.ModelSerializer):
|
||||||
updated_date_formatted = serializers.SerializerMethodField()
|
updated_date_formatted = serializers.SerializerMethodField()
|
||||||
teachers = serializers.PrimaryKeyRelatedField(queryset=Teacher.objects.all(), many=True, required=False)
|
teachers = serializers.PrimaryKeyRelatedField(queryset=Teacher.objects.all(), many=True, required=False)
|
||||||
|
establishment = serializers.PrimaryKeyRelatedField(queryset=Establishment.objects.all(), required=False)
|
||||||
teachers_details = serializers.SerializerMethodField()
|
teachers_details = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -105,9 +106,10 @@ class SchoolClassSerializer(serializers.ModelSerializer):
|
|||||||
teaching_language=validated_data.get('teaching_language', ''),
|
teaching_language=validated_data.get('teaching_language', ''),
|
||||||
school_year=validated_data.get('school_year', ''),
|
school_year=validated_data.get('school_year', ''),
|
||||||
levels=levels_data,
|
levels=levels_data,
|
||||||
type=validated_data.get('type', 1), # Added here
|
type=validated_data.get('type', 1),
|
||||||
time_range=validated_data.get('time_range', ['08:30', '17:30']), # Added here
|
time_range=validated_data.get('time_range', ['08:30', '17:30']),
|
||||||
opening_days=validated_data.get('opening_days', [1, 2, 4, 5]) # Added here
|
opening_days=validated_data.get('opening_days', [1, 2, 4, 5]),
|
||||||
|
establishment=validated_data.get('establishment', None)
|
||||||
)
|
)
|
||||||
|
|
||||||
school_class.teachers.set(teachers_data)
|
school_class.teachers.set(teachers_data)
|
||||||
@ -132,9 +134,10 @@ class SchoolClassSerializer(serializers.ModelSerializer):
|
|||||||
instance.teaching_language = validated_data.get('teaching_language', instance.teaching_language)
|
instance.teaching_language = validated_data.get('teaching_language', instance.teaching_language)
|
||||||
instance.school_year = validated_data.get('school_year', instance.school_year)
|
instance.school_year = validated_data.get('school_year', instance.school_year)
|
||||||
instance.levels = levels_data
|
instance.levels = levels_data
|
||||||
instance.type = validated_data.get('type', instance.type) # Added here
|
instance.type = validated_data.get('type', instance.type)
|
||||||
instance.time_range = validated_data.get('time_range', instance.time_range) # Added here
|
instance.time_range = validated_data.get('time_range', instance.time_range)
|
||||||
instance.opening_days = validated_data.get('opening_days', instance.opening_days) # Added here
|
instance.opening_days = validated_data.get('opening_days', instance.opening_days)
|
||||||
|
instance.establishment = validated_data.get('establishment', instance.establishment)
|
||||||
|
|
||||||
instance.save()
|
instance.save()
|
||||||
instance.teachers.set(teachers_data)
|
instance.teachers.set(teachers_data)
|
||||||
@ -169,6 +172,7 @@ class SchoolClassSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class DiscountSerializer(serializers.ModelSerializer):
|
class DiscountSerializer(serializers.ModelSerializer):
|
||||||
updated_at_formatted = serializers.SerializerMethodField()
|
updated_at_formatted = serializers.SerializerMethodField()
|
||||||
|
establishment = serializers.PrimaryKeyRelatedField(queryset=Establishment.objects.all(), required=False)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Discount
|
model = Discount
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
@ -181,6 +185,7 @@ class DiscountSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class FeeSerializer(serializers.ModelSerializer):
|
class FeeSerializer(serializers.ModelSerializer):
|
||||||
updated_at_formatted = serializers.SerializerMethodField()
|
updated_at_formatted = serializers.SerializerMethodField()
|
||||||
|
establishment = serializers.PrimaryKeyRelatedField(queryset=Establishment.objects.all(), required=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Fee
|
model = Fee
|
||||||
|
|||||||
@ -1,61 +1,51 @@
|
|||||||
from django.urls import path, re_path
|
from django.urls import path, re_path
|
||||||
|
|
||||||
from School.views import (
|
from .views import (
|
||||||
TeachersView,
|
TeacherListCreateView,
|
||||||
TeacherView,
|
TeacherDetailView,
|
||||||
SpecialitiesView,
|
SpecialityListCreateView,
|
||||||
SpecialityView,
|
SpecialityDetailView,
|
||||||
ClassesView,
|
SchoolClassListCreateView,
|
||||||
ClasseView,
|
SchoolClassDetailView,
|
||||||
PlanningsView,
|
PlanningListCreateView,
|
||||||
PlanningView,
|
PlanningDetailView,
|
||||||
FeesView,
|
FeeListCreateView,
|
||||||
FeeView,
|
FeeDetailView,
|
||||||
DiscountsView,
|
DiscountListCreateView,
|
||||||
DiscountView,
|
DiscountDetailView,
|
||||||
PaymentPlansView,
|
PaymentPlanListCreateView,
|
||||||
PaymentPlanView,
|
PaymentPlanDetailView,
|
||||||
PaymentModesView,
|
PaymentModeListCreateView,
|
||||||
PaymentModeView,
|
PaymentModeDetailView,
|
||||||
EstablishmentsView,
|
EstablishmentListCreateView,
|
||||||
EstablishmentView
|
EstablishmentDetailView
|
||||||
)
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
re_path(r'^specialities$', SpecialitiesView.as_view(), name="specialities"),
|
re_path(r'^specialities$', SpecialityListCreateView.as_view(), name="speciality_list_create"),
|
||||||
re_path(r'^speciality$', SpecialityView.as_view(), name="speciality"),
|
re_path(r'^specialities/(?P<id>[0-9]+)$', SpecialityDetailView.as_view(), name="speciality_detail"),
|
||||||
re_path(r'^speciality/([0-9]+)$', SpecialityView.as_view(), name="speciality"),
|
|
||||||
|
|
||||||
re_path(r'^teachers$', TeachersView.as_view(), name="teachers"),
|
re_path(r'^teachers$', TeacherListCreateView.as_view(), name="teacher_list_create"),
|
||||||
re_path(r'^teacher$', TeacherView.as_view(), name="teacher"),
|
re_path(r'^teachers/(?P<id>[0-9]+)', TeacherDetailView.as_view(), name="teacher_detail"),
|
||||||
re_path(r'^teacher/([0-9]+)$', TeacherView.as_view(), name="teacher"),
|
|
||||||
|
|
||||||
re_path(r'^schoolClasses$', ClassesView.as_view(), name="schoolClasses"),
|
re_path(r'^schoolClasses$', SchoolClassListCreateView.as_view(), name="school_class_list_create"),
|
||||||
re_path(r'^schoolClass$', ClasseView.as_view(), name="schoolClass"),
|
re_path(r'^schoolClasses/(?P<id>[0-9]+)', SchoolClassDetailView.as_view(), name="school_class_detail"),
|
||||||
re_path(r'^schoolClass/([0-9]+)$', ClasseView.as_view(), name="schoolClass"),
|
|
||||||
|
|
||||||
re_path(r'^plannings$', PlanningsView.as_view(), name="plannings"),
|
re_path(r'^plannings$', PlanningListCreateView.as_view(), name="planninglist_create"),
|
||||||
re_path(r'^planning$', PlanningView.as_view(), name="planning"),
|
re_path(r'^plannings/(?P<id>[0-9]+)$', PlanningDetailView.as_view(), name="planning_detail"),
|
||||||
re_path(r'^planning/([0-9]+)$', PlanningView.as_view(), name="planning"),
|
|
||||||
|
|
||||||
re_path(r'^fees/(?P<_filter>[a-zA-z]+)$', FeesView.as_view(), name="fees"),
|
re_path(r'^fees$', FeeListCreateView.as_view(), name="fee_list_create"),
|
||||||
re_path(r'^fee$', FeeView.as_view(), name="fee"),
|
re_path(r'^fees/(?P<id>[0-9]+)$', FeeDetailView.as_view(), name="fee_detail"),
|
||||||
re_path(r'^fee/([0-9]+)$', FeeView.as_view(), name="fee"),
|
|
||||||
|
|
||||||
re_path(r'^discounts/(?P<_filter>[a-zA-z]+)$$', DiscountsView.as_view(), name="discounts"),
|
re_path(r'^discounts$', DiscountListCreateView.as_view(), name="discount_list_create"),
|
||||||
re_path(r'^discount$', DiscountView.as_view(), name="discount"),
|
re_path(r'^discounts/(?P<id>[0-9]+)$', DiscountDetailView.as_view(), name="discount_detail"),
|
||||||
re_path(r'^discount/([0-9]+)$', DiscountView.as_view(), name="discount"),
|
|
||||||
|
|
||||||
re_path(r'^paymentPlans/(?P<_filter>[a-zA-z]+)$', PaymentPlansView.as_view(), name="paymentPlans"),
|
re_path(r'^paymentPlans$', PaymentPlanListCreateView.as_view(), name="payment_plan_list_create"),
|
||||||
re_path(r'^paymentPlan$', PaymentPlanView.as_view(), name="paymentPlan"),
|
re_path(r'^paymentPlans/(?P<id>[0-9]+)$', PaymentPlanDetailView.as_view(), name="payment_plan_detail"),
|
||||||
re_path(r'^paymentPlan/([0-9]+)$', PaymentPlanView.as_view(), name="paymentPlan"),
|
|
||||||
|
|
||||||
re_path(r'^paymentModes/(?P<_filter>[a-zA-z]+)$', PaymentModesView.as_view(), name="paymentModes"),
|
re_path(r'^paymentModes$', PaymentModeListCreateView.as_view(), name="payment_mode_list_create"),
|
||||||
re_path(r'^paymentMode$', PaymentModeView.as_view(), name="paymentMode"),
|
re_path(r'^paymentModes/(?P<id>[0-9]+)$', PaymentModeDetailView.as_view(), name="payment_mode_detail"),
|
||||||
re_path(r'^paymentMode/([0-9]+)$', PaymentModeView.as_view(), name="paymentMode"),
|
|
||||||
|
|
||||||
re_path(r'^establishments$', EstablishmentsView.as_view(), name="establishments"),
|
|
||||||
re_path(r'^establishment$', EstablishmentView.as_view(), name='establishment'),
|
|
||||||
re_path(r'^establishment/([0-9]+)$', EstablishmentView.as_view(), name='establishment')
|
|
||||||
|
|
||||||
|
re_path(r'^establishments$', EstablishmentListCreateView.as_view(), name='establishment_list_create'),
|
||||||
|
re_path(r'^establishments/(?P<id>[0-9]+)$', EstablishmentDetailView.as_view(), name="establishment_detail"),
|
||||||
]
|
]
|
||||||
@ -3,58 +3,60 @@ from django.views.decorators.csrf import ensure_csrf_cookie, csrf_protect
|
|||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from rest_framework.parsers import JSONParser
|
from rest_framework.parsers import JSONParser
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from django.core.cache import cache
|
from rest_framework import status
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from .models import (
|
||||||
from .models import Teacher, Speciality, SchoolClass, Planning, Discount, Fee, PaymentPlan, PaymentMode, Establishment
|
Teacher,
|
||||||
from .serializers import TeacherSerializer, SpecialitySerializer, SchoolClassSerializer, PlanningSerializer, DiscountSerializer, FeeSerializer, PaymentPlanSerializer, PaymentModeSerializer, EstablishmentSerializer
|
Speciality,
|
||||||
from N3wtSchool import bdd
|
SchoolClass,
|
||||||
|
Planning,
|
||||||
|
Discount,
|
||||||
|
Fee,
|
||||||
|
PaymentPlan,
|
||||||
|
PaymentMode,
|
||||||
|
Establishment
|
||||||
|
)
|
||||||
|
from .serializers import (
|
||||||
|
TeacherSerializer,
|
||||||
|
SpecialitySerializer,
|
||||||
|
SchoolClassSerializer,
|
||||||
|
PlanningSerializer,
|
||||||
|
DiscountSerializer,
|
||||||
|
FeeSerializer,
|
||||||
|
PaymentPlanSerializer,
|
||||||
|
PaymentModeSerializer,
|
||||||
|
EstablishmentSerializer
|
||||||
|
)
|
||||||
from N3wtSchool.bdd import delete_object, getAllObjects, getObject
|
from N3wtSchool.bdd import delete_object, getAllObjects, getObject
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
class SpecialitiesView(APIView):
|
class SpecialityListCreateView(APIView):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
specialitiesList = getAllObjects(Speciality)
|
specialitiesList = getAllObjects(Speciality)
|
||||||
specialities_serializer = SpecialitySerializer(specialitiesList, many=True)
|
specialities_serializer = SpecialitySerializer(specialitiesList, many=True)
|
||||||
return JsonResponse(specialities_serializer.data, safe=False)
|
return JsonResponse(specialities_serializer.data, safe=False)
|
||||||
|
|
||||||
def post(self, request):
|
|
||||||
specialities_data = JSONParser().parse(request)
|
|
||||||
all_valid = True
|
|
||||||
for speciality_data in specialities_data:
|
|
||||||
speciality_serializer = SpecialitySerializer(data=speciality_data)
|
|
||||||
if speciality_serializer.is_valid():
|
|
||||||
speciality_serializer.save()
|
|
||||||
else:
|
|
||||||
all_valid = False
|
|
||||||
break
|
|
||||||
if all_valid:
|
|
||||||
specialitiesList = getAllObjects(Speciality)
|
|
||||||
specialities_serializer = SpecialitySerializer(specialitiesList, many=True)
|
|
||||||
return JsonResponse(specialities_serializer.data, safe=False)
|
|
||||||
return JsonResponse(speciality_serializer.errors, safe=False)
|
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class SpecialityView(APIView):
|
|
||||||
def get(self, request, _id):
|
|
||||||
speciality = getObject(_objectName=Speciality, _columnName='id', _value=_id)
|
|
||||||
speciality_serializer = SpecialitySerializer(speciality)
|
|
||||||
return JsonResponse(speciality_serializer.data, safe=False)
|
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
speciality_data=JSONParser().parse(request)
|
speciality_data=JSONParser().parse(request)
|
||||||
speciality_serializer = SpecialitySerializer(data=speciality_data)
|
speciality_serializer = SpecialitySerializer(data=speciality_data)
|
||||||
|
|
||||||
if speciality_serializer.is_valid():
|
if speciality_serializer.is_valid():
|
||||||
speciality_serializer.save()
|
speciality_serializer.save()
|
||||||
return JsonResponse(speciality_serializer.data, safe=False, status=201)
|
return JsonResponse(speciality_serializer.data, safe=False, status=status.HTTP_201_CREATED)
|
||||||
|
|
||||||
return JsonResponse(speciality_serializer.errors, safe=False, status=400)
|
return JsonResponse(speciality_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def put(self, request, _id):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class SpecialityDetailView(APIView):
|
||||||
|
def get(self, request, id):
|
||||||
|
speciality = getObject(_objectName=Speciality, _columnName='id', _value=id)
|
||||||
|
speciality_serializer = SpecialitySerializer(speciality)
|
||||||
|
return JsonResponse(speciality_serializer.data, safe=False)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
speciality_data=JSONParser().parse(request)
|
speciality_data=JSONParser().parse(request)
|
||||||
speciality = getObject(_objectName=Speciality, _columnName='id', _value=_id)
|
speciality = getObject(_objectName=Speciality, _columnName='id', _value=id)
|
||||||
speciality_serializer = SpecialitySerializer(speciality, data=speciality_data)
|
speciality_serializer = SpecialitySerializer(speciality, data=speciality_data)
|
||||||
if speciality_serializer.is_valid():
|
if speciality_serializer.is_valid():
|
||||||
speciality_serializer.save()
|
speciality_serializer.save()
|
||||||
@ -62,25 +64,18 @@ class SpecialityView(APIView):
|
|||||||
|
|
||||||
return JsonResponse(speciality_serializer.errors, safe=False)
|
return JsonResponse(speciality_serializer.errors, safe=False)
|
||||||
|
|
||||||
def delete(self, request, _id):
|
def delete(self, request, id):
|
||||||
return delete_object(Speciality, _id)
|
return delete_object(Speciality, id)
|
||||||
|
|
||||||
class TeachersView(APIView):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class TeacherListCreateView(APIView):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
teachersList=getAllObjects(Teacher)
|
teachersList=getAllObjects(Teacher)
|
||||||
teachers_serializer=TeacherSerializer(teachersList, many=True)
|
teachers_serializer=TeacherSerializer(teachersList, many=True)
|
||||||
|
|
||||||
return JsonResponse(teachers_serializer.data, safe=False)
|
return JsonResponse(teachers_serializer.data, safe=False)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class TeacherView(APIView):
|
|
||||||
def get (self, request, _id):
|
|
||||||
teacher = getObject(_objectName=Teacher, _columnName='id', _value=_id)
|
|
||||||
teacher_serializer=TeacherSerializer(teacher)
|
|
||||||
|
|
||||||
return JsonResponse(teacher_serializer.data, safe=False)
|
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
teacher_data=JSONParser().parse(request)
|
teacher_data=JSONParser().parse(request)
|
||||||
teacher_serializer = TeacherSerializer(data=teacher_data)
|
teacher_serializer = TeacherSerializer(data=teacher_data)
|
||||||
@ -92,9 +87,18 @@ class TeacherView(APIView):
|
|||||||
|
|
||||||
return JsonResponse(teacher_serializer.errors, safe=False)
|
return JsonResponse(teacher_serializer.errors, safe=False)
|
||||||
|
|
||||||
def put(self, request, _id):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class TeacherDetailView(APIView):
|
||||||
|
def get (self, request, id):
|
||||||
|
teacher = getObject(_objectName=Teacher, _columnName='id', _value=id)
|
||||||
|
teacher_serializer=TeacherSerializer(teacher)
|
||||||
|
|
||||||
|
return JsonResponse(teacher_serializer.data, safe=False)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
teacher_data=JSONParser().parse(request)
|
teacher_data=JSONParser().parse(request)
|
||||||
teacher = getObject(_objectName=Teacher, _columnName='id', _value=_id)
|
teacher = getObject(_objectName=Teacher, _columnName='id', _value=id)
|
||||||
teacher_serializer = TeacherSerializer(teacher, data=teacher_data)
|
teacher_serializer = TeacherSerializer(teacher, data=teacher_data)
|
||||||
if teacher_serializer.is_valid():
|
if teacher_serializer.is_valid():
|
||||||
teacher_serializer.save()
|
teacher_serializer.save()
|
||||||
@ -102,46 +106,17 @@ class TeacherView(APIView):
|
|||||||
|
|
||||||
return JsonResponse(teacher_serializer.errors, safe=False)
|
return JsonResponse(teacher_serializer.errors, safe=False)
|
||||||
|
|
||||||
def delete(self, request, _id):
|
def delete(self, request, id):
|
||||||
return delete_object(Teacher, _id, related_field='associated_profile')
|
return delete_object(Teacher, id, related_field='associated_profile')
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
class ClassesView(APIView):
|
class SchoolClassListCreateView(APIView):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
classesList=getAllObjects(SchoolClass)
|
classesList=getAllObjects(SchoolClass)
|
||||||
classes_serializer=SchoolClassSerializer(classesList, many=True)
|
classes_serializer=SchoolClassSerializer(classesList, many=True)
|
||||||
return JsonResponse(classes_serializer.data, safe=False)
|
return JsonResponse(classes_serializer.data, safe=False)
|
||||||
|
|
||||||
def post(self, request):
|
|
||||||
all_valid = True
|
|
||||||
classes_data=JSONParser().parse(request)
|
|
||||||
for classe_data in classes_data:
|
|
||||||
classe_serializer = SchoolClassSerializer(data=classe_data)
|
|
||||||
|
|
||||||
if classe_serializer.is_valid():
|
|
||||||
classe_serializer.save()
|
|
||||||
else:
|
|
||||||
all_valid = False
|
|
||||||
break
|
|
||||||
|
|
||||||
if all_valid:
|
|
||||||
classesList = getAllObjects(SchoolClass)
|
|
||||||
classes_serializer = SchoolClassSerializer(classesList, many=True)
|
|
||||||
|
|
||||||
return JsonResponse(classes_serializer.data, safe=False)
|
|
||||||
|
|
||||||
return JsonResponse(classe_serializer.errors, safe=False)
|
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class ClasseView(APIView):
|
|
||||||
def get (self, request, _id):
|
|
||||||
schoolClass = getObject(_objectName=SchoolClass, _columnName='id', _value=_id)
|
|
||||||
classe_serializer=SchoolClassSerializer(schoolClass)
|
|
||||||
|
|
||||||
return JsonResponse(classe_serializer.data, safe=False)
|
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
classe_data=JSONParser().parse(request)
|
classe_data=JSONParser().parse(request)
|
||||||
classe_serializer = SchoolClassSerializer(data=classe_data)
|
classe_serializer = SchoolClassSerializer(data=classe_data)
|
||||||
@ -152,9 +127,18 @@ class ClasseView(APIView):
|
|||||||
|
|
||||||
return JsonResponse(classe_serializer.errors, safe=False)
|
return JsonResponse(classe_serializer.errors, safe=False)
|
||||||
|
|
||||||
def put(self, request, _id):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class SchoolClassDetailView(APIView):
|
||||||
|
def get (self, request, id):
|
||||||
|
schoolClass = getObject(_objectName=SchoolClass, _columnName='id', _value=id)
|
||||||
|
classe_serializer=SchoolClassSerializer(schoolClass)
|
||||||
|
|
||||||
|
return JsonResponse(classe_serializer.data, safe=False)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
classe_data=JSONParser().parse(request)
|
classe_data=JSONParser().parse(request)
|
||||||
schoolClass = getObject(_objectName=SchoolClass, _columnName='id', _value=_id)
|
schoolClass = getObject(_objectName=SchoolClass, _columnName='id', _value=id)
|
||||||
classe_serializer = SchoolClassSerializer(schoolClass, data=classe_data)
|
classe_serializer = SchoolClassSerializer(schoolClass, data=classe_data)
|
||||||
if classe_serializer.is_valid():
|
if classe_serializer.is_valid():
|
||||||
classe_serializer.save()
|
classe_serializer.save()
|
||||||
@ -162,27 +146,17 @@ class ClasseView(APIView):
|
|||||||
|
|
||||||
return JsonResponse(classe_serializer.errors, safe=False)
|
return JsonResponse(classe_serializer.errors, safe=False)
|
||||||
|
|
||||||
def delete(self, request, _id):
|
def delete(self, request, id):
|
||||||
return delete_object(SchoolClass, _id)
|
return delete_object(SchoolClass, id)
|
||||||
|
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
class PlanningsView(APIView):
|
class PlanningListCreateView(APIView):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
schedulesList=getAllObjects(Planning)
|
schedulesList=getAllObjects(Planning)
|
||||||
schedules_serializer=PlanningSerializer(schedulesList, many=True)
|
schedules_serializer=PlanningSerializer(schedulesList, many=True)
|
||||||
return JsonResponse(schedules_serializer.data, safe=False)
|
return JsonResponse(schedules_serializer.data, safe=False)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class PlanningView(APIView):
|
|
||||||
def get (self, request, _id):
|
|
||||||
planning = getObject(_objectName=Planning, _columnName='classe__id', _value=_id)
|
|
||||||
planning_serializer=PlanningSerializer(planning)
|
|
||||||
|
|
||||||
return JsonResponse(planning_serializer.data, safe=False)
|
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
planning_data=JSONParser().parse(request)
|
planning_data=JSONParser().parse(request)
|
||||||
planning_serializer = PlanningSerializer(data=planning_data)
|
planning_serializer = PlanningSerializer(data=planning_data)
|
||||||
@ -193,15 +167,24 @@ class PlanningView(APIView):
|
|||||||
|
|
||||||
return JsonResponse(planning_serializer.errors, safe=False)
|
return JsonResponse(planning_serializer.errors, safe=False)
|
||||||
|
|
||||||
def put(self, request, _id):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class PlanningDetailView(APIView):
|
||||||
|
def get (self, request, id):
|
||||||
|
planning = getObject(_objectName=Planning, _columnName='classe_id', _value=id)
|
||||||
|
planning_serializer=PlanningSerializer(planning)
|
||||||
|
|
||||||
|
return JsonResponse(planning_serializer.data, safe=False)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
planning_data = JSONParser().parse(request)
|
planning_data = JSONParser().parse(request)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
planning = Planning.objects.get(id=_id)
|
planning = Planning.objects.get(id=id)
|
||||||
except Planning.DoesNotExist:
|
except Planning.DoesNotExist:
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
except Planning.MultipleObjectsReturned:
|
except Planning.MultipleObjectsReturned:
|
||||||
return JsonResponse({'error': 'Multiple objects found'}, status=400)
|
return JsonResponse({'error': 'Multiple objects found'}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
planning_serializer = PlanningSerializer(planning, data=planning_data)
|
planning_serializer = PlanningSerializer(planning, data=planning_data)
|
||||||
|
|
||||||
@ -210,236 +193,228 @@ class PlanningView(APIView):
|
|||||||
return JsonResponse(planning_serializer.data, safe=False)
|
return JsonResponse(planning_serializer.data, safe=False)
|
||||||
|
|
||||||
return JsonResponse(planning_serializer.errors, safe=False)
|
return JsonResponse(planning_serializer.errors, safe=False)
|
||||||
|
|
||||||
|
def delete(self, request, id):
|
||||||
# Vues pour les réductions (Discount)
|
return delete_object(Planning, id)
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class DiscountsView(APIView):
|
|
||||||
def get(self, request, _filter, *args, **kwargs):
|
|
||||||
|
|
||||||
if _filter not in ['registration', 'tuition']:
|
|
||||||
return JsonResponse({"error": "Invalid type parameter. Must be 'registration' or 'tuition'."}, safe=False, status=400)
|
|
||||||
|
|
||||||
discount_type_value = 0 if _filter == 'registration' else 1
|
|
||||||
discounts = Discount.objects.filter(type=discount_type_value)
|
|
||||||
discounts_serializer = DiscountSerializer(discounts, many=True)
|
|
||||||
|
|
||||||
return JsonResponse(discounts_serializer.data, safe=False, status=200)
|
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
class DiscountView(APIView):
|
class FeeListCreateView(APIView):
|
||||||
def get(self, request, _id):
|
def get(self, request, *args, **kwargs):
|
||||||
try:
|
filter = request.GET.get('filter', '').strip()
|
||||||
discount = Discount.objects.get(id=_id)
|
fee_type_value = 0 if filter == 'registration' else 1
|
||||||
discount_serializer = DiscountSerializer(discount)
|
|
||||||
return JsonResponse(discount_serializer.data, safe=False)
|
|
||||||
except Discount.DoesNotExist:
|
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
|
||||||
|
|
||||||
def post(self, request):
|
|
||||||
discount_data = JSONParser().parse(request)
|
|
||||||
discount_serializer = DiscountSerializer(data=discount_data)
|
|
||||||
if discount_serializer.is_valid():
|
|
||||||
discount_serializer.save()
|
|
||||||
return JsonResponse(discount_serializer.data, safe=False, status=201)
|
|
||||||
return JsonResponse(discount_serializer.errors, safe=False, status=400)
|
|
||||||
|
|
||||||
def put(self, request, _id):
|
|
||||||
discount_data = JSONParser().parse(request)
|
|
||||||
try:
|
|
||||||
discount = Discount.objects.get(id=_id)
|
|
||||||
except Discount.DoesNotExist:
|
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
|
||||||
discount_serializer = DiscountSerializer(discount, data=discount_data, partial=True) # Utilisation de partial=True
|
|
||||||
if discount_serializer.is_valid():
|
|
||||||
discount_serializer.save()
|
|
||||||
return JsonResponse(discount_serializer.data, safe=False)
|
|
||||||
return JsonResponse(discount_serializer.errors, safe=False, status=400)
|
|
||||||
|
|
||||||
def delete(self, request, _id):
|
|
||||||
return delete_object(Discount, _id)
|
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class FeesView(APIView):
|
|
||||||
def get(self, request, _filter, *args, **kwargs):
|
|
||||||
|
|
||||||
if _filter not in ['registration', 'tuition']:
|
|
||||||
return JsonResponse({"error": "Invalid type parameter. Must be 'registration' or 'tuition'."}, safe=False, status=400)
|
|
||||||
|
|
||||||
fee_type_value = 0 if _filter == 'registration' else 1
|
|
||||||
fees = Fee.objects.filter(type=fee_type_value)
|
fees = Fee.objects.filter(type=fee_type_value)
|
||||||
fee_serializer = FeeSerializer(fees, many=True)
|
fee_serializer = FeeSerializer(fees, many=True)
|
||||||
|
|
||||||
return JsonResponse(fee_serializer.data, safe=False, status=200)
|
return JsonResponse(fee_serializer.data, safe=False, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class FeeView(APIView):
|
|
||||||
def get(self, request, _id):
|
|
||||||
try:
|
|
||||||
fee = Fee.objects.get(id=_id)
|
|
||||||
fee_serializer = FeeSerializer(fee)
|
|
||||||
return JsonResponse(fee_serializer.data, safe=False)
|
|
||||||
except Fee.DoesNotExist:
|
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
fee_data = JSONParser().parse(request)
|
fee_data = JSONParser().parse(request)
|
||||||
fee_serializer = FeeSerializer(data=fee_data)
|
fee_serializer = FeeSerializer(data=fee_data)
|
||||||
if fee_serializer.is_valid():
|
if fee_serializer.is_valid():
|
||||||
fee_serializer.save()
|
fee_serializer.save()
|
||||||
return JsonResponse(fee_serializer.data, safe=False, status=201)
|
return JsonResponse(fee_serializer.data, safe=False, status=status.HTTP_201_CREATED)
|
||||||
return JsonResponse(fee_serializer.errors, safe=False, status=400)
|
return JsonResponse(fee_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def put(self, request, _id):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class FeeDetailView(APIView):
|
||||||
|
def get(self, request, id):
|
||||||
|
try:
|
||||||
|
fee = Fee.objects.get(id=id)
|
||||||
|
fee_serializer = FeeSerializer(fee)
|
||||||
|
return JsonResponse(fee_serializer.data, safe=False)
|
||||||
|
except Fee.DoesNotExist:
|
||||||
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
fee_data = JSONParser().parse(request)
|
fee_data = JSONParser().parse(request)
|
||||||
try:
|
try:
|
||||||
fee = Fee.objects.get(id=_id)
|
fee = Fee.objects.get(id=id)
|
||||||
except Fee.DoesNotExist:
|
except Fee.DoesNotExist:
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
fee_serializer = FeeSerializer(fee, data=fee_data, partial=True)
|
fee_serializer = FeeSerializer(fee, data=fee_data, partial=True)
|
||||||
if fee_serializer.is_valid():
|
if fee_serializer.is_valid():
|
||||||
fee_serializer.save()
|
fee_serializer.save()
|
||||||
return JsonResponse(fee_serializer.data, safe=False)
|
return JsonResponse(fee_serializer.data, safe=False)
|
||||||
return JsonResponse(fee_serializer.errors, safe=False, status=400)
|
return JsonResponse(fee_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def delete(self, request, _id):
|
def delete(self, request, id):
|
||||||
return delete_object(Fee, _id)
|
return delete_object(Fee, id)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
class PaymentPlansView(APIView):
|
class DiscountListCreateView(APIView):
|
||||||
def get(self, request, _filter, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
filter = request.GET.get('filter', '').strip()
|
||||||
|
discount_type_value = 0 if filter == 'registration' else 1
|
||||||
|
discounts = Discount.objects.filter(type=discount_type_value)
|
||||||
|
discounts_serializer = DiscountSerializer(discounts, many=True)
|
||||||
|
|
||||||
|
return JsonResponse(discounts_serializer.data, safe=False, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
if _filter not in ['registration', 'tuition']:
|
def post(self, request):
|
||||||
return JsonResponse({"error": "Invalid type parameter. Must be 'registration' or 'tuition'."}, safe=False, status=400)
|
discount_data = JSONParser().parse(request)
|
||||||
|
discount_serializer = DiscountSerializer(data=discount_data)
|
||||||
type_value = 0 if _filter == 'registration' else 1
|
if discount_serializer.is_valid():
|
||||||
|
discount_serializer.save()
|
||||||
|
return JsonResponse(discount_serializer.data, safe=False, status=status.HTTP_201_CREATED)
|
||||||
|
return JsonResponse(discount_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class DiscountDetailView(APIView):
|
||||||
|
def get(self, request, id):
|
||||||
|
try:
|
||||||
|
discount = Discount.objects.get(id=id)
|
||||||
|
discount_serializer = DiscountSerializer(discount)
|
||||||
|
return JsonResponse(discount_serializer.data, safe=False)
|
||||||
|
except Discount.DoesNotExist:
|
||||||
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
|
discount_data = JSONParser().parse(request)
|
||||||
|
try:
|
||||||
|
discount = Discount.objects.get(id=id)
|
||||||
|
except Discount.DoesNotExist:
|
||||||
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
|
discount_serializer = DiscountSerializer(discount, data=discount_data, partial=True) # Utilisation de partial=True
|
||||||
|
if discount_serializer.is_valid():
|
||||||
|
discount_serializer.save()
|
||||||
|
return JsonResponse(discount_serializer.data, safe=False)
|
||||||
|
return JsonResponse(discount_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
def delete(self, request, id):
|
||||||
|
return delete_object(Discount, id)
|
||||||
|
|
||||||
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class PaymentPlanListCreateView(APIView):
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
filter = request.GET.get('filter', '').strip()
|
||||||
|
type_value = 0 if filter == 'registration' else 1
|
||||||
paymentPlans = PaymentPlan.objects.filter(type=type_value)
|
paymentPlans = PaymentPlan.objects.filter(type=type_value)
|
||||||
payment_plans_serializer = PaymentPlanSerializer(paymentPlans, many=True)
|
payment_plans_serializer = PaymentPlanSerializer(paymentPlans, many=True)
|
||||||
|
|
||||||
return JsonResponse(payment_plans_serializer.data, safe=False, status=200)
|
return JsonResponse(payment_plans_serializer.data, safe=False, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class PaymentPlanView(APIView):
|
|
||||||
def get(self, request, _id):
|
|
||||||
try:
|
|
||||||
payment_plan = PaymentPlan.objects.get(id=_id)
|
|
||||||
payment_plan_serializer = PaymentPlanSerializer(payment_plan)
|
|
||||||
return JsonResponse(payment_plan_serializer.data, safe=False)
|
|
||||||
except PaymentPlan.DoesNotExist:
|
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
payment_plan_data = JSONParser().parse(request)
|
payment_plan_data = JSONParser().parse(request)
|
||||||
payment_plan_serializer = PaymentPlanSerializer(data=payment_plan_data)
|
payment_plan_serializer = PaymentPlanSerializer(data=payment_plan_data)
|
||||||
if payment_plan_serializer.is_valid():
|
if payment_plan_serializer.is_valid():
|
||||||
payment_plan_serializer.save()
|
payment_plan_serializer.save()
|
||||||
return JsonResponse(payment_plan_serializer.data, safe=False, status=201)
|
return JsonResponse(payment_plan_serializer.data, safe=False, status=status.HTTP_201_CREATED)
|
||||||
return JsonResponse(payment_plan_serializer.errors, safe=False, status=400)
|
return JsonResponse(payment_plan_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def put(self, request, _id):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class PaymentPlanDetailView(APIView):
|
||||||
|
def get(self, request, id):
|
||||||
|
try:
|
||||||
|
payment_plan = PaymentPlan.objects.get(id=id)
|
||||||
|
payment_plan_serializer = PaymentPlanSerializer(payment_plan)
|
||||||
|
return JsonResponse(payment_plan_serializer.data, safe=False)
|
||||||
|
except PaymentPlan.DoesNotExist:
|
||||||
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
payment_plan_data = JSONParser().parse(request)
|
payment_plan_data = JSONParser().parse(request)
|
||||||
try:
|
try:
|
||||||
payment_plan = PaymentPlan.objects.get(id=_id)
|
payment_plan = PaymentPlan.objects.get(id=id)
|
||||||
except PaymentPlan.DoesNotExist:
|
except PaymentPlan.DoesNotExist:
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
payment_plan_serializer = PaymentPlanSerializer(payment_plan, data=payment_plan_data, partial=True)
|
payment_plan_serializer = PaymentPlanSerializer(payment_plan, data=payment_plan_data, partial=True)
|
||||||
if payment_plan_serializer.is_valid():
|
if payment_plan_serializer.is_valid():
|
||||||
payment_plan_serializer.save()
|
payment_plan_serializer.save()
|
||||||
return JsonResponse(payment_plan_serializer.data, safe=False)
|
return JsonResponse(payment_plan_serializer.data, safe=False)
|
||||||
return JsonResponse(payment_plan_serializer.errors, safe=False, status=400)
|
return JsonResponse(payment_plan_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def delete(self, request, _id):
|
def delete(self, request, id):
|
||||||
return delete_object(PaymentPlan, _id)
|
return delete_object(PaymentPlan, id)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
class PaymentModesView(APIView):
|
class PaymentModeListCreateView(APIView):
|
||||||
def get(self, request, _filter, *args, **kwargs):
|
def get(self, request):
|
||||||
|
filter = request.GET.get('filter', '').strip()
|
||||||
if _filter not in ['registration', 'tuition']:
|
type_value = 0 if filter == 'registration' else 1
|
||||||
return JsonResponse({"error": "Invalid type parameter. Must be 'registration' or 'tuition'."}, safe=False, status=400)
|
|
||||||
|
|
||||||
type_value = 0 if _filter == 'registration' else 1
|
|
||||||
paymentModes = PaymentMode.objects.filter(type=type_value)
|
paymentModes = PaymentMode.objects.filter(type=type_value)
|
||||||
payment_modes_serializer = PaymentModeSerializer(paymentModes, many=True)
|
payment_modes_serializer = PaymentModeSerializer(paymentModes, many=True)
|
||||||
|
|
||||||
return JsonResponse(payment_modes_serializer.data, safe=False, status=200)
|
return JsonResponse(payment_modes_serializer.data, safe=False, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class PaymentModeView(APIView):
|
|
||||||
def get(self, request, _id):
|
|
||||||
try:
|
|
||||||
payment_mode = PaymentMode.objects.get(id=_id)
|
|
||||||
payment_mode_serializer = PaymentModeSerializer(payment_mode)
|
|
||||||
return JsonResponse(payment_mode_serializer.data, safe=False)
|
|
||||||
except PaymentMode.DoesNotExist:
|
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
payment_mode_data = JSONParser().parse(request)
|
payment_mode_data = JSONParser().parse(request)
|
||||||
payment_mode_serializer = PaymentModeSerializer(data=payment_mode_data)
|
payment_mode_serializer = PaymentModeSerializer(data=payment_mode_data)
|
||||||
if payment_mode_serializer.is_valid():
|
if payment_mode_serializer.is_valid():
|
||||||
payment_mode_serializer.save()
|
payment_mode_serializer.save()
|
||||||
return JsonResponse(payment_mode_serializer.data, safe=False, status=201)
|
return JsonResponse(payment_mode_serializer.data, safe=False, status=status.HTTP_201_CREATED)
|
||||||
return JsonResponse(payment_mode_serializer.errors, safe=False, status=400)
|
return JsonResponse(payment_mode_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def put(self, request, _id):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class PaymentModeDetailView(APIView):
|
||||||
|
def get(self, request, id):
|
||||||
|
try:
|
||||||
|
payment_mode = PaymentMode.objects.get(id=id)
|
||||||
|
payment_mode_serializer = PaymentModeSerializer(payment_mode)
|
||||||
|
return JsonResponse(payment_mode_serializer.data, safe=False)
|
||||||
|
except PaymentMode.DoesNotExist:
|
||||||
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
payment_mode_data = JSONParser().parse(request)
|
payment_mode_data = JSONParser().parse(request)
|
||||||
try:
|
try:
|
||||||
payment_mode = PaymentMode.objects.get(id=_id)
|
payment_mode = PaymentMode.objects.get(id=id)
|
||||||
except PaymentMode.DoesNotExist:
|
except PaymentMode.DoesNotExist:
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
payment_mode_serializer = PaymentModeSerializer(payment_mode, data=payment_mode_data, partial=True)
|
payment_mode_serializer = PaymentModeSerializer(payment_mode, data=payment_mode_data, partial=True)
|
||||||
if payment_mode_serializer.is_valid():
|
if payment_mode_serializer.is_valid():
|
||||||
payment_mode_serializer.save()
|
payment_mode_serializer.save()
|
||||||
return JsonResponse(payment_mode_serializer.data, safe=False)
|
return JsonResponse(payment_mode_serializer.data, safe=False)
|
||||||
return JsonResponse(payment_mode_serializer.errors, safe=False, status=400)
|
return JsonResponse(payment_mode_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
def delete(self, request, id):
|
||||||
|
return delete_object(PaymentMode, id)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
class EstablishmentsView(APIView):
|
class EstablishmentListCreateView(APIView):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
establishments=getAllObjects(Establishment)
|
establishments=getAllObjects(Establishment)
|
||||||
establishments_serializer=EstablishmentSerializer(establishments, many=True)
|
establishments_serializer=EstablishmentSerializer(establishments, many=True)
|
||||||
return JsonResponse(establishments_serializer.data, safe=False, status=200)
|
return JsonResponse(establishments_serializer.data, safe=False, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@method_decorator(csrf_protect, name='dispatch')
|
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
|
||||||
class EstablishmentView(APIView):
|
|
||||||
def get(self, request, _id):
|
|
||||||
try:
|
|
||||||
establishment = Establishment.objects.get(id=_id)
|
|
||||||
establishment_serializer = EstablishmentSerializer(establishment)
|
|
||||||
return JsonResponse(establishment_serializer.data, safe=False)
|
|
||||||
except Establishment.DoesNotExist:
|
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
establishment_data = JSONParser().parse(request)
|
establishment_data = JSONParser().parse(request)
|
||||||
establishment_serializer = EstablishmentSerializer(data=establishment_data)
|
establishment_serializer = EstablishmentSerializer(data=establishment_data)
|
||||||
if establishment_serializer.is_valid():
|
if establishment_serializer.is_valid():
|
||||||
establishment_serializer.save()
|
establishment_serializer.save()
|
||||||
return JsonResponse(establishment_serializer.data, safe=False, status=201)
|
return JsonResponse(establishment_serializer.data, safe=False, status=status.HTTP_201_CREATED)
|
||||||
return JsonResponse(establishment_serializer.errors, safe=False, status=400)
|
return JsonResponse(establishment_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def put(self, request, _id):
|
@method_decorator(csrf_protect, name='dispatch')
|
||||||
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
|
class EstablishmentDetailView(APIView):
|
||||||
|
def get(self, request, id=None):
|
||||||
|
try:
|
||||||
|
establishment = Establishment.objects.get(id=id)
|
||||||
|
establishment_serializer = EstablishmentSerializer(establishment)
|
||||||
|
return JsonResponse(establishment_serializer.data, safe=False)
|
||||||
|
except Establishment.DoesNotExist:
|
||||||
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
def put(self, request, id):
|
||||||
establishment_data = JSONParser().parse(request)
|
establishment_data = JSONParser().parse(request)
|
||||||
try:
|
try:
|
||||||
establishment = Establishment.objects.get(id=_id)
|
establishment = Establishment.objects.get(id=id)
|
||||||
except Establishment.DoesNotExist:
|
except Establishment.DoesNotExist:
|
||||||
return JsonResponse({'error': 'No object found'}, status=404)
|
return JsonResponse({'error': 'No object found'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
establishment_serializer = EstablishmentSerializer(establishment, data=establishment_data, partial=True)
|
establishment_serializer = EstablishmentSerializer(establishment, data=establishment_data, partial=True)
|
||||||
if establishment_serializer.is_valid():
|
if establishment_serializer.is_valid():
|
||||||
establishment_serializer.save()
|
establishment_serializer.save()
|
||||||
return JsonResponse(establishment_serializer.data, safe=False)
|
return JsonResponse(establishment_serializer.data, safe=False)
|
||||||
return JsonResponse(establishment_serializer.errors, safe=False, status=400)
|
return JsonResponse(establishment_serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
def delete(self, request, _id):
|
def delete(self, request, id):
|
||||||
return delete_object(Establishment, _id)
|
return delete_object(Establishment, id)
|
||||||
@ -45,42 +45,42 @@ export const fetchSchedules = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const fetchRegistrationDiscounts = () => {
|
export const fetchRegistrationDiscounts = () => {
|
||||||
return fetch(`${BE_SCHOOL_DISCOUNTS_URL}/registration`)
|
return fetch(`${BE_SCHOOL_DISCOUNTS_URL}?filter=registration`)
|
||||||
.then(requestResponseHandler)
|
.then(requestResponseHandler)
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchTuitionDiscounts = () => {
|
export const fetchTuitionDiscounts = () => {
|
||||||
return fetch(`${BE_SCHOOL_DISCOUNTS_URL}/tuition`)
|
return fetch(`${BE_SCHOOL_DISCOUNTS_URL}?filter=tuition`)
|
||||||
.then(requestResponseHandler)
|
.then(requestResponseHandler)
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchRegistrationFees = () => {
|
export const fetchRegistrationFees = () => {
|
||||||
return fetch(`${BE_SCHOOL_FEES_URL}/registration`)
|
return fetch(`${BE_SCHOOL_FEES_URL}?filter=registration`)
|
||||||
.then(requestResponseHandler)
|
.then(requestResponseHandler)
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchTuitionFees = () => {
|
export const fetchTuitionFees = () => {
|
||||||
return fetch(`${BE_SCHOOL_FEES_URL}/tuition`)
|
return fetch(`${BE_SCHOOL_FEES_URL}?filter=tuition`)
|
||||||
.then(requestResponseHandler)
|
.then(requestResponseHandler)
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchRegistrationPaymentPlans = () => {
|
export const fetchRegistrationPaymentPlans = () => {
|
||||||
return fetch(`${BE_SCHOOL_PAYMENT_PLANS_URL}/registration`)
|
return fetch(`${BE_SCHOOL_PAYMENT_PLANS_URL}?filter=registration`)
|
||||||
.then(requestResponseHandler)
|
.then(requestResponseHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const fetchTuitionPaymentPlans = () => {
|
export const fetchTuitionPaymentPlans = () => {
|
||||||
return fetch(`${BE_SCHOOL_PAYMENT_PLANS_URL}/tuition`)
|
return fetch(`${BE_SCHOOL_PAYMENT_PLANS_URL}?filter=tuition`)
|
||||||
.then(requestResponseHandler)
|
.then(requestResponseHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const fetchRegistrationPaymentModes = () => {
|
export const fetchRegistrationPaymentModes = () => {
|
||||||
return fetch(`${BE_SCHOOL_PAYMENT_MODES_URL}/registration`)
|
return fetch(`${BE_SCHOOL_PAYMENT_MODES_URL}?filter=registration`)
|
||||||
.then(requestResponseHandler)
|
.then(requestResponseHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const fetchTuitionPaymentModes = () => {
|
export const fetchTuitionPaymentModes = () => {
|
||||||
return fetch(`${BE_SCHOOL_PAYMENT_MODES_URL}/tuition`)
|
return fetch(`${BE_SCHOOL_PAYMENT_MODES_URL}?filter=tuition`)
|
||||||
.then(requestResponseHandler)
|
.then(requestResponseHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import TeacherItem from '@/components/Structure/Configuration/TeacherItem';
|
|||||||
import MultiSelect from '@/components/MultiSelect';
|
import MultiSelect from '@/components/MultiSelect';
|
||||||
import LevelLabel from '@/components/CustomLabels/LevelLabel';
|
import LevelLabel from '@/components/CustomLabels/LevelLabel';
|
||||||
import { DndProvider, HTML5Backend, useDrop } from 'react-dnd';
|
import { DndProvider, HTML5Backend, useDrop } from 'react-dnd';
|
||||||
|
import { ESTABLISHMENT_ID } from '@/utils/Url';
|
||||||
|
|
||||||
const ItemTypes = {
|
const ItemTypes = {
|
||||||
TEACHER: 'teacher',
|
TEACHER: 'teacher',
|
||||||
@ -148,8 +149,8 @@ const ClassesSection = ({ classes, setClasses, teachers, handleCreate, handleEdi
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleAddClass = () => {
|
const handleAddClass = () => {
|
||||||
setNewClass({ id: Date.now(), atmosphere_name: '', age_range: '', levels: [], number_of_students: '', school_year: '', teachers: [] });
|
setNewClass({ id: Date.now(), atmosphere_name: '', age_range: '', levels: [], number_of_students: '', school_year: '', teachers: [], establishment: ESTABLISHMENT_ID });
|
||||||
setFormData({ atmosphere_name: '', age_range: '', levels: [], number_of_students: '', school_year: '', teachers: [] });
|
setFormData({ atmosphere_name: '', age_range: '', levels: [], number_of_students: '', school_year: '', teachers: [], establishment: ESTABLISHMENT_ID });
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleChange = (e) => {
|
const handleChange = (e) => {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import SpecialitiesSection from '@/components/Structure/Configuration/Specialiti
|
|||||||
import TeachersSection from '@/components/Structure/Configuration/TeachersSection';
|
import TeachersSection from '@/components/Structure/Configuration/TeachersSection';
|
||||||
import ClassesSection from '@/components/Structure/Configuration/ClassesSection';
|
import ClassesSection from '@/components/Structure/Configuration/ClassesSection';
|
||||||
import { ClassesProvider } from '@/context/ClassesContext';
|
import { ClassesProvider } from '@/context/ClassesContext';
|
||||||
import { BE_SCHOOL_SPECIALITY_URL, BE_SCHOOL_TEACHER_URL, BE_SCHOOL_SCHOOLCLASS_URL } from '@/utils/Url';
|
import { BE_SCHOOL_SPECIALITIES_URL, BE_SCHOOL_TEACHERS_URL, BE_SCHOOL_SCHOOLCLASSES_URL } from '@/utils/Url';
|
||||||
|
|
||||||
const StructureManagement = ({ specialities, setSpecialities, teachers, setTeachers, classes, setClasses, handleCreate, handleEdit, handleDelete }) => {
|
const StructureManagement = ({ specialities, setSpecialities, teachers, setTeachers, classes, setClasses, handleCreate, handleEdit, handleDelete }) => {
|
||||||
return (
|
return (
|
||||||
@ -13,9 +13,9 @@ const StructureManagement = ({ specialities, setSpecialities, teachers, setTeach
|
|||||||
<SpecialitiesSection
|
<SpecialitiesSection
|
||||||
specialities={specialities}
|
specialities={specialities}
|
||||||
setSpecialities={setSpecialities}
|
setSpecialities={setSpecialities}
|
||||||
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_SPECIALITY_URL}`, newData, setSpecialities)}
|
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_SPECIALITIES_URL}`, newData, setSpecialities)}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_SPECIALITY_URL}`, id, updatedData, setSpecialities)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_SPECIALITIES_URL}`, id, updatedData, setSpecialities)}
|
||||||
handleDelete={(id) => handleDelete(`${BE_SCHOOL_SPECIALITY_URL}`, id, setSpecialities)}
|
handleDelete={(id) => handleDelete(`${BE_SCHOOL_SPECIALITIES_URL}`, id, setSpecialities)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-4/5 p-4 bg-white rounded-lg shadow-md">
|
<div className="w-4/5 p-4 bg-white rounded-lg shadow-md">
|
||||||
@ -23,9 +23,9 @@ const StructureManagement = ({ specialities, setSpecialities, teachers, setTeach
|
|||||||
teachers={teachers}
|
teachers={teachers}
|
||||||
setTeachers={setTeachers}
|
setTeachers={setTeachers}
|
||||||
specialities={specialities}
|
specialities={specialities}
|
||||||
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_TEACHER_URL}`, newData, setTeachers)}
|
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_TEACHERS_URL}`, newData, setTeachers)}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_TEACHER_URL}`, id, updatedData, setTeachers)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_TEACHERS_URL}`, id, updatedData, setTeachers)}
|
||||||
handleDelete={(id) => handleDelete(`${BE_SCHOOL_TEACHER_URL}`, id, setTeachers)}
|
handleDelete={(id) => handleDelete(`${BE_SCHOOL_TEACHERS_URL}`, id, setTeachers)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-full p-4 bg-white rounded-lg shadow-md">
|
<div className="w-full p-4 bg-white rounded-lg shadow-md">
|
||||||
@ -33,9 +33,9 @@ const StructureManagement = ({ specialities, setSpecialities, teachers, setTeach
|
|||||||
classes={classes}
|
classes={classes}
|
||||||
setClasses={setClasses}
|
setClasses={setClasses}
|
||||||
teachers={teachers}
|
teachers={teachers}
|
||||||
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_SCHOOLCLASS_URL}`, newData, setClasses)}
|
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_SCHOOLCLASSES_URL}`, newData, setClasses)}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_SCHOOLCLASS_URL}`, id, updatedData, setClasses)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_SCHOOLCLASSES_URL}`, id, updatedData, setClasses)}
|
||||||
handleDelete={(id) => handleDelete(`${BE_SCHOOL_SCHOOLCLASS_URL}`, id, setClasses)}
|
handleDelete={(id) => handleDelete(`${BE_SCHOOL_SCHOOLCLASSES_URL}`, id, setClasses)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</ClassesProvider>
|
</ClassesProvider>
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import { DndProvider } from 'react-dnd';
|
|||||||
import { AnimatePresence, motion } from 'framer-motion';
|
import { AnimatePresence, motion } from 'framer-motion';
|
||||||
import PlanningClassView from '@/components/Structure/Planning/PlanningClassView';
|
import PlanningClassView from '@/components/Structure/Planning/PlanningClassView';
|
||||||
import SpecialitiesList from '@/components/Structure/Planning/SpecialitiesList';
|
import SpecialitiesList from '@/components/Structure/Planning/SpecialitiesList';
|
||||||
import { BE_SCHOOL_PLANNING_URL } from '@/utils/Url';
|
import { BE_SCHOOL_PLANNINGS_URL } from '@/utils/Url';
|
||||||
import { useClasses } from '@/context/ClassesContext';
|
import { useClasses } from '@/context/ClassesContext';
|
||||||
import { ClasseFormProvider } from '@/context/ClasseFormContext';
|
import { ClasseFormProvider } from '@/context/ClasseFormContext';
|
||||||
import TabsStructure from '@/components/Structure/Configuration/TabsStructure';
|
import TabsStructure from '@/components/Structure/Configuration/TabsStructure';
|
||||||
@ -89,7 +89,7 @@ const ScheduleManagement = ({ handleUpdatePlanning, classes }) => {
|
|||||||
const planningId = selectedClass.plannings_read.find(planning => planning.niveau === selectedLevel)?.planning.id;
|
const planningId = selectedClass.plannings_read.find(planning => planning.niveau === selectedLevel)?.planning.id;
|
||||||
if (planningId) {
|
if (planningId) {
|
||||||
console.log('newSchedule : ', newSchedule)
|
console.log('newSchedule : ', newSchedule)
|
||||||
handleUpdatePlanning(BE_SCHOOL_PLANNING_URL, planningId, newSchedule);
|
handleUpdatePlanning(BE_SCHOOL_PLANNINGS_URL, planningId, newSchedule);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react';
|
|||||||
import SelectChoice from '@/components/SelectChoice';
|
import SelectChoice from '@/components/SelectChoice';
|
||||||
import { useClasses } from '@/context/ClassesContext';
|
import { useClasses } from '@/context/ClassesContext';
|
||||||
import { useClasseForm } from '@/context/ClasseFormContext';
|
import { useClasseForm } from '@/context/ClasseFormContext';
|
||||||
import { BE_SCHOOL_PLANNING_URL } from '@/utils/Url';
|
import { BE_SCHOOL_PLANNINGS_URL } from '@/utils/Url';
|
||||||
import { BookOpen, Users } from 'lucide-react';
|
import { BookOpen, Users } from 'lucide-react';
|
||||||
|
|
||||||
const SpecialityEventModal = ({ isOpen, onClose, selectedCell, existingEvent, handleUpdatePlanning, classe }) => {
|
const SpecialityEventModal = ({ isOpen, onClose, selectedCell, existingEvent, handleUpdatePlanning, classe }) => {
|
||||||
@ -114,7 +114,7 @@ const SpecialityEventModal = ({ isOpen, onClose, selectedCell, existingEvent, ha
|
|||||||
const planningId = updatedPlanning ? updatedPlanning.planning.id : null;
|
const planningId = updatedPlanning ? updatedPlanning.planning.id : null;
|
||||||
console.log("id : ", planningId)
|
console.log("id : ", planningId)
|
||||||
if (planningId) {
|
if (planningId) {
|
||||||
handleUpdatePlanning(BE_SCHOOL_PLANNING_URL, planningId, updatedPlanning.emploiDuTemps);
|
handleUpdatePlanning(BE_SCHOOL_PLANNINGS_URL, planningId, updatedPlanning.emploiDuTemps);
|
||||||
}
|
}
|
||||||
|
|
||||||
onClose();
|
onClose();
|
||||||
|
|||||||
@ -5,6 +5,8 @@ import Popup from '@/components/Popup';
|
|||||||
import CheckBox from '@/components/CheckBox';
|
import CheckBox from '@/components/CheckBox';
|
||||||
import InputText from '@/components/InputText';
|
import InputText from '@/components/InputText';
|
||||||
|
|
||||||
|
import { ESTABLISHMENT_ID } from '@/utils/Url';
|
||||||
|
|
||||||
const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, handleDelete, type, subscriptionMode = false, selectedDiscounts, handleDiscountSelection }) => {
|
const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, handleDelete, type, subscriptionMode = false, selectedDiscounts, handleDiscountSelection }) => {
|
||||||
const [editingDiscount, setEditingDiscount] = useState(null);
|
const [editingDiscount, setEditingDiscount] = useState(null);
|
||||||
const [newDiscount, setNewDiscount] = useState(null);
|
const [newDiscount, setNewDiscount] = useState(null);
|
||||||
@ -17,7 +19,7 @@ const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, h
|
|||||||
const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
|
const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
|
||||||
|
|
||||||
const handleAddDiscount = () => {
|
const handleAddDiscount = () => {
|
||||||
setNewDiscount({ id: Date.now(), name: '', amount: '', description: '', discount_type: 0, type: type });
|
setNewDiscount({ id: Date.now(), name: '', amount: '', description: '', discount_type: 0, type: type, establishment: ESTABLISHMENT_ID });
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleRemoveDiscount = (id) => {
|
const handleRemoveDiscount = (id) => {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import FeesSection from '@/components/Structure/Tarification/FeesSection';
|
|||||||
import DiscountsSection from '@/components/Structure/Tarification/DiscountsSection';
|
import DiscountsSection from '@/components/Structure/Tarification/DiscountsSection';
|
||||||
import PaymentPlanSelector from '@/components/PaymentPlanSelector';
|
import PaymentPlanSelector from '@/components/PaymentPlanSelector';
|
||||||
import PaymentModeSelector from '@/components/PaymentModeSelector';
|
import PaymentModeSelector from '@/components/PaymentModeSelector';
|
||||||
import { BE_SCHOOL_FEE_URL, BE_SCHOOL_DISCOUNT_URL, BE_SCHOOL_PAYMENT_PLAN_URL, BE_SCHOOL_PAYMENT_MODE_URL } from '@/utils/Url';
|
import { BE_SCHOOL_FEES_URL, BE_SCHOOL_DISCOUNTS_URL, BE_SCHOOL_PAYMENT_PLANS_URL, BE_SCHOOL_PAYMENT_MODES_URL } from '@/utils/Url';
|
||||||
import { set } from 'lodash';
|
import { set } from 'lodash';
|
||||||
|
|
||||||
const FeesManagement = ({ registrationDiscounts,
|
const FeesManagement = ({ registrationDiscounts,
|
||||||
@ -54,9 +54,9 @@ const FeesManagement = ({ registrationDiscounts,
|
|||||||
fees={registrationFees}
|
fees={registrationFees}
|
||||||
setFees={setRegistrationFees}
|
setFees={setRegistrationFees}
|
||||||
discounts={registrationDiscounts}
|
discounts={registrationDiscounts}
|
||||||
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_FEE_URL}`, newData, setRegistrationFees)}
|
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_FEES_URL}`, newData, setRegistrationFees)}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_FEE_URL}`, id, updatedData, setRegistrationFees)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_FEES_URL}`, id, updatedData, setRegistrationFees)}
|
||||||
handleDelete={(id) => handleDelete(`${BE_SCHOOL_FEE_URL}`, id, setRegistrationFees)}
|
handleDelete={(id) => handleDelete(`${BE_SCHOOL_FEES_URL}`, id, setRegistrationFees)}
|
||||||
type={0}
|
type={0}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -64,9 +64,9 @@ const FeesManagement = ({ registrationDiscounts,
|
|||||||
<DiscountsSection
|
<DiscountsSection
|
||||||
discounts={registrationDiscounts}
|
discounts={registrationDiscounts}
|
||||||
setDiscounts={setRegistrationDiscounts}
|
setDiscounts={setRegistrationDiscounts}
|
||||||
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_DISCOUNT_URL}`, newData, setRegistrationDiscounts)}
|
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_DISCOUNTS_URL}`, newData, setRegistrationDiscounts)}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_DISCOUNT_URL}`, id, updatedData, setRegistrationDiscounts)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_DISCOUNTS_URL}`, id, updatedData, setRegistrationDiscounts)}
|
||||||
handleDelete={(id) => handleDelete(`${BE_SCHOOL_DISCOUNT_URL}`, id, setRegistrationDiscounts)}
|
handleDelete={(id) => handleDelete(`${BE_SCHOOL_DISCOUNTS_URL}`, id, setRegistrationDiscounts)}
|
||||||
onDiscountDelete={(id) => handleDiscountDelete(id, 0)}
|
onDiscountDelete={(id) => handleDiscountDelete(id, 0)}
|
||||||
type={0}
|
type={0}
|
||||||
/>
|
/>
|
||||||
@ -75,7 +75,7 @@ const FeesManagement = ({ registrationDiscounts,
|
|||||||
<PaymentPlanSelector
|
<PaymentPlanSelector
|
||||||
paymentPlans={registrationPaymentPlans}
|
paymentPlans={registrationPaymentPlans}
|
||||||
setPaymentPlans={setRegistrationPaymentPlans}
|
setPaymentPlans={setRegistrationPaymentPlans}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_PAYMENT_PLAN_URL}`, id, updatedData, setRegistrationPaymentPlans)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_PAYMENT_PLANS_URL}`, id, updatedData, setRegistrationPaymentPlans)}
|
||||||
type={0}
|
type={0}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -83,7 +83,7 @@ const FeesManagement = ({ registrationDiscounts,
|
|||||||
<PaymentModeSelector
|
<PaymentModeSelector
|
||||||
paymentModes={registrationPaymentModes}
|
paymentModes={registrationPaymentModes}
|
||||||
setPaymentModes={setRegistrationPaymentModes}
|
setPaymentModes={setRegistrationPaymentModes}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_PAYMENT_MODE_URL}`, id, updatedData, setRegistrationPaymentModes)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_PAYMENT_MODES_URL}`, id, updatedData, setRegistrationPaymentModes)}
|
||||||
type={0}
|
type={0}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -97,9 +97,9 @@ const FeesManagement = ({ registrationDiscounts,
|
|||||||
fees={tuitionFees}
|
fees={tuitionFees}
|
||||||
setFees={setTuitionFees}
|
setFees={setTuitionFees}
|
||||||
discounts={tuitionDiscounts}
|
discounts={tuitionDiscounts}
|
||||||
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_FEE_URL}`, newData, setTuitionFees)}
|
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_FEES_URL}`, newData, setTuitionFees)}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_FEE_URL}`, id, updatedData, setTuitionFees)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_FEES_URL}`, id, updatedData, setTuitionFees)}
|
||||||
handleDelete={(id) => handleDelete(`${BE_SCHOOL_FEE_URL}`, id, setTuitionFees)}
|
handleDelete={(id) => handleDelete(`${BE_SCHOOL_FEES_URL}`, id, setTuitionFees)}
|
||||||
type={1}
|
type={1}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -107,9 +107,9 @@ const FeesManagement = ({ registrationDiscounts,
|
|||||||
<DiscountsSection
|
<DiscountsSection
|
||||||
discounts={tuitionDiscounts}
|
discounts={tuitionDiscounts}
|
||||||
setDiscounts={setTuitionDiscounts}
|
setDiscounts={setTuitionDiscounts}
|
||||||
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_DISCOUNT_URL}`, newData, setTuitionDiscounts)}
|
handleCreate={(newData) => handleCreate(`${BE_SCHOOL_DISCOUNTS_URL}`, newData, setTuitionDiscounts)}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_DISCOUNT_URL}`, id, updatedData, setTuitionDiscounts)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_DISCOUNTS_URL}`, id, updatedData, setTuitionDiscounts)}
|
||||||
handleDelete={(id) => handleDelete(`${BE_SCHOOL_DISCOUNT_URL}`, id, setTuitionDiscounts)}
|
handleDelete={(id) => handleDelete(`${BE_SCHOOL_DISCOUNTS_URL}`, id, setTuitionDiscounts)}
|
||||||
onDiscountDelete={(id) => handleDiscountDelete(id, 1)}
|
onDiscountDelete={(id) => handleDiscountDelete(id, 1)}
|
||||||
type={1}
|
type={1}
|
||||||
/>
|
/>
|
||||||
@ -118,7 +118,7 @@ const FeesManagement = ({ registrationDiscounts,
|
|||||||
<PaymentPlanSelector
|
<PaymentPlanSelector
|
||||||
paymentPlans={tuitionPaymentPlans}
|
paymentPlans={tuitionPaymentPlans}
|
||||||
setPaymentPlans={setTuitionPaymentPlans}
|
setPaymentPlans={setTuitionPaymentPlans}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_PAYMENT_PLAN_URL}`, id, updatedData, setRegistrationPaymentPlans)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_PAYMENT_PLANS_URL}`, id, updatedData, setRegistrationPaymentPlans)}
|
||||||
type={1}
|
type={1}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -126,7 +126,7 @@ const FeesManagement = ({ registrationDiscounts,
|
|||||||
<PaymentModeSelector
|
<PaymentModeSelector
|
||||||
paymentModes={tuitionPaymentModes}
|
paymentModes={tuitionPaymentModes}
|
||||||
setPaymentModes={setTuitionPaymentModes}
|
setPaymentModes={setTuitionPaymentModes}
|
||||||
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_PAYMENT_MODE_URL}`, id, updatedData, setTuitionPaymentModes)}
|
handleEdit={(id, updatedData) => handleEdit(`${BE_SCHOOL_PAYMENT_MODES_URL}`, id, updatedData, setTuitionPaymentModes)}
|
||||||
type={1}
|
type={1}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -5,6 +5,8 @@ import Popup from '@/components/Popup';
|
|||||||
import CheckBox from '@/components/CheckBox';
|
import CheckBox from '@/components/CheckBox';
|
||||||
import InputText from '@/components/InputText';
|
import InputText from '@/components/InputText';
|
||||||
|
|
||||||
|
import { ESTABLISHMENT_ID } from '@/utils/Url';
|
||||||
|
|
||||||
const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handleDelete, type, subscriptionMode = false, selectedFees, handleFeeSelection }) => {
|
const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handleDelete, type, subscriptionMode = false, selectedFees, handleFeeSelection }) => {
|
||||||
const [editingFee, setEditingFee] = useState(null);
|
const [editingFee, setEditingFee] = useState(null);
|
||||||
const [newFee, setNewFee] = useState(null);
|
const [newFee, setNewFee] = useState(null);
|
||||||
@ -23,7 +25,7 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleAddFee = () => {
|
const handleAddFee = () => {
|
||||||
setNewFee({ id: Date.now(), name: '', base_amount: '', description: '', validity_start_date: '', validity_end_date: '', discounts: [], type: type });
|
setNewFee({ id: Date.now(), name: '', base_amount: '', description: '', validity_start_date: '', validity_end_date: '', discounts: [], type: type, establishment: ESTABLISHMENT_ID });
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleRemoveFee = (id) => {
|
const handleRemoveFee = (id) => {
|
||||||
|
|||||||
@ -25,23 +25,15 @@ export const BE_SUBSCRIPTION_LAST_GUARDIAN_ID_URL = `${BASE_URL}/Subscriptions/l
|
|||||||
|
|
||||||
|
|
||||||
//GESTION ECOLE
|
//GESTION ECOLE
|
||||||
export const BE_SCHOOL_SPECIALITY_URL = `${BASE_URL}/School/speciality`
|
|
||||||
export const BE_SCHOOL_SPECIALITIES_URL = `${BASE_URL}/School/specialities`
|
export const BE_SCHOOL_SPECIALITIES_URL = `${BASE_URL}/School/specialities`
|
||||||
export const BE_SCHOOL_SCHOOLCLASS_URL = `${BASE_URL}/School/schoolClass`
|
|
||||||
export const BE_SCHOOL_SCHOOLCLASSES_URL = `${BASE_URL}/School/schoolClasses`
|
export const BE_SCHOOL_SCHOOLCLASSES_URL = `${BASE_URL}/School/schoolClasses`
|
||||||
export const BE_SCHOOL_TEACHER_URL = `${BASE_URL}/School/teacher`
|
|
||||||
export const BE_SCHOOL_TEACHERS_URL = `${BASE_URL}/School/teachers`
|
export const BE_SCHOOL_TEACHERS_URL = `${BASE_URL}/School/teachers`
|
||||||
export const BE_SCHOOL_PLANNING_URL = `${BASE_URL}/School/planning`
|
|
||||||
export const BE_SCHOOL_PLANNINGS_URL = `${BASE_URL}/School/plannings`
|
export const BE_SCHOOL_PLANNINGS_URL = `${BASE_URL}/School/plannings`
|
||||||
export const BE_SCHOOL_FEE_URL = `${BASE_URL}/School/fee`;
|
|
||||||
export const BE_SCHOOL_FEES_URL = `${BASE_URL}/School/fees`;
|
export const BE_SCHOOL_FEES_URL = `${BASE_URL}/School/fees`;
|
||||||
export const BE_SCHOOL_DISCOUNT_URL = `${BASE_URL}/School/discount`;
|
|
||||||
export const BE_SCHOOL_DISCOUNTS_URL = `${BASE_URL}/School/discounts`;
|
export const BE_SCHOOL_DISCOUNTS_URL = `${BASE_URL}/School/discounts`;
|
||||||
export const BE_SCHOOL_PAYMENT_PLAN_URL = `${BASE_URL}/School/paymentPlan`;
|
|
||||||
export const BE_SCHOOL_PAYMENT_PLANS_URL = `${BASE_URL}/School/paymentPlans`;
|
export const BE_SCHOOL_PAYMENT_PLANS_URL = `${BASE_URL}/School/paymentPlans`;
|
||||||
export const BE_SCHOOL_PAYMENT_MODE_URL = `${BASE_URL}/School/paymentMode`;
|
|
||||||
export const BE_SCHOOL_PAYMENT_MODES_URL = `${BASE_URL}/School/paymentModes`;
|
export const BE_SCHOOL_PAYMENT_MODES_URL = `${BASE_URL}/School/paymentModes`;
|
||||||
export const BE_SCHOOL_ESTABLISHMENT_URL = `${BASE_URL}/School/establishment`;
|
export const BE_SCHOOL_ESTABLISHMENT_URL = `${BASE_URL}/School/establishments`;
|
||||||
|
|
||||||
// En attendant la gestion des sessions
|
// En attendant la gestion des sessions
|
||||||
export const ESTABLISHMENT_ID = 1;
|
export const ESTABLISHMENT_ID = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user