from django.conf import settings
from django.contrib.auth import get_user_model

from glitchtip.email import GlitchTipEmail

User = get_user_model()


class AlertEmail(GlitchTipEmail):
    html_template_name = "alerts/issue.html"
    text_template_name = "alerts/issue.txt"
    subject_template_name = "alerts/issue-subject.txt"
    notification = None

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        notification = self.notification
        first_issue = notification.issues.all().first()
        base_url = settings.GLITCHTIP_URL.geturl()
        org_slug = first_issue.project.organization.slug
        issue_link = f"{base_url}/{org_slug}/issues/{first_issue.id}"
        settings_link = (
            f"{base_url}/{org_slug}/settings/projects/{first_issue.project.slug}"
        )
        context["issue_title"] = first_issue.title
        context["project_name"] = first_issue.project
        context["first_issue"] = first_issue
        context["issue_link"] = issue_link
        context["issues"] = notification.issues.all()
        context["issue_count"] = notification.issues.count()
        context["project_notification_settings_link"] = settings_link
        context["org_slug"] = org_slug
        context["project_link"] = (
            f"{base_url}/{org_slug}/issues?project={first_issue.project.id}"
        )
        
        return context


def send_email_notification(notification):
    email = AlertEmail()
    email.notification = notification
    users = User.objects.alert_notification_recipients(notification)
    if not users.exists():
        return
    email.send_users_email(users)
