from django.template.loader import render_to_string
from django.core.mail import EmailMessage
from django.conf import settings
from .models import installer,Sender
from django.http import HttpResponse
from liquid import Template
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent


class Email:
    @staticmethod
    def email_user(customer, to, shop, max_result):
        subject = 'user mail'
        message = ""
        To = [to]
        shops = [shop]
        

        check_shop = installer.objects.filter(shop=shops[0])
        if check_shop:
            sender = Sender.objects.filter(smtp_shop_id=check_shop[0].id)
            
            if sender:
                print("A")
                
                settings.EMAIL_HOST_USER = sender[0].smtp_username
                settings.EMAIL_HOST_PASSWORD = sender[0].smtp_password
                settings.EMAIL_USE_TLS = sender[0].use_tls
                settings.EMAIL_PORT = sender[0].smtp_port
                settings.EMAIL_HOST = sender[0].smtp_host
                
                
                if max_result == "spine_soft":
                    subject = sender[0].spine_soft_subject_user
                    message = sender[0].spine_soft_template_user
                elif max_result == "spine_medium":
                    subject = sender[0].spine_medium_subject_user
                    message = sender[0].spine_medium_template_user
                elif max_result == "spine_firm":
                    subject = sender[0].spine_firm_subject_user
                    message = sender[0].spine_firm_template_user
                else:
                    subject = sender[0].spine_xfirm_subject_user
                    message = sender[0].spine_xfirm_template_user

        if message == "":
            message = '<table style="border-collapse:collapse;border-style:solid;border-width:1px;border-color:#ddd;width:100%;margin-top:15px"><tbody><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Name</td><td>{{ customer.name }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Contact Number</td><td>{{ customer.contactNumber }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Email</td><td>{{ customer.email }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Gender</td><td>{{ customer.gender }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Age</td><td>{{ customer.age }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">City</td><td>{{ customer.city }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Height</td><td>{{ customer.height }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Weight</td><td>{{ customer.weight }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Date</td><td>{{ customer.date }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Getting out of bed</td><td>{{ customer.getting_out_of_bed }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Driving and sitting in a car or bus</td><td>{{ customer.driving_and_sitting_in_a_car_or_bus }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Climbing 15 to 20 stairs</td><td>{{ customer.climbing_15_to_20_stairs }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Lifting and carrying bag/luggage</td><td>{{ customer.lifting_and_carrying_bag_luggage }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Matress for</td><td>{{ customer.matressfor }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Spine soft</td><td>{{ customer.result.spine_soft }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Spine medium</td><td>{{ customer.result.spine_medium }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Spine firm</td><td>{{ customer.result.spine_firm }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Spine xfirm</td><td>{{ customer.result.spine_xfirm }}</td></tr></tbody></table>'
                    
        data = {"customer": customer["customer"][0]}
        template = Template(message)
        message = template.render(**data)
        message = render_to_string('admin_email.html', {'content':message})
        from_email = settings.EMAIL_HOST_USER
    
        mssg = EmailMessage(
            subject,
            message,
            from_email,
            To,
        )
        mssg.content_subtype= "html"
    
        mssg.send()
        msg = "else email sended"
        return msg



    # admin
    @staticmethod
    def email_admin(customer, shop, max_result):
        subject = 'admin mail'
        message = ""
        
        to = settings.EMAIL_HOST_USER
        shops = [shop]
        check_shop = installer.objects.filter(shop=shops[0])
        if check_shop:
            sender = Sender.objects.filter(smtp_shop_id=check_shop[0].id)
            if sender:            
                if max_result == "spine_soft":
                    subject = sender[0].spine_soft_subject_admin
                    message = sender[0].spine_soft_template_admin
                elif max_result == "spine_medium":
                    subject = sender[0].spine_medium_subject_admin
                    message = sender[0].spine_medium_template_admin
                elif max_result == "spine_firm":
                    subject = sender[0].spine_firm_subject_admin
                    message = sender[0].spine_firm_template_admin
                else:
                    subject = sender[0].spine_xfirm_subject_admin
                    message = sender[0].spine_xfirm_template_admin

        if message == "":
            message = '<table style="border-collapse:collapse;border-style:solid;border-width:1px;border-color:#ddd;width:100%;margin-top:15px"><tbody><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Name</td><td>{{ customer.name }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Contact Number</td><td>{{ customer.contactNumber }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Email</td><td>{{ customer.email }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Gender</td><td>{{ customer.gender }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Age</td><td>{{ customer.age }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">City</td><td>{{ customer.city }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Height</td><td>{{ customer.height }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Weight</td><td>{{ customer.weight }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Date</td><td>{{ customer.date }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Getting out of bed</td><td>{{ customer.getting_out_of_bed }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Driving and sitting in a car or bus</td><td>{{ customer.driving_and_sitting_in_a_car_or_bus }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Climbing 15 to 20 stairs</td><td>{{ customer.climbing_15_to_20_stairs }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Lifting and carrying bag/luggage</td><td>{{ customer.lifting_and_carrying_bag_luggage }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Matress for</td><td>{{ customer.matressfor }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Spine soft</td><td>{{ customer.result.spine_soft }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Spine medium</td><td>{{ customer.result.spine_medium }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Spine firm</td><td>{{ customer.result.spine_firm }}</td></tr><tr style="border-bottom:1px solid #ddd"><td style="padding-left:15px">Spine xfirm</td><td>{{ customer.result.spine_xfirm }}</td></tr></tbody></table>'
        
        data = {"customer": customer["customer"][0]}
        template = Template(message)
        message = template.render(**data)
        message = render_to_string('admin_email.html', {'content':message})
        from_email = settings.EMAIL_HOST_USER
                
        mssg= EmailMessage(
            subject,
            message,
            from_email,
            [to],
        )
        mssg.content_subtype= "html"
        
        mssg.send()

        msg = "email sended"
        return msg