BAMU_Hiring / mysite / hiring / views.py
views.py
Raw
from django.shortcuts import render
from django.http import HttpResponse
from django.db import transaction
from django.contrib import messages
from .models import UserDetails, Languages, GeneralInfo, EducationalQualification , Experience, AdministrativeExperience, RefferedInstitutions, PublishedBooks, Publications
from .models import ResearchProjects, InternationalBodies, Workshops,OrganisingEvents, Leadership, ResearchExperience
from .models import StatutoryWorkingExp, QualityIssues, YouthHandlingExp,Skills, References,ResearchParams,Awards
from django.contrib.auth.models import User
from django.template import loader
from django import template
from django.shortcuts import get_object_or_404, redirect, render
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required, user_passes_test
from django.views.decorators.csrf import csrf_protect
from datetime import datetime
from collections import defaultdict
from django.contrib.auth.tokens import default_token_generator
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from django.utils.encoding import force_bytes ,force_str
from django.contrib.sites.shortcuts import get_current_site
from django.template.loader import render_to_string
from django.core.mail import send_mail
from mysite.settings import EMAIL_HOST_USER
from django.contrib.auth.tokens import default_token_generator
from django.utils.html import strip_tags
from django.core.mail import EmailMultiAlternatives



def loginpage(request, message=None):
    context = {'segment': 'index'}
    if message is not None:
        context[message[0]] = message[1]
    html_template = loader.get_template('accounts/login.html')
    return HttpResponse(html_template.render(context, request))


def loginuser(request):
    msg = []  
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(request, username=username, password=password)

        if user is not None:
            login(request, user)
            messages.success(request, "Login Successful")
            msg = ["success_message", "Login Successful"]
            return index(request, message=msg)
        else:
            messages.error(request, "Invalid Username Or Password")
            msg = ['error_message', "Invalid Username Or Password"]
            return loginpage(request, message=msg)
    else:
        messages.error(request, "Invalid Username Or Password")
        msg = ['error_message', "Invalid Username Or Password"]
        return loginpage(request, message=msg)


@login_required(login_url='login.html')
@csrf_protect
def logoutuser(request):
    msg = None
    logout(request)
    messages.success(request, "Logged Out Successfully")
    msg = ["success_message", "Logged Out Successfully"]
    return loginpage(request, message=msg)

def registerpage(request, message=None):
    context = {'segment': 'index'}
    if message is not None:
        context[message[0]] = message[1]
    html_template = loader.get_template('accounts/register.html')
    return HttpResponse(html_template.render(context, request))


def registeruser(request):
    msg = None
    if request.method == 'POST':
        username = request.POST.get('email')
        password1 = request.POST.get('password1')
        password2 = request.POST.get('password2')
        
        if User.objects.filter(username=username).exists():
            messages.error(request, "Email already exists")
            msg = ['error_message', "Email already exists"]
            return registerpage(request, message=msg)

        if password1 != password2:
            messages.error(request, "Passwords do not match")
            msg = ['error_message', "Passwords do not match"]
            return registerpage(request, message=msg)

        if password1 == password2:
            user = User.objects.create_user(username, username, password1)
            user.is_active = False  
            user.save()
            current_site = get_current_site(request)
            title = 'Activate Your Account'
            message = render_to_string('accounts/confirmation_email.html', {
                'user': user,
                'domain': current_site.domain,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)),
                'token': default_token_generator.make_token(user),
            })

            # Plain text version of the email (without HTML tags)
            plain_message = strip_tags(message)
            email = EmailMultiAlternatives(title, plain_message, EMAIL_HOST_USER, [user.email])
            email.attach_alternative(message, 'text/html')
            email.send()
            # token = default_token_generator.make_token(user)
            # uid = urlsafe_base64_encode(force_bytes(user.pk))
            # current_site = get_current_site(request)
            # email_subject = 'Activate your account'
            # email_message = render_to_string(
            #     'accounts/confirmation_email.html',
            #     {
            #         'user': user,
            #         'domain': current_site.domain,
            #         'uid': uid,
            #         'token': token,
            #     }
            # )
            # send_mail(email_subject, email_message, EMAIL_HOST_USER, [user.email])
            
            messages.success(request, "Account created successfully. Please check your email for confirmation.")
            msg = ['success_message', "Account created successfully. Please check your email for confirmation."]
            return registerpage(request, message=msg)

    return render(request, 'registration/register.html')

def activate_user(request, uidb64, token):
    try:
        uid = force_str(urlsafe_base64_decode(uidb64))
        user = User.objects.get(pk=uid)
        if default_token_generator.check_token(user, token):
            user.is_active = True
            user.save()
            messages.success(request, "Account activated successfully. You can now log in.")
        else:
            messages.error(request, "Invalid activation link.")
    except (User.DoesNotExist, ValueError, TypeError):
        messages.error(request, "Invalid activation link.")
    return redirect('login')

def passwordresetpage(request, message=None):
    context = {'segment': 'index'}
    if message is not None:
        context[message[0]] = message[1]
    html_template = loader.get_template('accounts/password_reset.html')
    return HttpResponse(html_template.render(context, request))


def password_reset(request):
    if request.method == 'POST':
        email = request.POST.get('email')
        print("*****************************")
        print("*******************************")
        print(email)
        user=User.objects.get(username=email) 

        if user is not None:
            current_site = get_current_site(request)
            title = 'Password Reset Request'
            message = render_to_string('accounts/password_reset_email.html', {
                'user': user,
                'domain': current_site.domain,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)),
                'token': default_token_generator.make_token(user),
            })

            # Plain text version of the email (without HTML tags)
            plain_message = strip_tags(message)
            email = EmailMultiAlternatives(title, plain_message, EMAIL_HOST_USER, [email])
            email.attach_alternative(message, 'text/html')
            email.send()
            return redirect('password_reset_done')
        else:
            messages.error(request, 'No user found with this email.')
            return redirect('password_reset')
    return render(request, 'accounts/password_reset.html')


def password_reset_done(request):
    return render(request, 'accounts/password_reset_done.html')


