from django.template.loader import render_to_string
from django.utils.translation import gettext as _

from common.utils import get_logger
from common.utils.timezone import local_now_display
from notifications.notifications import UserMessage

logger = get_logger(__file__)


class LDAPImportMessage(UserMessage):
    def __init__(self, user, extra_kwargs):
        super().__init__(user)
        self.orgs = extra_kwargs.pop('orgs', [])
        self.end_time = extra_kwargs.pop('end_time', '')
        self.start_time = extra_kwargs.pop('start_time', '')
        self.time_start_display = extra_kwargs.pop('time_start_display', '')
        self.new_users = extra_kwargs.pop('new_users', [])
        self.errors = extra_kwargs.pop('errors', [])
        self.cost_time = extra_kwargs.pop('cost_time', '')

    def get_html_msg(self) -> dict:
        subject = _('Notification of Synchronized LDAP User Task Results')
        context = {
            'orgs': self.orgs,
            'start_time': self.time_start_display,
            'end_time': local_now_display(),
            'cost_time': self.cost_time,
            'users': self.new_users,
            'errors': self.errors
        }
        message = render_to_string('ldap/_msg_import_ldap_user.html', context)
        return {
            'subject': subject,
            'message': message
        }