from childmonitoring.forms import (
    SchoolForm, RegionForm, LeisureForm, CaseForm, DayHospitalForm, FamilyMedicalHistoryForm,
    SurgicalMedicalHistoryForm, IdentifiedAllergyForm, SunChildForm
)
from django.shortcuts import render
from childmonitoring.forms import (
    OutpatientForm, IdentifiedPathologyForm, BaseMedicalHistoryForm, SpecialityForm, SpecialistReportForm, ServiceForm
    )


# Create for Case
def create_case(request):
    if request.method == 'POST':
        form = CaseForm(request.POST)
        if form.is_valid():
            try:
                case = form.save(commit=False)
                case.created_by = request.user.username
                case.updated_by = request.user.username
                case.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = CaseForm()
    return form


# Create for DayHospital
def create_day_hospital(request):
    if request.method == 'POST':
        form = DayHospitalForm(request.POST)
        if form.is_valid():
            try:
                day_hospital = form.save(commit=False)
                day_hospital.created_by = request.user.username
                day_hospital.updated_by = request.user.username
                day_hospital.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = DayHospitalForm()
    return form


# Create Outpatient
def create_outpatient(request):
    if request.method == 'POST':
        form = OutpatientForm(request.POST)
        if form.is_valid():
            try:
                outpatient = form.save(commit=False)  # Save the form data without commit them to the database
                # Save some of the excluded parameters on OutpatientForm
                outpatient.created_by = request.user.username
                outpatient.updated_by = request.user.username
                outpatient.save()  # Save the form data to the database
                request.session['status'] = 'success'  # Create session variable to control the state; used in views.py
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'  # Create session variable to control the state; used in views.py
    else:
        form = OutpatientForm()
    return form


# Create for School model
def create_school(request):
    if request.method == 'POST':
        form = SchoolForm(request.POST)
        if form.is_valid():
            try:
                school = form.save(commit=False)
                school.created_by = request.user.username
                school.updated_by = request.user.username
                school.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'  # Create session variable to control the state; used in views.py
    else:
        form = SchoolForm()
    return form


# Create for Region model
def create_region(request):
    if request.method == 'POST':
        form = RegionForm(request.POST)
        if form.is_valid():
            try:
                region = form.save(commit=False)
                region.created_by = request.user.username
                region.updated_by = request.user.username
                region.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'  # Create session variable to control the state; used in views.py
    else:
        form = RegionForm()
    return form


# Create for Leisure
def create_leisure(request):
    if request.method == 'POST':
        form = LeisureForm(request.POST)
        if form.is_valid():
            try:
                leisure = form.save(commit=False)
                leisure.created_by = request.user.username
                leisure.updated_by = request.user.username
                leisure.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = LeisureForm()
    return form


# Create for FamilyMedicalHistory
def create_family_medical_history(request):
    if request.method == 'POST':
        form = FamilyMedicalHistoryForm(request.POST)
        if form.is_valid():
            try:
                family_medical_history = form.save(commit=False)
                family_medical_history.created_by = request.user.username
                family_medical_history.updated_by = request.user.username
                family_medical_history.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = FamilyMedicalHistoryForm()
    return form


# Create for surgical_medical_history
def create_surgical_medical_history(request):
    if request.method == 'POST':
        form = SurgicalMedicalHistoryForm(request.POST)
        if form.is_valid():
            try:
                surgical_medical_history = form.save(commit=False)
                surgical_medical_history.created_by = request.user.username
                surgical_medical_history.updated_by = request.user.username
                surgical_medical_history.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = SurgicalMedicalHistoryForm()
    return form


def create_identified_allergy(request):
    if request.method == 'POST':
        form = IdentifiedAllergyForm(request.POST)
        if form.is_valid():
            try:
                identified_allergy = form.save(commit=False)
                identified_allergy.created_by = request.user.username
                identified_allergy.updated_by = request.user.username
                identified_allergy.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = IdentifiedAllergyForm()
    return form


def create_identified_pathology(request):
    if request.method == 'POST':
        form = IdentifiedPathologyForm(request.POST)
        if form.is_valid():
            try:
                identified_pathology = form.save(commit=False)
                identified_pathology.created_by = request.user.username
                identified_pathology.updated_by = request.user.username
                identified_pathology.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = IdentifiedPathologyForm()
    return form


def create_base_medical_history(request):
    if request.method == 'POST':
        form = BaseMedicalHistoryForm(request.POST)
        if form.is_valid():
            try:
                base_medical_history = form.save(commit=False)
                base_medical_history.created_by = request.user.username
                base_medical_history.updated_by = request.user.username
                base_medical_history.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = BaseMedicalHistoryForm()
    return form


def create_specialist_report(request):
    if request.method == 'POST':
        form = SpecialistReportForm(request.POST)
        if form.is_valid():
            try:
                specialist_report = form.save(commit=False)
                specialist_report.created_by = request.user.username
                specialist_report.updated_by = request.user.username
                specialist_report.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = SpecialistReportForm()
    return form


def create_speciality(request):
    if request.method == 'POST':
        form = SpecialityForm(request.POST)
        if form.is_valid():
            try:
                speciality = form.save(commit=False)
                speciality.created_by = request.user.username
                speciality.updated_by = request.user.username
                speciality.save()
                request.session['status'] = 'success'
            except Exception as e:
                request.session['status'] = f'error: {str(e)}'
        else:
            request.session['status'] = 'error'
    else:
        form = SpecialityForm()
    return form


# def create_sun_child(request):
#     if request.method == 'POST':
#         form = SunChildForm(request.POST)
#         if form.is_valid():
#             try:
#                 child = form.save(commit=False)
#                 child.created_by = request.user.username
#                 child.updated_by = request.user.username
#                 child.save()
#                 request.session['status'] = 'success'
#             except Exception as e:
#                 request.session['status'] = f'error: {str(e)}'
#         else:
#             request.session['status'] = 'error'
#     else:
#         form = SunChildForm()
#     return form