def password_reset_confirm(request, uidb64, token, message=None):
    try:
        uid = force_str(urlsafe_base64_decode(uidb64))
        user = User.objects.get(pk=uid)
    except (TypeError, ValueError, OverflowError, User.DoesNotExist):
        user = None

    if user is not None and default_token_generator.check_token(user, token):
        if request.method == 'POST':
            new_password = request.POST.get('new_password')
            confirm_password = request.POST.get('confirm_password')
            if (new_password != confirm_password):
                messages.error(request, "Password Does Not Match")
                msg = ['error_message', "Password Does Not Match."]
                return render(request, 'accounts/password_reset_confirm.html', {'user': user})
            user.set_password(new_password)
            user.save()
            return redirect('password_reset_complete')

        return render(request, 'accounts/password_reset_confirm.html', {'user': user})
    else:
        return HttpResponse('Invalid password reset link.')


def password_reset_complete(request):
    return render(request, 'accounts/password_reset_complete.html')

@login_required(login_url='login.html')
@csrf_protect
def index(request,message=None):
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    context = {'segment': 'home'}
    if message is not None:
        context[message[0]] = message[1]
    html_template = loader.get_template('hiring/home.html')
    return HttpResponse(html_template.render(context, request))

@login_required(login_url='login.html')
@csrf_protect
def homePage(request,message=None):
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    context = {'segment': 'home'}
    if message is not None:
        context[message[0]] = message[1]
    html_template = loader.get_template('hiring/home.html')
    return HttpResponse(html_template.render(context, request))

@login_required(login_url='login.html')
@csrf_protect
def aboutPage(request,message=None):
    context = {'segment': 'about'}
    if message is not None:
        context[message[0]] = message[1]
    html_template = loader.get_template('hiring/about.html')
    return HttpResponse(html_template.render(context, request))

@login_required(login_url='login.html')
@csrf_protect
def contactPage(request,message=None):
    context = {'segment': 'contact'}
    if message is not None:
        context[message[0]] = message[1]
    html_template = loader.get_template('hiring/contact.html')
    return HttpResponse(html_template.render(context, request))


@login_required(login_url='login.html')
@csrf_protect
def generalinfopage(request, message=None):
    user_db = None
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    if request.method == 'POST':
        try:
            
            django_user_id = request.user
            profile_photo = request.FILES.get('profile_photo')
            full_name = request.POST.get('full_name')
            dob = request.POST.get('dob')
            
            present_post = request.POST.get('present_post')
            designation_grade = request.POST.get('designation_grade')
            date_from_held = request.POST.get('date_from_held')
            name_of_organisation = request.POST.get('name_of_organisation')
            address_of_organisation = request.POST.get('address_of_organisation')
            
            address = request.POST.get('address') # address for communication
            telephone_number = request.POST.get('telephone_number')
            office_contact = request.POST.get('office_contact')
            residence = request.POST.get('residence')
            mobile_number = request.POST.get('mobile_number')
            # number_of_languages = int(request.POST.get('number_of_languages'))
            # languages = []
            # while number_of_languages > 0:
            #     languages.append(request.POST.get('language' + str(number_of_languages - 1)))
            #     number_of_languages -= 1
            
            
            case_pending = request.POST.get('case_pending').lower() ## yes or no
            if case_pending == 'yes':
                case_pending = True
                case_details = request.POST.get('case_details')
            else:
                case_pending = False
                case_details = ''

            if profile_photo:
                if profile_photo.name.split('.')[-1] not in ['jpg', 'jpeg', 'png'] \
                    or profile_photo.content_type.split('/')[0] != 'image' \
                    or profile_photo.size > 200 * 1024:
                    messages.error(request, 'Please upload a valid image file of size less than 200 KB.')
                    return render(request, 'hiring/general_info.html')

            if UserDetails.objects.filter(django_user_id=django_user_id).exists():
                user_db=UserDetails.objects.get(django_user_id=django_user_id)
                Languages.objects.filter(user_id=user_db).delete()
                if profile_photo:
                    user_db.profile_photo = profile_photo
                user_db.full_name = full_name
                user_db.dob = dob
                user_db.mobile_number = mobile_number
                user_db.office_contact = office_contact
                user_db.case_pending = case_pending
                user_db.case_details = case_details
                user_db.residence = residence
                user_db.telephone_number = telephone_number
                user_db.address = address
                user_db.save()
                GeneralInfo.objects.filter(user_id=user_db).update(
                    present_post = present_post,
                    designation_grade = designation_grade,
                    date_from_held = date_from_held,
                    name_of_organisation = name_of_organisation,
                    address_of_organisation = address_of_organisation,
                )
                # submitted_languages = []
                # number_of_displayed_languages = int(request.POST.get('number_of_displayed_languages'))
                # for i in range(number_of_displayed_languages):
                #     submitted_language = request.POST.get(f'language{i}')
                #     if submitted_language:
                #         submitted_languages.append(submitted_language)
                Languages.objects.filter(user_id=user_db).delete()

                
                # for language in submitted_languages:
                #     Languages.objects.create(user_id=user_db, language=language)
                

            else:
                db_user_detail = UserDetails.objects.create(
                    django_user_id = django_user_id,
                    profile_photo = profile_photo,
                    full_name = full_name,
                    dob = dob,
                    mobile_number = mobile_number,
                    office_contact = office_contact,
                    case_pending = case_pending,
                    case_details = case_details,
                    residence = residence,
                    telephone_number = telephone_number,
                    address = address,
                )
                user_db = db_user_detail
                GeneralInfo.objects.create(
                    user_id = user_db,
                    present_post = present_post,
                    designation_grade = designation_grade,
                    date_from_held = date_from_held,
                    name_of_organisation = name_of_organisation,
                    address_of_organisation = address_of_organisation,
                )
                
                
                messages.success(request, 'Your form has been submitted successfully!')
            
            number_of_displayed_languages = int(request.POST.get('number_of_displayed_languages',1))
            print("********************************")
            print("********************************")
            print(number_of_displayed_languages)
            for i in range(0,number_of_displayed_languages):
                language=request.POST.get(f'language_{i}')
                if user_db:
                    Languages.objects.create(user_id=user_db, language=language)
            return redirect('qualification1.html')
        except Exception as e:
            print(e)
            messages.error(request, 'There was some error in submitting your form. Please try again.' + str(e))
            return render(request, 'hiring/general_info.html')
    else:
        try:
            user_details = UserDetails.objects.get(django_user_id=request.user)
            general_info = GeneralInfo.objects.get(user_id=user_details)
            languages = Languages.objects.filter(user_id=user_details)

            context = {
                'segment': 'page1',
                'user_details': user_details,
                'general_info': general_info,
                'languages': languages,
            }

            if message is not None:
                context[message[0]] = message[1]

            return render(request, 'hiring/general_info.html', context)

        except (UserDetails.DoesNotExist, GeneralInfo.DoesNotExist):
            return render(request, 'hiring/general_info.html')



