from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse, HttpResponsePermanentRedirect
from school.models import Enquiry, Blog
import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from pprint import pprint
import requests
import json
import datetime
import os
import logging
from school.forms import CareerForm
from django.template import loader
from django.template.loader import render_to_string
from wellsprings.settings import BASE_DIR
logger = logging.getLogger(__name__)

brevo_configuration = sib_api_v3_sdk.Configuration()
brevo_configuration.api_key["api-key"] = os.getenv("BREVO_API_KEY", "")

def index(request):
	return render(request,'index.html', locals())

def leadership(request):
	return render(request,'leadership.html', locals())

def redirect_advisory_board_to_leadership(request):
	return HttpResponsePermanentRedirect('/leadership/')

def infrastructure(request):
	return render(request,'infrastructure.html', locals())

def why_us(request):
	return render(request,'why_us.html', locals())			

def contact_us(request):
	return render(request,'contact_us.html', locals())

def inquire_form(request):
	if request.method=="POST":
		details_form = Enquiry.objects.create(
			studentname = request.POST["studentname"],
			parent_name = request.POST["parentsname"],
			mobile = request.POST["phone"],
			email = request.POST["email"],
			admission_grade = request.POST["classname"],
			source = request.POST['source'],
		)
		details_form.save()

		student_name = details_form.studentname
		parent_name = details_form.parent_name
		mobile = details_form.mobile
		email = details_form.email
		admission_grade = details_form.admission_grade
		source = details_form.source


		url = "https://api-in21.leadsquared.com/v2/LeadManagement.svc/Lead.Capture?accessKey=u$r4c361c1c755679105a84d6633d4c6dd9&secretKey=301aa26e6a57dae1df02182ae50bfd83c254c41a"

		payload = json.dumps([
		  {
		    "Attribute": "FirstName",
		    "Value": student_name
		  },
		  {
		    "Attribute": "mx_Parent_Name",
		    "Value": parent_name
		  },
		  {
		    "Attribute": "Phone",
		    "Value": mobile
		  },
		  {
		    "Attribute": "EmailAddress",
		    "Value": email
		  },
		  {
		    "Attribute": "mx_Admission_for_Grade",
		    "Value": admission_grade
		  },
		  {
		    "Attribute": "Source",
		    "Value": source
		  },
		  {
		    "Attribute": "SearchBy",
		    "Value": "Phone"
		  },
		  {
		    "Attribute": "mx_Academic_Year",
		    "Value": "2025-2026"
		  }
		])
		
		headers = {
		  'Content-Type': 'application/json'
		}

		response = requests.request("POST", url, headers=headers, data=payload)
	return HttpResponseRedirect('/thanku/')

def thanku(request):				
	return render(request,'thanku.html', locals())

def cambridge_early_years(request):				
	return render(request,'cambridge_early_years.html', locals())

def cambridge_primary_years(request):	
	return render(request,'cambridge_primary_years.html', locals())

def cambridge_lower_secondary(request):	
	return render(request,'cambridge_lower_secondary.html', locals())

def cambridge_upper_secondary(request):	
	return render(request,'cambridge_upper_secondary.html', locals())

def cambridge_advanced(request):	
	return render(request,'cambridge_advanced.html', locals())	

def learning_the_uncommon_way(request):
	return render(request,'learning_the_uncommon_way.html', locals())

def pathway_to_stand_apart(request):
	return render(request,'pathway_to_stand_apart.html', locals())	

def learning_model(request):
	return render(request,'learning_model.html', locals())

def learning_and_development(request):
	return render(request,'learning_and_development.html', locals())	

def beyond_the_ordinary(request):
	return render(request,'beyond_the_ordinary.html', locals())

def individual_development_plan(request):
	return render(request,'individual_development_plan.html', locals())

def glimpse_into_wellsprings(request):
	return render(request,'glimpse_into_wellsprings.html', locals())

