from django.shortcuts import render

# Create your views here.

# Create your views here.
from django.http import JsonResponse

from EduSystemServer.utils import ResponseUtil
from .models import Teacher
from django.views.decorators.csrf import csrf_exempt
from io import BytesIO
from django.http.multipartparser import MultiPartParser
from django.http import QueryDict
from course.models import Course,SC
from Student.models import Student
import json

@csrf_exempt
def teacher(request):
    if request.method == "POST":
        try:
            request_data = json.loads(request.body)
            teacher_information = Teacher.objects.filter(tid=request_data.get("tid")).first()
            teacher_information.name = request_data.get('name')
            teacher_information.sex = request_data.get('sex')
            teacher_information.title = request_data.get('title')
            teacher_information.education = request_data.get('education')
            teacher_information.dept = request_data.get('dept')
            teacher_information.username = request_data.get("username")
            teacher_information.password = request_data.get("password")
            teacher_information.save()
            return JsonResponse(ResponseUtil.ok(teacher_information.to_dict(), "更新成功"))
        except Exception as E:
            return JsonResponse(ResponseUtil.error(E))

    elif request.method == "GET":
        name = request.GET.get('name')
        sex = request.GET.get('sex')
        title = request.GET.get('title')
        education = request.GET.get('education')
        dept = request.GET.get('dept')
        data = []
        if name:
            filtered = Teacher.objects.filter(name=name)
            for teacher_x in filtered:
                data.append(teacher_x.to_dict())
        elif sex:
            filtered = Teacher.objects.filter(sex=sex)
            for teacher_x in filtered:
                data.append(teacher_x.to_dict())
        elif title:
            filtered = Teacher.objects.filter(title=title)
            for teacher_x in filtered:
                data.append(teacher_x.to_dict())
        elif education:
            filtered = Teacher.objects.filter(education=education)
            for teacher_x in filtered:
                data.append(teacher_x.to_dict())
        elif dept:
            filtered = Teacher.objects.filter(dept=dept)
            for teacher_x in filtered:
                data.append(teacher_x.to_dict())
        else:
            all_objects = Teacher.objects.all()
            for teacher_x in all_objects:
                data.append(teacher_x.to_dict())
        return JsonResponse({'code': 200, 'msg': 'success', 'data': data}, safe=False)

    elif request.method == "DELETE":
        parser = MultiPartParser(request.META, BytesIO(request.body), request.upload_handlers, request.encoding)
        posdict = parser.parse()
        print(posdict)
        tid = int(posdict[0]['tid'])
        print(tid)
        try:
            info = Teacher.objects.filter(tid=tid).get().to_dict()
            Teacher.objects.filter(tid=tid).delete()
            response = {"code": 200, "message": "删除成功!", "data": info}
            return JsonResponse(response)
        except:
            response = {"code": 200, "message": "删除失败,未找到老师信息!"}
            return JsonResponse(response)
    elif request.method == 'PUT':
        put = MultiPartParser(request.META, request, request.upload_handlers, request.encoding).parse()
        # request.PUT = put[0]
        print(put)
        tid = put[0]['tid']
        name = put[0]['name']
        sex = put[0]['sex']
        title = put[0]['title']
        education = put[0]['education']
        dept = put[0]['dept']
        Teacher.objects.filter(tid=tid).update(name=name)
        Teacher.objects.filter(tid=tid).update(sex=sex)
        Teacher.objects.filter(tid=tid).update(title=title)
        Teacher.objects.filter(tid=tid).update(education=education)
        Teacher.objects.filter(tid=tid).update(dept=dept)
        data = Teacher.objects.filter(tid=tid)[0].to_dict()
        return JsonResponse({'code': 200, 'msg': 'success','data':data}, safe=False)



def delete(request):
    tid = request.GET.get('tid')
    try:
        Teacher.objects.filter(tid = tid).delete()
        return JsonResponse({'code': 200, 'msg': 'success'}, safe=False)
    except:
        return JsonResponse({'code': 200, 'msg': '删除失败'}, safe=False)

@csrf_exempt
def teaching_resources(request):
    pass
@csrf_exempt
def student_performance_management(request):
    if request.method == "POST":
        sid = request.POST.get('sid')
        cid = request.POST.get('cid')
        middle_grade = float(request.POST.get('middle_grade'))
        end_grade = float(request.POST.get('end_grade'))
        if middle_grade <= 100 and middle_grade >= 0:
            sc = SC()
            sid = Student.objects.get(sid=sid)
            print(sid)
            cid = Course.objects.get(cid=cid)
            sc.sid = sid
            sc.cid = cid
            sc.middle_grade = middle_grade
            sc.end_grade=end_grade
            sc.save()
            return JsonResponse({'code': 200, 'msg': 'success'}, safe=False)
        else:
            return JsonResponse({'code': 200, 'msg': '成绩输入有误'}, safe=False)