@login_required(login_url='login.html')
@csrf_protect
def qualification1page(request, message=None):
    msg=[]
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    if request.method == 'POST':
        try:
            user_db = request.user.id
            user_id = UserDetails.objects.get(django_user_id=user_db)
            if UserDetails.objects.filter(django_user_id=user_db).exists():
                EducationalQualification.objects.filter(user_id=user_id).delete()
                Experience.objects.filter(user_id=user_id).delete()
            
            for exam_type in ['secondary', 'higher_secondary', 'graduation', 'post_graduation', 'phd']:
                board = request.POST.get(f'board_{exam_type}')
                institute = request.POST.get(f'institute_{exam_type}')
                subjects = request.POST.get(f'subjects_{exam_type}')
                year = request.POST.get(f'year_{exam_type}')
                
                division = request.POST.get(f'division_{exam_type}')
                marks =request.POST.get(f'marks_{exam_type}')
                print("********************************")
                print(marks,exam_type)
                educational_qualification = EducationalQualification(
                    user_id=user_id,
                    exam_or_degree=exam_type,
                    board_or_university=board,
                    institute=institute,
                    subjects_or_specialization=subjects,
                    year_of_passing=year,
                    division_or_cgpa=division,
                    marks_in_percentage=marks,
                )

                educational_qualification.save()
                
                if exam_type == 'phd':
                    break

            qualification_count = int(request.POST.get('qualification_count'))
            print("********************************")
            print("********************************")
            print("qualification",qualification_count)
            for i in range(qualification_count):
                # print("count",i)
                exam_type = request.POST.get(f'examination_{i}')
                board = request.POST.get(f'board_{i}')
                institute = request.POST.get(f'institute_{i}')
                subjects = request.POST.get(f'subjects_{i}')
                year = request.POST.get(f'year_{i}')
                
                division = request.POST.get(f'division_{i}')
                marks =request.POST.get(f'marks_{i}')
                print("********************************")
                print(marks)
                if not exam_type and not board and not institute and not subjects and not year and not division and not marks:
                    break
                educational_qualification = EducationalQualification(
                    user_id=user_id,
                    exam_or_degree=exam_type,
                    board_or_university=board,
                    institute=institute,
                    subjects_or_specialization=subjects,
                    year_of_passing=year,
                    division_or_cgpa=division,
                    marks_in_percentage=marks,
                )

                educational_qualification.save()

            experience_no= int(request.POST.get('experience_count',1))
            print("********************************")
            print("********************************")
            print(experience_no)
            for i in range(experience_no):
                university = request.POST.get(f'university_{i}')
                post = request.POST.get(f'post_{i}')
                exp_from = request.POST.get(f'exp_from_{i}')
                exp_to = request.POST.get(f'exp_to_{i}')
                exp_years = request.POST.get(f'exp_years_{i}')
                exp_months = request.POST.get(f'exp_months_{i}')
                print("********************************")
                print("********************************")
                print(university,post,exp_from,exp_to,exp_years,exp_months)
                experience = Experience(
                    user_id=user_id,
                    university=university,
                    post=post,
                    from_date=exp_from,
                    to_date=exp_to,
                )
                experience.save()

            # Redirect to a success page or another view
            messages.success(request, "form submitted successfully.")
            msg = ['success_message', "form Subitted successfully."]
            return redirect('qualification2.html')
        except Exception as e:
            message.error(request,"Something went wrong. Please try again.")
            return qualification1page(request,message=msg)
    else:
        try:
            user_id = request.user.id
            user_details = UserDetails.objects.get(django_user_id=user_id)
            educational_qualifications = EducationalQualification.objects.filter(user_id=user_details)

            # Organize qualifications by type
            qualifications_by_type = defaultdict(list)
            for qualification in educational_qualifications:
                qualifications_by_type[qualification.exam_or_degree].append(qualification)

            experiences = Experience.objects.filter(user_id=user_details)
            other_exams = []
            for exams in educational_qualifications:
                if exams.exam_or_degree not in ['secondary', 'higher_secondary', 'graduation', 'post_graduation', 'phd']:
                    # create another list of objects
                    print("********************************")
                    print("********************************")
                    print(exams.exam_or_degree)
                    other_exams.append(exams)

            context = {
                'segment': 'page2',
                'qualifications':educational_qualifications,
                'qualifications_by_type': qualifications_by_type,
                'other_exams': other_exams,
                'experiences': experiences,
            }

            if message is not None:
                context[message[0]] = message[1]

            return render(request, 'hiring/qualification1.html', context)

        except UserDetails.DoesNotExist:
            # User details not found, show a message or redirect to a registration page
            return render(request, 'hiring/qualification1.html.html')

        except EducationalQualification.DoesNotExist:
            
            return render(request, 'hiring/qualification1.html.html')