def admission_form(request):
	if request.method=="POST":
		details_form = Enquiry.objects.create(
			studentname = request.POST["studentname"],
			parent_name = request.POST["parentsname"],
			mobile = request.POST["phone"],
			email = request.POST["email"],
			admission_grade = request.POST["classname"],
			source = request.POST['source'],
		)
		details_form.save()

		student_name = details_form.studentname
		parent_name = details_form.parent_name
		mobile = details_form.mobile
		email = details_form.email
		admission_grade = details_form.admission_grade
		source = details_form.source


		url = "https://api-in21.leadsquared.com/v2/LeadManagement.svc/Lead.Capture?accessKey=u$r4c361c1c755679105a84d6633d4c6dd9&secretKey=301aa26e6a57dae1df02182ae50bfd83c254c41a"

		payload = json.dumps([
		  {
		    "Attribute": "FirstName",
		    "Value": student_name
		  },
		  {
		    "Attribute": "mx_Parent_Name",
		    "Value": parent_name
		  },
		  {
		    "Attribute": "Phone",
		    "Value": mobile
		  },
		  {
		    "Attribute": "EmailAddress",
		    "Value": email
		  },
		  {
		    "Attribute": "mx_Admission_for_Grade",
		    "Value": admission_grade
		  },
		  {
		    "Attribute": "Source",
		    "Value": source
		  },
		  {
		    "Attribute": "SearchBy",
		    "Value": "Phone"
		  },
		  {
		    "Attribute": "mx_Academic_Year",
		    "Value": "2025-2026"
		  }
		])
		
		headers = {
		  'Content-Type': 'application/json'
		}

		response = requests.request("POST", url, headers=headers, data=payload)
	# return HttpResponseRedirect('/thanku/')
	return render(request,'admission_form.html', locals())	

def careers(request):
	if request.method == 'POST':
		p = CareerForm(request.POST, request.FILES)
		if p.is_valid():
			c = p.save()

			email = c.email
			fullname = c.fullname
			mobile = c.mobile
			resume = c.resume
			Application_for = c.Application_for

			subject = "Candidacy for The Wellsprings Academy"
			html_content = loader.render_to_string(str(BASE_DIR)+'/school/templates/email_template/resumes.html',{'fullname':fullname,'email':email,'mobile':mobile,'resume':resume})
			try:
				api_instance = sib_api_v3_sdk.TransactionalEmailsApi(
					sib_api_v3_sdk.ApiClient(brevo_configuration)
				)
				sender = {
					"name": "Wellsprings Academy",
					"email": os.getenv("DEFAULT_FROM_EMAIL", "digitalmarketing@wellspringsacademy.in"),
				}
				to = [{"email": "hr@wellspringsacademy.in", "name": "HR"}]
				headers = {"Content-Type": "application/json"}
				send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(
					to=to,
					headers=headers,
					html_content=html_content,
					sender=sender,
					reply_to={"email": email, "name": fullname},
					subject=subject,
				)
				api_response = api_instance.send_transac_email(send_smtp_email)
				pprint(api_response)
			except ApiException:
				logger.exception("Brevo send failed for careers form")

	return render(request,'careers.html', locals())	

def admissions(request):
	return render(request,'admission.html', locals())


def blog_list(request):
	blog = Blog.objects.filter(status = 'Published').order_by('-id')
	paginator = Paginator(blog, 10)
	page = request.GET.get('page')

	try:
		blog = paginator.page(page)
	except PageNotAnInteger:
		blog = paginator.page(1)
	except EmptyPage:
		blog = paginator.page(paginator.num_pages)
	return render(request, 'blog_list.html', locals())


def blog_detail(request,slug):
	b = Blog.objects.get(slug = slug)
	return render(request, 'blog_detail.html', locals())

def gallery(request):
	return render(request,'gallery.html', locals())

def privacy_policy(request):
	return render(request,'privacy_policy.html', locals())

def mandatory_disclosure(request):
	return render(request,'mandatory_disclosure.html', locals())

# def test(request):
# 	return render(request,'test.html', locals())


# Redirecting the old URL'S
def design_thinking(request):
	return HttpResponsePermanentRedirect('/beyond-the-ordinary/#designthinking')

def Careers(request):
	return HttpResponsePermanentRedirect('/careers/')

def about_us(request):
	return HttpResponsePermanentRedirect('/why-us/')

def academics(request):
	return HttpResponsePermanentRedirect('/learning-model/')

def wellsprings_pathway(request):
	return HttpResponsePermanentRedirect('/pathway-to-stand-apart/')

def wellsprings_learndevelp(request):
	return HttpResponsePermanentRedirect('/pathway-to-stand-apart/')

def wsa_earlyyears(request):
	return HttpResponsePermanentRedirect('/kindergarten/')

def wsa_prmyrs(request):
	return HttpResponsePermanentRedirect('/primary-school/')

def redirect_cambridge_early_years(request):
	return HttpResponsePermanentRedirect('/kindergarten/')

def redirect_cambridge_primary_years(request):
	return HttpResponsePermanentRedirect('/primary-school/')

def redirect_cambridge_lower_secondary(request):
	return HttpResponsePermanentRedirect('/middle-school/')

