# from django.shortcuts import get_object_or_404, redirect, render
# from JobMatcher.models import *
# from django.db.models import Q
# from django.db.models import Avg, Sum
# from JobMatcher.forms import *

# from io import BytesIO
# from django.http import HttpResponse
# from django.template.loader import get_template
# from django.views import View
# from xhtml2pdf import pisa

# from django.views.decorators.http import require_http_methods
 

# # Create your views here.

# def admin(request):
#     jobseeker = JobSeeker.objects.all()
#     jobseeker_count = jobseeker.count()
    
#     return render(request,'dashboard/admin_page.html', {'jobseeker':jobseeker, 'jobseeker_count':jobseeker_count})

# def admin_employer(request):
#     Employer = employer.objects.all()
#     employer_count = Employer.count()
#     return render(request,'dashboard/admin_employer.html', {'Employer':Employer, 'employer_count':employer_count})


# def main_page(request):
#     jobseeker = JobSeeker.objects.all()
#     jobseeker_count = jobseeker.count()
#     Employer = employer.objects.all()
#     employer_count = Employer.count()
#     males = JobSeeker.objects.filter(gender__startswith='Male')
#     male_count = males.count()
#     females = JobSeeker.objects.filter(gender__startswith='Female')
#     female_count = females.count()

#     gender_list = ['Male', 'Female']
#     gender_number = [int(male_count), int(female_count)]

#     for user in jobseeker:
#         name = user.full_name

#     context={'name':name,'gender_list':gender_list,'gender_number':gender_number,'jobseeker':jobseeker, 'jobseeker_count':jobseeker_count,'Employer':Employer, 'employer_count':employer_count}
#     return render(request, 'dashboard/index.html', context)

# def office_home(request):
#     return render(request, 'dashboard/officer_home.html')

# def analytics(request):
    
#     jobseeker = JobSeeker.objects.all()
#     jobseeker_count = jobseeker.count()
#     Employer = employer.objects.all()
#     employer_count = Employer.count()
#     males = JobSeeker.objects.filter(gender__startswith='Male')
#     male_count = males.count()
#     females = JobSeeker.objects.filter(gender__startswith='Female')
#     female_count = females.count()

#     gender_list = ['Male', 'Female']
#     male_number = int(male_count)
#     female_number = int(female_count)

#     labels = []
#     data = []

#     total_avg = JobSeeker.objects.aggregate(avg=Avg('age'))['avg']
#     t = str(total_avg)
#     if total_avg >= 10:
#         avg = t[:2]
#         print(t[:2])
#     else:
#         avg = t[0]
#         print(t[0])
#     # total_age = list(JobSeeker.objects.aggregate(Sum('age')).values())[0]

#     for user in jobseeker:
#         name = user.full_name



#     context={'name':name, 'avg':avg,'total_avg':total_avg, 'female_number':female_number,'labels':labels, 'data':data,'gender_list':gender_list,'male_number':male_number,'jobseeker':jobseeker, 'jobseeker_count':jobseeker_count,'Employer':Employer, 'employer_count':employer_count}

#     return render(request, 'dashboard/analytics.html', context)


# def selfservice_jobseeker(request):
#     jobseeker = JobSeeker.objects.all()
#     jobseeker_count = jobseeker.count()
    
#     return render(request,'dashboard/selfservice_jobseeker.html', {'jobseeker':jobseeker, 'jobseeker_count':jobseeker_count})

# def selfservice_hiringmanager(request):
#     Employer = employer.objects.all()
    
#     return render(request,'dashboard/selfservice_hiringmanager.html', {'Employer':Employer})

# def assisted_jobseeker(request):
#     job= JobSeeker.objects.all()    
    
#     return render(request,'dashboard/callcenter_jobseeker.html', {'job':job})

# def assisted_hiringmanager(request):
#     Employer = employer.objects.all()
    
#     return render(request,'dashboard/callcenter_hiringmanager.html', {'Employer':Employer})



# def fillin_jobseeker(request):
#     # dictionary for initial data with
#     # field names as keys
#     context ={}
 
#     # add the dictionary during initialization
#     form = JobSeekerForm(request.POST or None)
#     if form.is_valid():
#         form.save()
         
#     context['form']= form
#     return render(request, "dashboard/fill_in_jobseeker.html", context)

# def fillin_employer(request):
#     # dictionary for initial data with
#     # field names as keys
#     context ={}
 
#     # add the dictionary during initialization
#     form = employerForm(request.POST or None)
#     if form.is_valid():
#         form.save()
         
#     context['form']= form
#     return render(request, "dashboard/fill_in_employer.html", context)



# def render_to_pdf(template_src, context_dict={}):
# 	template = get_template(template_src)
# 	html  = template.render(context_dict)
# 	result = BytesIO()
# 	pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
# 	if not pdf.err:
# 		return HttpResponse(result.getvalue(), content_type='application/pdf')
# 	return None




# #Opens up page as PDF
# class View_Jobseeker_PDF(View):
#     def get(self, request,pk,*args, **kwargs):
#         template=get_template("dashboard/pdf.html")
#         jobSeeker = get_object_or_404(JobSeeker, id=pk)
#         context={
#             "jobseekers":jobSeeker
#         }
#         html=template.render(context)
#         pdf=render_to_pdf("dashboard/pdf.html",context)
#         return HttpResponse(pdf,content_type='application/pdf')
            
        
         
        
		