@login_required(login_url='login.html')
@csrf_protect
def qualification2page(request,message=None):
    msg = []
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    if request.method == 'POST':
        user_db = request.user.id
        user_id = UserDetails.objects.get(django_user_id=user_db)
        if UserDetails.objects.filter(django_user_id=user_db).exists():
            Publications.objects.filter(user_id=user_id).delete()
            PublishedBooks.objects.filter(user_id=user_id).delete()
            RefferedInstitutions.objects.filter(book_id__user_id=user_id).delete()
            AdministrativeExperience.objects.filter(user_id=user_id).delete()
            ResearchParams.objects.filter(user_id=user_id).delete()
        research_no= int(request.POST.get('research_count',1))
        print("********************************")
        print("********************************")
        print(research_no)
        for i in range(0, research_no):
            title = request.POST.get(f'title_of_publication_{i}')
            journal = request.POST.get(f'name_of_journal_{i}')
            type_of_publication=request.POST.get(f'type_of_publication_{i}')
            impact_of_publication_factor = request.POST.get(f'impact_of_publication_{i}')
            year = request.POST.get(f'year_of_publication_{i}')
            
            print("********************************")
            print("********************************")
            print(title,journal,year,impact_of_publication_factor)
            publication = Publications(
                user_id=user_id,
                title_of_publication=title,
                type_of_publication=type_of_publication,
                name_of_international_journal=journal,
                impact_factor=float(impact_of_publication_factor),
                date=year,
            )
            publication.save()
        
        no_of_books= int(request.POST.get('books_count',1))
        bookcnt =0
        chaptercnt=0
        # print(no_of_books)
        for i in range(0, no_of_books):
            title = request.POST.get(f'title_of_book_{i}')
            publisher = request.POST.get(f'name_of_publisher_{i}')
            book_type=request.POST.get(f'book_type_{i}')
            institution = request.POST.get(f'referred_institution_{i}')
            if book_type == 'book':
                bookcnt+=1
            elif book_type == 'chapter':
                chaptercnt+=1
            book = PublishedBooks(
                user_id=user_id,
                title_of_book=title,
                book_type=book_type,
                name_of_publisher=publisher,
            )
            book.save()
        phd_students=request.POST.get('phd_students')
        total_research=request.POST.get('total_research')
        total_books=request.POST.get('total_books')
        total_patents=request.POST.get('total_patents')
        research_param = ResearchParams(
                user_id= user_id,
                phd_students_guided=phd_students,
                research_publications=total_research,
                books_published=total_books,
                book_chapters_published=chaptercnt,
                patents_granted=total_patents,
            )
        research_param.save()
    
        institutions = request.POST.get(f'institutions_{i}', '').split(',')
        for inst in institutions:
            if inst.strip():
                referred_institution = RefferedInstitutions(
                    book_id=book,
                    institutions=inst.strip(),
                )
                referred_institution.save()
        # Pocess administrative experience
        no_of_admin_exp= int(request.POST.get('admin_experience_count',1))
        # print("********************************")
        # print("********************************")
        # print(no_of_admin_exp)
        for i in range(0, no_of_admin_exp):
            post = request.POST.get(f'post_{i}')
            from_date = request.POST.get(f'from_date_{i}')
            if from_date:
                from_date = datetime.strptime(from_date, '%Y-%m-%d').strftime('%Y-%m-%d')
            to_date = request.POST.get(f'to_date_{i}')
            if to_date:
                to_date = datetime.strptime(to_date, '%Y-%m-%d').strftime('%Y-%m-%d')
            # print("********************************")
            # print(from_date, to_date)
            name_of_university = request.POST.get(f'name_of_university_{i}')
            location_of_university = request.POST.get(f'location_of_university_{i}')

            admin_experience = AdministrativeExperience(
                user_id=user_id,
                post=post,
                from_date=from_date,
                to_date=to_date,
                name_of_university=name_of_university,
                location=location_of_university,
            )
            admin_experience.save()

        # Redirect to a success page or another view
        messages.success(request, "Form submitted successfully.")
        msg = ['success_message', "Form submitted successfully."]
        return redirect('qualification3.html')
    else:
        try:
            django_user_id = request.user
            user_id = UserDetails.objects.get(django_user_id=django_user_id.id)
            publications= Publications.objects.filter(user_id=user_id)
            published_books = PublishedBooks.objects.filter(user_id=user_id)
            if ResearchParams.objects.filter(user_id=user_id).exists():
                research_param = ResearchParams.objects.get(user_id=user_id)
            else:
                research_param = None
            referred_institutions_dict = {}

            for book in published_books:
                referred_institutions = RefferedInstitutions.objects.filter(book_id=book.id)
                referred_institutions_dict[book.id] = [institution.institutions for institution in referred_institutions]
            admin_experience = AdministrativeExperience.objects.filter(user_id=user_id)

            context = {'segment': 'page3',
                       'publications': publications,
                       'published_books': published_books,
                       'referred_institutions_dict': referred_institutions_dict,
                       'admin_experience': admin_experience,
                       'research_param': research_param,}
            if message is not None:
                context[message[0]] = message[1]
            html_template = loader.get_template('hiring/qualification2.html')
            return HttpResponse(html_template.render(context, request))
        except UserDetails.DoesNotExist:
            return render(request, 'hiring/qualification2.html')





@login_required(login_url='login.html')
@csrf_protect
def qualification3page(request, message=None):
    msg = []
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    if request.method == 'POST':
        django_user_id = request.user
        if UserDetails.objects.filter(django_user_id=django_user_id).exists():
            user_id=UserDetails.objects.get(django_user_id=django_user_id.id)
            ResearchExperience.objects.filter(user_id=user_id).delete()
            ResearchProjects.objects.filter(user_id=user_id).delete()
            InternationalBodies.objects.filter(user_id=user_id).delete()
            Workshops.objects.filter(user_id=user_id).delete()
        research_project_count = int(request.POST.get('research_project_count', 1))
        international_body_count = int(request.POST.get('international_body_count', 1))
        international_exposure_count = int(request.POST.get('international_exposure_count', 1))

        i_index=request.POST.get('i_index')
        h_index=request.POST.get('h_index')
        research_experience=ResearchExperience.objects.create(
            user_id=user_id,
            i_index=i_index,
            h_index=h_index,
        )
        for i in range(0, research_project_count):
            title_of_project = request.POST.get(f'title_of_project_{i}')
            project_value = request.POST.get(f'project_value_{i}')
            granting_agency = request.POST.get(f'granting_agency_{i}')
            date_of_start = request.POST.get(f'project_start_date_{i}')
            date_of_completion = request.POST.get(f'project_completion_date_{i}')

            ResearchProjects.objects.create(
                user_id=user_id,
                title_of_project=title_of_project,
                project_value=project_value,
                granting_agency=granting_agency,
                date_of_start=date_of_start,
                date_of_completion=date_of_completion
            )

        # Save International Bodies
        for i in range(0, international_body_count ):
            name_of_international_body = request.POST.get(f'name_of_international_body_{i}')
            nature_of_experience = request.POST.get(f'nature_of_experience_{i}')

            InternationalBodies.objects.create(
                user_id=user_id,
                name_of_international_body=name_of_international_body,
                nature_of_experience=nature_of_experience
            )

        # Save Workshops
        for i in range(0, international_exposure_count ):
            title_of_workshop = request.POST.get(f'title_of_workshop_{i}')
            year = request.POST.get(f'month_of_exposure_{i}')
            # if year:
            #     year_of_passing = datetime.strptime(year, '%Y-%m-%d').strftime('%Y-%m-%d')
            # print("****************************************************************")
            # print("****************************************************************")
            # print("****************************************************************")
            # print("year_of_passing",year_of_passing)
            place = request.POST.get(f'place_of_exposure_{i}')

            Workshops.objects.create(
                user_id=user_id,
                title_of_workshop=title_of_workshop,
                month_and_year=year,
                place=place
            )

        messages.success(request, "Form submitted successfully.")
        msg = ['success_message', "Form submitted successfully."]
        return redirect('qualifications4.html')
    else:

        try:
            user_details = UserDetails.objects.get(django_user_id=request.user)
            index = ResearchExperience.objects.filter(user_id=user_details)
            
            research_projects = ResearchProjects.objects.filter(user_id=user_details)
            international_bodies = InternationalBodies.objects.filter(user_id=user_details)
            workshops = Workshops.objects.filter(user_id=user_details)

            context = {
                'segment': 'page4',
                'user_details': user_details,
                'index': index,
                'research_projects': research_projects,
                'international_bodies': international_bodies,
                'workshops': workshops,
            }
        # context = {'segment': 'page4'}
            if message is not None:
                context[message[0]] = message[1]
            html_template = loader.get_template('hiring/qualification3.html')
            return HttpResponse(html_template.render(context, request))
        except UserDetails.DoesNotExist:
            return redirect('qualification3.html')