def wsa_uprsecd(request):
	return HttpResponsePermanentRedirect('/cambridge-upper-secondary/')

def wsa_caminter(request):
	return HttpResponsePermanentRedirect('/cambridge-advanced/')

def byacdms(request):
	return HttpResponsePermanentRedirect('/beyond-the-ordinary/')

def perfarts(request):
	return HttpResponsePermanentRedirect('/beyond-the-ordinary/#Performing_arts')

def teamgames(request):
	return HttpResponsePermanentRedirect('/beyond-the-ordinary/#teamindividualgames')

def indivigames(request):
	return HttpResponsePermanentRedirect('/beyond-the-ordinary/#teamindividualgames')

def testmon(request):
	return HttpResponsePermanentRedirect('/#testmonialsru')

def whyasa(request):
	return HttpResponsePermanentRedirect('/blog/Why-Choose-Cambridge-Advance-programmes/')

def whyigcse(request):
	return HttpResponsePermanentRedirect('/blog/Why-Choose-Cambridge-upper-secondary-Programme/')
#end of old urls redirecting

def landing_page(request):
	today = datetime.date.today()
	cur_mon = today.month
	cur_year = today.year
	start_of_yr = today.replace(day = 1,month=6)
	if cur_mon >= start_of_yr.month:
		year = cur_year + 1 
		next_year = year + 1
	else:
		year = cur_year
		next_year = cur_year +1 

	if request.method=="POST":
		
		current_url = request.POST['current_url']
		string=str(current_url)
		# gclid = None
		if 'gclid' in string:
			gclid = request.GET['gclid']
		else:
			gclid = None

		if 'utm_source' in string:
			source = request.GET['utm_source']
		elif 'gclid' in string:
			source = "googleAds"
		else:
			source = "Direct"

		# return HttpResponse(gclid)
		if 'utm_campaign' in string:
			campaign = request.GET['utm_campaign']
		else:
			campaign = None

		if 'utm_content' in string:
			content = request.GET['utm_content']
		else:
			content = None

		if 'utm_medium' in string:
			medium = request.GET['utm_medium']
		else:
			medium = None

		if 'utm_term' in string:
			term = request.GET['utm_term']
		else:
			term = None

		details_form = Enquiry.objects.create(
			studentname = request.POST["studentname"],
			parent_name = request.POST["parentsname"],
			mobile = request.POST["phone"],
			email = request.POST["email"],
			admission_grade = request.POST["classname"],
			source = source,
			gclid = gclid,
			utm_campaign = campaign,
			utm_content = content,
			utm_medium = medium,
			utm_term = term,
			url = current_url,
		)
		details_form.save()

		student_name = details_form.studentname
		parent_name = details_form.parent_name
		mobile = details_form.mobile
		email = details_form.email
		admission_grade = details_form.admission_grade
		# source = details_form.source

		url = "https://api-in21.leadsquared.com/v2/LeadManagement.svc/Lead.Capture?accessKey=u$r4c361c1c755679105a84d6633d4c6dd9&secretKey=301aa26e6a57dae1df02182ae50bfd83c254c41a"

		payload = json.dumps([
		  {
		    "Attribute": "FirstName",
		    "Value": student_name
		  },
		  {
		    "Attribute": "mx_Parent_Name",
		    "Value": parent_name
		  },
		  {
		    "Attribute": "Phone",
		    "Value": mobile
		  },
		  {
		    "Attribute": "EmailAddress",
		    "Value": email
		  },
		  {
		    "Attribute": "mx_Admission_for_Grade",
		    "Value": admission_grade
		  },
		  {
		    "Attribute": "mx_GCLID",
		    "Value": gclid
		  },
		  {
		    "Attribute": "Source",
		    "Value": source
		  },
		  {
		    "Attribute": "SourceCampaign",
		    "Value": campaign
		  },
		  {
		    "Attribute": "SourceContent",
		    "Value": content
		  },
		  {
		    "Attribute": "SourceMedium",
		    "Value": medium
		  },
		  {
		    "Attribute": "mx_utm_term",
		    "Value": term
		  },
		  {
		    "Attribute": "SearchBy",
		    "Value": "Phone"
		  },
		  {
		    "Attribute": "mx_Academic_Year",
		    "Value": "2025-2026"
		  }
		])
		
		headers = {
		  'Content-Type': 'application/json'
		}

		response = requests.request("POST", url, headers=headers, data=payload)
		return HttpResponseRedirect('/thanku/')

	# return HttpResponse(year)
	return render(request,'landingpage.html',locals())