# class Download_Jobseeker_PDF(View):
#     def get(self, request,pk,*args, **kwargs):
#         jobSeeker = get_object_or_404(JobSeeker, id=pk)
#         context={
#             "jobseekers":jobSeeker
#         }
#         pdf=render_to_pdf('dashboard/pdf.html', context)
#         response = HttpResponse(pdf, content_type='application/pdf')
#         filename = "Invoice_%s.pdf" %("12341231")
#         content = "attachment; filename='%s'" %(filename)
#         response['Content-Disposition'] = content
#         return response
    
# class View_Employer_PDF(View):
#     def get(self, request,pk,*args, **kwargs):
#         template=get_template("dashboard/pdf.html")
#         Employer = get_object_or_404(employer, id=pk)
#         context={
#             "Employer":Employer
#         }
#         html=template.render(context)
#         pdf=render_to_pdf("dashboard/pdf.html",context)
#         return HttpResponse(pdf,content_type='application/pdf')
            
        
         
        
		

# class Download_Employer_PDF(View):
#     def get(self, request,pk,*args, **kwargs):
#         Employer = get_object_or_404(employer, id=pk)
#         context={
#             "Employer":Employer
#         }
#         pdf=render_to_pdf('app/pdf_template.html', context)
#         response = HttpResponse(pdf, content_type='application/pdf')
#         filename = "Invoice_%s.pdf" %("12341231")
#         content = "attachment; filename='%s'" %(filename)
#         response['Content-Disposition'] = content
#         return response
    
    
# @require_http_methods(['POST'])
# def close_status(request,pk):
#     epm=employer.objects.filter(id=pk).update(status=False)
#     return redirect("/callcenter_hiringmanager")

# @require_http_methods(['POST'])
# def open_status(request,pk):
#     epm=employer.objects.filter(id=pk).update(status=True)
#     return redirect('/callcenter_hiringmanager')

from django.shortcuts import render,redirect
from JobMatcher.models import *
from django.db.models import Q
from django.db.models import Avg, Sum
from django.views.decorators.http import require_http_methods
from django.http import JsonResponse,HttpResponse,HttpResponseRedirect

# Create your views here.

def admin(request):
    jobseeker = JobSeeker.objects.all()
    jobseeker_count = jobseeker.count()
    
    return render(request,'dashboard/admin_page.html', {'jobseeker':jobseeker, 'jobseeker_count':jobseeker_count})

def admin_employer(request):
    Employer = employer.objects.all()
    employer_count = Employer.count()
    return render(request,'dashboard/admin_employer.html', {'Employer':Employer, 'employer_count':employer_count})


def main_page(request):
    jobseeker = JobSeeker.objects.all()
    jobseeker_count = jobseeker.count()
    Employer = employer.objects.all()
    employer_count = Employer.count()
    males = JobSeeker.objects.filter(gender__startswith='Male')
    male_count = males.count()
    females = JobSeeker.objects.filter(gender__startswith='Female')
    female_count = females.count()

    gender_list = ['Male', 'Female']
    gender_number = [int(male_count), int(female_count)]

    for user in jobseeker:
        name = user.full_name

    context={'name':name,'gender_list':gender_list,'gender_number':gender_number,'jobseeker':jobseeker, 'jobseeker_count':jobseeker_count,'Employer':Employer, 'employer_count':employer_count}
    return render(request, 'dashboard/index.html', context)



def employers_form_details(request):
    Employer=employer.objects.all()    
    context={'Employer':Employer}
    return render(request,'dashboard/employers_form_details.html',context)

@require_http_methods(['POST'])
def close_status(request,pk):
    epm=employer.objects.filter(id=pk).update(status=False)
    return redirect("/employers_form_details")

@require_http_methods(['POST'])
def open_status(request,pk):
    epm=employer.objects.filter(id=pk).update(status=True)
    return redirect('/employers_form_details')

    



def office_home(request):
    return render(request, 'dashboard/officer_home.html')

def analytics(request):
    
    jobseeker = JobSeeker.objects.all()
    jobseeker_count = jobseeker.count()
    Employer = employer.objects.all()
    employer_count = Employer.count()
    males = JobSeeker.objects.filter(gender__startswith='Male')
    male_count = males.count()
    females = JobSeeker.objects.filter(gender__startswith='Female')
    female_count = females.count()

    gender_list = ['Male', 'Female']
    male_number = int(male_count)
    female_number = int(female_count)

    labels = []
    data = []

    total_avg = JobSeeker.objects.aggregate(avg=Avg('age'))['avg']
    t = str(total_avg)
    if total_avg >= 10:
        avg = t[:2]
        print(t[:2])
    else:
        avg = t[0]
        print(t[0])
    # total_age = list(JobSeeker.objects.aggregate(Sum('age')).values())[0]

    for user in jobseeker:
        name = user.full_name



    context={'name':name, 'avg':avg,'total_avg':total_avg, 'female_number':female_number,'labels':labels, 'data':data,'gender_list':gender_list,'male_number':male_number,'jobseeker':jobseeker, 'jobseeker_count':jobseeker_count,'Employer':Employer, 'employer_count':employer_count}

    return render(request, 'dashboard/analytics.html', context)


def assisted_jobseeker(request):
    return render(request, 'dashboard/assisted_jobseeker.html')

def jobseeker(request):
    jobseeker=JobSeeker.objects.all()
    return render(request, 'dashboard/jobseeker.html',{"jobseeker":jobseeker})

def assisted_hiringmanager(request):
    return render(request, 'dashboard/assisted_hiringmanager.html')

def hiringmanager(request):
    Employer=employer.objects.all()
    return render(request, 'dashboard/hiringmanager.html',{"Employer":Employer})