@login_required(login_url='login.html')
@csrf_protect
def qualification4page(request,message=None):
    msg = []
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    if request.method == 'POST':
        user_db = request.user.id
        user_id = UserDetails.objects.get(django_user_id=user_db)
        if UserDetails.objects.filter(django_user_id=user_db).exists():
            OrganisingEvents.objects.filter(user_id=user_id).delete()
            Leadership.objects.filter(user_id=user_id).delete()
        event_experience_count = int(request.POST.get('event_experience_count', 1))
        leadership_experience_count = int(request.POST.get('leadership_experience_count', 1))
        print("****************************************************************")
        print("****************************************************************")
        print("****************************************************************")
        print(event_experience_count,leadership_experience_count)
        for i in range(0, event_experience_count ):
            title_of_workshop = request.POST.get(f'title_of_event_workshop_{i}')
            year = request.POST.get(f'month_of_event_{i}')
            
            place = request.POST.get(f'place_of_event_{i}')
            role_assigned = request.POST.get(f'role_for_event_{i}')

            OrganisingEvents.objects.create(
                user_id=user_id,
                title_of_workshop=title_of_workshop,
                month_and_year=year,
                place=place,
                role_assigned=role_assigned
            )

        # Save Leadership Experience
        for i in range(0, leadership_experience_count):
            leadership_activity = request.POST.get(f'description_of_leadership_{i}')
            documented_evidence = request.POST.get(f'evidence_of_leadership_{i}')

            Leadership.objects.create(
                user_id=user_id,
                leadership_activity=leadership_activity,
                documented_evidence=documented_evidence
            )

        messages.success(request, "Form submitted successfully.")
        msg = ['success_message', "Form submitted successfully."]
        return redirect('experience1.html')
    

    else:
        try:
            user_details = UserDetails.objects.get(django_user_id=request.user)
            organising_events = OrganisingEvents.objects.filter(user_id=user_details)
            leaderships = Leadership.objects.filter(user_id=user_details)
            context = {'segment': 'page5',
                       'organising_events': organising_events,
                       'leaderships': leaderships,}
            if message is not None:
                context[message[0]] = message[1]
            html_template = loader.get_template('hiring/qualifications4.html')
            return HttpResponse(html_template.render(context, request))
        except:
            return  render(request, 'hiring/qualifications4.html')            



@login_required(login_url='login.html')
@csrf_protect
def experience1page(request,message=None):
    msg = []
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    if request.method == 'POST':
        django_user_id = request.user
        if UserDetails.objects.filter(django_user_id=django_user_id).exists():
            user_id=UserDetails.objects.get(django_user_id=django_user_id.id)
            StatutoryWorkingExp.objects.filter(user_id=user_id).delete()
            QualityIssues.objects.filter(user_id=user_id).delete()
        # Extract data from the form
        # user_db = request.user.id
        # user_id = UserDetails.objects.get(django_user_id=user_db)
        experience_of_working_count = int(request.POST.get('experience_of_working_count',1))
        experience_of_handling_count = int(request.POST.get('experience_of_handling_count',2))
        print("****************************************************************")
        print("****************************************************************")
        print("****************************************************************")
        print(experience_of_working_count,experience_of_handling_count)
        # Loop through the submitted data and save it to the database
        for i in range(0, experience_of_working_count):
            institution = request.POST.get(f'experience_of_working_institution_{i}')
            # authority_or_position = request.POST.get(f'statutory_forums_{i}') + ', ' + request.POST.get(f'statutory_position_{i}')
            statutory_forums = request.POST.get(f'statutory_forums_{i}')
            # statutory_position = request.POST.get(f'statutory_position_{i}')

            if statutory_forums is not None :
                authority_or_position = statutory_forums
            else:
                # Handle the case where one or both values are None
                # For example, you could provide default values or an error message.
                authority_or_position = "Default Authority or Position"
            from_date = request.POST.get(f'experience_of_working_from_{i}')
            to_date = request.POST.get(f'experience_of_working_to_{i}')

            # Create and save an instance of StatutoryWorkingExp
            statutory_working_exp = StatutoryWorkingExp(
                user_id=user_id,
                institution=institution,
                authority_or_position=authority_or_position,
                from_date=from_date,
                to_date=to_date
            )
            statutory_working_exp.save()
        area=""
        for i in range(0, experience_of_handling_count ):
            if i == 0:
                area = "Quality issues"
            elif i == 1:
                area = "Assessment and accreditation procedures"
            else:
                area = request.POST.get(f'experience_of_handling_area_{i}')
            print("********************************area")
            print(area)
            institution = request.POST.get(f'experience_of_handling_institution_{i}')
            from_date = request.POST.get(f'experience_of_handling_from_{i}')
            to_date = request.POST.get(f'experience_of_handling_to_{i}')
            achievements = request.POST.get(f'experience_of_handling_achievements_{i}')

            
            quality_issue = QualityIssues(
                user_id=user_id,
                area=area,
                institution=institution,
                from_date=from_date,
                to_date=to_date,
                achievements=achievements
            )
            quality_issue.save()

        # Optionally, you can redirect to a success page or do something else
        messages.success(request, "Form submitted successfully.")
        msg = ['success_message', "Form submitted successfully."]
        return redirect('experience2.html') # Change 'success_page' to your actual URL name

    else:
        try:
            user_details = UserDetails.objects.get(django_user_id=request.user)
            statutory_experiences = StatutoryWorkingExp.objects.filter(user_id=user_details)
            quality_issuess = QualityIssues.objects.filter(user_id=user_details)
            context = {
                'segment': 'page6',
                'list':[0,1],
                'user_details': user_details,
                'statutory_experiences': statutory_experiences,
                'quality_issuess': quality_issuess
            }
            if message is not None:
                context[message[0]] = message[1]
            html_template = loader.get_template('hiring/experience1.html')
            return HttpResponse(html_template.render(context, request))
        except UserDetails.DoesNotExist:
            return render(request, 'hiring/experience1.html')





@login_required(login_url='login.html')
@csrf_protect
def experience2page(request,message=None):

    msg = []
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    if request.method == 'POST':
        # Process Experience to guide Ph.D. students data
        user_db = request.user.id
        user_id = UserDetails.objects.get(django_user_id=user_db)
        if UserDetails.objects.filter(django_user_id=user_db).exists():
            Awards.objects.filter(user_id=user_id).delete()
            YouthHandlingExp.objects.filter(user_id=user_id).delete()
        experience_to_guide_count = int(request.POST.get('experience_to_guide_count', 1))
        experience_at_level_count = int(request.POST.get('experience_at_level_count', 1))

        print("********************************")
        print(experience_to_guide_count,experience_at_level_count)
        
        for i in range(0, experience_to_guide_count ):
            student = request.POST.get(f'experience_to_guide_student_{i}')
            thesis_title = request.POST.get(f'experience_to_guide_thesis_title_{i}')
            awarded_phd = request.POST.get(f'experience_to_guide_from_{i}')
            
            
            print("****************************************************************")
            print("****************************************************************")
            print("****************************************************************")
            print(student,thesis_title,awarded_phd)
            guide = Awards(
                user_id=user_id,
                award_name=student,
                granting_agency=thesis_title,
                year=awarded_phd,
                
            )
            guide.save()
        
        
        for i in range(0, experience_at_level_count):
            nature_of_activity = request.POST.get(f'experience_at_level_activity_{i}')
            institution = request.POST.get(f'experience_at_level_institution_{i}')
            from_date = request.POST.get(f'experience_at_level_from_{i}')
            to_date = request.POST.get(f'experience_at_level_to_{i}')
            achievements = request.POST.get(f'experience_at_level_achievements_{i}')
            
            youth_handling = YouthHandlingExp(
                user_id=user_id,
                nature_of_activity=nature_of_activity,
                institution=institution,
                from_date=from_date,
                to_date=to_date,
                achievements=achievements
            )
            youth_handling.save()
        
        messages.success(request, "Form submitted successfully.")
        msg = ['success_message', "Form submitted successfully."]
        return redirect('skills1.html')
    
        
    else:
        try:
            user_details = UserDetails.objects.get(django_user_id=request.user)
            guide_of_phds = Awards.objects.filter(user_id=user_details)
            youth_handling_exps = YouthHandlingExp.objects.filter(user_id=user_details)
            context = {'segment': 'page7',
                       'guide_of_phds': guide_of_phds,
                       'youth_handling_exps': youth_handling_exps,}
            if message is not None:
                context[message[0]] = message[1]
            html_template = loader.get_template('hiring/experience2.html')
            return HttpResponse(html_template.render(context, request))
        except:
            return render(request, 'hiring/experience2.html')



    


@login_required(login_url='login.html')
@csrf_protect
def skill1page(request,message=None):
    msg=[]
    if UserDetails.objects.filter(django_user_id=request.user).exists():
        user_db = UserDetails.objects.get(django_user_id=request.user)
        if user_db.is_submitted:
            messages.error(request, "You have already submitted the form.")
            return redirect('final_submit.html')
    if request.method == 'POST':
        user_id = UserDetails.objects.get(django_user_id=request.user.id)
        Skills.objects.filter(user_id=user_id).delete()
        References.objects.filter(user_id=user_id).delete()
        technical_skill_1_level = request.POST.get('technical_skill_level_1')
        technical_skill_2_level = request.POST.get('technical_skill_level_2')

        technical_skill_1 = Skills(
            user_id=user_id,
            skill_type='technical',
            skill='Openness towards technology and a deep conviction regarding its potential applications in a knowledge – based setting',
            level=technical_skill_1_level
        )
        technical_skill_1.save()

        technical_skill_2 = Skills(
            user_id=user_id,
            skill_type='technical',
            skill='High level of comfort in the use of technology',
            level=technical_skill_2_level
        )
        technical_skill_2.save()

        managerial_skill_1_level = request.POST.get('managerial_skill_level_1')
        managerial_skill_2_level = request.POST.get ('managerial_skill_level_2')
        managerial_skill_3_level = request.POST.get ('managerial_skill_level_3')
        managerial_skill_4_level = request.POST.get ('managerial_skill_level_4')
        manageral_skill_1 =Skills(
            user_id=user_id,
            skill_type='managerial',
            skill="Ability to anticipate issues and problems and to prepare",
            level=managerial_skill_1_level
        )
        manageral_skill_1.save()
        managerial_skill_2=Skills(
            user_id=user_id,
            skill_type='managerial',
            skill= "Ability to generate resources and to allocate the same appropriately",
            level=managerial_skill_2_level
        )
        managerial_skill_2.save()
        managerial_skill_3=Skills(
            user_id=user_id,
            skill_type='managerial',
            skill= "Capacity to work effectively under pressure and to manage work and resources within tight deadlines ",
            level=managerial_skill_3_level
        )
        managerial_skill_3.save()
        managerial_skill_4 = Skills(
            user_id=user_id,
            skill_type='managerial',
            skill ="Understanding of financial management including revenue generation, planning and fiscal control ",
            level=managerial_skill_4_level
        )
        managerial_skill_4.save()
        corporate_objective_skill_1_level = request.POST.get('corporate_objective_skill_level_1')
        corporate_objective_skill_2_level = request.POST.get('corporate_objective_skill_level_2')
        corporate_objective_skill_3_level = request.POST.get('corporate_objective_skill_level_3')

        corporate_objective_skill_1 = Skills(
            user_id=user_id,
            skill_type='corporate_objective',
            skill='Ability to identify the needs of the communities in key sectors',
            level=corporate_objective_skill_1_level
        )
        corporate_objective_skill_1.save()

        corporate_objective_skill_2 = Skills(
            user_id=user_id,
            skill_type='corporate_objective',
            skill='Understanding of the challenges before the Nation and to indicate how Higher Education can respond to developmental needs',
            level=corporate_objective_skill_2_level
        )
        corporate_objective_skill_2.save()

        corporate_objective_skill_3 = Skills(
            user_id=user_id,
            skill_type='corporate_objective',
            skill='Understanding of curriculum development issues, especially those relating to wide participation and social inclusion',
            level=corporate_objective_skill_3_level
        )
        corporate_objective_skill_3.save()

        # Process Leadership Skills data
        leadership_skill_1_level = request.POST.get('leadership_skill_level_1')
        leadership_skill_2_level = request.POST.get('leadership_skill_level_2')
        leadership_skill_3_level = request.POST.get('leadership_skill_level_3')
        leadership_skill_4_level = request.POST.get('leadership_skill_level_4')
        
        leadership_skill_1 = Skills(
            user_id=user_id,
            skill_type='leadership',
            skill='Ability to motivate a diverse groups of stakeholders',
            level=leadership_skill_1_level
        )
        leadership_skill_1.save()

        leadership_skill_2 = Skills(
            user_id=user_id,
            skill_type='leadership',
            skill='Desire to further the mission and goals of the organization',
            level=leadership_skill_2_level
        )
        leadership_skill_2.save()

        leadership_skill_3 = Skills(
            user_id=user_id,
            skill_type='leadership',
            skill='Ability to think strategically and innovatively and to maintain a broad perspective',
            level=leadership_skill_3_level
        )
        leadership_skill_3.save()

        leadership_skill_4 = Skills(
            user_id=user_id,
            skill_type='leadership',
            skill='Ability to lead by personal example with openness to new ideas and a consultative approach in implementation of the same.',
            level=leadership_skill_4_level
        )
        leadership_skill_4.save()

        communication_skill_1_level = request.POST.get('communication_skill_level_1')
        communication_skill_2_level = request.POST.get('communication_skill_level_2')
        communication_skill_3_level = request.POST.get('communication_skill_level_3')

        communication_skill_1 = Skills(
            user_id=user_id,
            skill_type='communication',
            skill='Details of experience in developing and executing National and International collaborative arrangements',
            level=communication_skill_1_level
        )
        communication_skill_1.save()

        communication_skill_2 = Skills(
            user_id=user_id,
            skill_type='communication',
            skill='Ability to interact effectively and persuasively with a strong knowledge-base at senior levels and in large forums as well as on a one-to-one basis',
            level=communication_skill_2_level
        )
        communication_skill_2.save()

        communication_skill_3 = Skills(
            user_id=user_id,
            skill_type='communication',
            skill='Evidence of being an active member of professional bodies and associations in relevant fields',
            level=communication_skill_3_level
        )
        communication_skill_3.save()

        for i in range(1, 4):
            refrence_name = request.POST.get(f'refrence_name_{i}')
            reference_email = request.POST.get(f'reference_email_{i}')
            refrence_contact = request.POST.get(f'refrence_contact_{i}')

            if refrence_name:
                refrence = References(
                    user_id=user_id,
                    name=refrence_name,
                    email=reference_email,
                    phone=refrence_contact
                )
                refrence.save()

        

        messages.success(request, "Form submitted successfully.")
        msg = ['success_message', "Form submitted successfully."]
        return redirect( 'reciept.html') 

    else:
        try:
            user_details = UserDetails.objects.get(django_user_id=request.user)
            skills = Skills.objects.filter(user_id=user_details)
            technical_skills = Skills.objects.filter(user_id=user_details, skill_type='technical')
            managerial_skills = Skills.objects.filter(user_id=user_details, skill_type='managerial')
            corporate_objective_skills = Skills.objects.filter(user_id=user_details, skill_type='corporate_objective')
            leadership_skills = Skills.objects.filter(user_id=user_details, skill_type='leadership')
            communication_skills = Skills.objects.filter(user_id=user_details, skill_type='communication')
            
            references = References.objects.filter(user_id=user_details)
            context = {'segment': 'page8',
                       'skills': skills,
                          'technical_skills': technical_skills,
                            'managerial_skills': managerial_skills,
                            'corporate_objective_skills': corporate_objective_skills,
                            'leadership_skills': leadership_skills,
                            'communication_skills': communication_skills,
                       'references': references,}
            
            if message is not None:
                context[message[0]] = message[1]
            html_template = loader.get_template('hiring/skills1.html')
            return HttpResponse(html_template.render(context, request))
        except:
            return  render(request, 'hiring/skills1.html')



        

def get_reciept(request):
    variable_value = request.GET.get('variable_name')
    context = {}
    context['segment'] = variable_value
    user_details = UserDetails.objects.get(django_user_id=request.user)
    
    context['user_details'] = user_details
    context['is_submitted']=user_details.is_submitted
    general_info = GeneralInfo.objects.get(user_id=user_details.id)
    context['general_info'] = general_info
    educational_qualification = EducationalQualification.objects.filter(user_id=user_details.id)
    for qualification in educational_qualification:
        qualification.year_of_passing = qualification.year_of_passing
        if qualification.exam_or_degree == 'secondary':
            qualification.exam_or_degree = 'SSC'
        elif qualification.exam_or_degree == 'higher_secondary':
            qualification.exam_or_degree = 'HSC'
        elif qualification.exam_or_degree == 'graduation':
            qualification.exam_or_degree = 'Graduation'
        elif qualification.exam_or_degree == 'post_graduation':
            qualification.exam_or_degree = 'Post Graduation'
        elif qualification.exam_or_degree == 'phd':
            qualification.exam_or_degree = 'PhD'
        elif qualification.exam_or_degree == 'other':
            qualification.exam_or_degree = 'Other'
    context['educational_qualification'] = educational_qualification
    experience = Experience.objects.filter(user_id=user_details.id)
    
    total_years = 0
    total_months = 0
    for exp in experience:
        tenure = exp.to_date - exp.from_date
        years = tenure.days // 365
        remaining_days = tenure.days % 365
        months = remaining_days // 30
        total_years += years
        total_months += months
        if total_months >= 12:
            total_years += total_months // 12
            total_months = total_months % 12
        formatted_tenure = f"{years} years, {months} months"
        exp.tenure = formatted_tenure
    experience.total_years = total_years
    
    context['experience_details'] = experience
    research_experience = ResearchExperience.objects.filter(user_id=user_details.id).first()
    context['research_experience'] = research_experience
    books_published = PublishedBooks.objects.filter(user_id=user_details.id, book_type='book').count()
    context['books_published'] = books_published
    chapters_published = PublishedBooks.objects.filter(user_id = user_details.id, book_type='chapter').count()
    context['chapters_published'] = chapters_published
    # guide_of_phd = GuideOfPhd.objects.filter(user_id = user_details.id).count()
    guide_of_phd = ResearchParams.objects.get(user_id = user_details.id).phd_students_guided
    context['guide_of_phd'] = guide_of_phd
    
    administrative_experience= AdministrativeExperience.objects.filter(user_id=user_details.id)
    total_years = 0
    total_months = 0
    for exp in administrative_experience:
        if exp.post == 'professor':
            exp.post = 'Professor'
        elif exp.post == 'hod':
            exp.post = 'Head of Department'
        elif exp.post == 'dean':
            exp.post = 'Dean'
        elif exp.post == 'director':
            exp.post = 'Director'
        elif exp.post == 'principal':
            exp.post = 'Principal'
        elif exp.post == 'head':
            exp.post = 'Head of National / International institution of advance learning'
        tenure = exp.to_date - exp.from_date
        years = tenure.days // 365
        remaining_days = tenure.days % 365
        months = remaining_days // 30
        
        total_years += years
        total_months += months
        if total_months >= 12:
            total_years += total_months // 12
            total_months = total_months % 12
            
        formatted_tenure = f"{years} years, {months} months"
        exp.tenure = formatted_tenure
    administrative_experience.total_years = total_years
    context['administrative_experience'] = administrative_experience
    
    research_projects = ResearchProjects.objects.filter(user_id=user_details.id)
    research_projects_count = research_projects.count()
    research_projects_value = 0
    for project in research_projects:
        value_str = project.project_value.replace(',', '') 
        research_projects_value += float(value_str)
    context['research_projects_count'] = research_projects_count
    context['research_projects_value'] = research_projects_value
    
    sci_publications = Publications.objects.filter(user_id=user_details.id, type_of_publication='sci').count()
    context['sci_publications'] = sci_publications
    ugc_care = Publications.objects.filter(user_id=user_details.id, type_of_publication='ugc_care').count()
    context['ugc_care'] = ugc_care
    other_publications = Publications.objects.filter(user_id=user_details.id, type_of_publication='other').count()
    context['other_publications'] = other_publications
    
    international_bodies = InternationalBodies.objects.filter(user_id=user_details.id).count()
    context['international_bodies'] = international_bodies
    workshops = Workshops.objects.filter(user_id=user_details.id).count()
    context['workshops'] = workshops
    organising_events = OrganisingEvents.objects.filter(user_id=user_details.id).count()
    context['organising_events'] = organising_events
    leadership = Leadership.objects.filter(user_id=user_details.id)
    context['leadership'] = leadership
    statutory_working_exp = StatutoryWorkingExp.objects.filter(user_id=user_details.id)
    for exp in statutory_working_exp:
        from_date = exp.from_date
        to_date = exp.to_date
        years_diff = to_date.year - from_date.year
        months_diff = to_date.month - from_date.month
        if months_diff < 0:
            years_diff -= 1
            months_diff += 12
        exp.years = years_diff
    context['statutory_working_exp'] = statutory_working_exp
    quality_issues = QualityIssues.objects.filter(user_id=user_details.id)
    for issue in quality_issues:
        from_date = issue.from_date
        to_date = issue.to_date
        years_diff = to_date.year - from_date.year
        months_diff = to_date.month - from_date.month
        if months_diff < 0:
            years_diff -= 1
            months_diff += 12
        issue.years = years_diff
    context['quality_issues_exp'] = quality_issues
    # number_of_phds = GuideOfPhd.objects.filter(user_id=user_details.id).count()
    context['number_of_phds'] = guide_of_phd
    references = References.objects.filter(user_id=user_details.id)
    context['references'] = references
    
    total_research_publications = ResearchParams.objects.get(user_id = user_details.id).research_publications
    context['total_research_publications'] = total_research_publications
    total_books_published = total_research_publications = ResearchParams.objects.get(user_id = user_details.id).books_published
    context['total_books_published'] = total_books_published
    patents_granted = total_research_publications = ResearchParams.objects.get(user_id = user_details.id).patents_granted
    context['patents_granted'] = patents_granted
    awards_or_fellowship = Awards.objects.filter(user_id = user_details.id)
    context['awards_or_fellowship'] = awards_or_fellowship
    return render(request, 'hiring/reciept.html', context)

def final_submit_page(request,message=None):
    context = {'segment': 'final_submit'}
    if message is not None:
        context[message[0]] = message[1]
    html_template = loader.get_template('hiring/final_submit.html')
    return HttpResponse(html_template.render(context, request))


def final_submit(request):
    user_details = UserDetails.objects.get(django_user_id=request.user)
    user_details.is_submitted = True
    user_details.submitted_time = datetime.now()
    user_details.save()
    # send mail to user
    user=request.user
    email=user.email
    current_site = get_current_site(request)

    subject = 'Application Form Submitted Successfully'
    message = render_to_string('accounts/final_submit_page.html', {
        'user': user,
        'domain': current_site.domain,
    })

    # Plain text version of the email (without HTML tags)
    plain_message = strip_tags(message)

    email = EmailMultiAlternatives(subject, plain_message, EMAIL_HOST_USER, [email])
    email.attach_alternative(message, 'text/html')
    email.send()

    print("****************************************************************")
    print(request.user.username)
    return redirect('final_submit.html')