from django.urls.base import reverse_lazy
from django.utils.translation import gettext as _
from og_django_utils.utils.named_enum import NamedEnum, En


class ApprenticeTaskAnswerStatus(NamedEnum):
    BLOCKED = En(_('Zablokowane'))
    FIRST_UPLOAD = En(_('Przed pierwszym filmem'))
    BEFORE_MENTOR_RATE = En(_('Przed oceną mentora'))
    BEFORE_EXERCISES_DONE = En(_('Przed ukończeniem ćwiczeń'))
    SECOND_UPLOAD = En(_('Przed drugim filmem'))
    COMPLETED = En(_('Zakończone'))


class IntroPopupType(NamedEnum):
    ARTICLES = En('articles')
    PATHS = En('paths')
    VIDEO_LIST = En('video-list')


class IntroPopupData:
    POPUP_DATA = {
        IntroPopupType.ARTICLES: {'video_id': 'D_89D7BjVc8', 'text': ''},
        IntroPopupType.PATHS: {'video_id': 'D_89D7BjVc8', 'text': ''},
        IntroPopupType.VIDEO_LIST: {'video_id': 'D_89D7BjVc8', 'text': ''}
    }


class NotificationType(NamedEnum):
    EXERCISE_DONE_ALL = En()
    EXERCISE_DONE = En()
    EXERCISE_TODO = En()
    TASK_ANSWER_MENTOR = En()
    TASK_ANSWER_EXERCISES = En()
    TASK_ANSWER_VOTE = En()
    TASK_ANSWER_LIST_GOTO = En()
    TASK_ANSWER_ARTICLES = En()
    NO_TASK_ANSWERS = En()


class NotificationsData:
    NOTIFICATION_DATA = {
        NotificationType.EXERCISE_DONE_ALL: {
            'title': _('Gratulacje, jesteś już gotowy'),
            'description': _('możesz ukończyć to zadanie nagrywając film ponownie.'),
            'button_txt': _('Przejdź do zadania')
        },
        NotificationType.EXERCISE_DONE: {
            'title': _('Wykonaj ćwiczenia do zadania'),
            'description': _('Wykonanych ćwiczeń: {} / {}')
        },
        NotificationType.EXERCISE_TODO: {
            'title': _('Czy zrobiłeś to ćwiczenie?'),
            'description': _('Wykonanych ćwiczeń: {} / {}'),
            'button_txt': _('Tak!'),
            'button_control_css_class': 'exercise-done-button'
        },
        NotificationType.TASK_ANSWER_MENTOR: {
            'title': _('Tutaj wkrótce pojawi się wiadomość od Twojego mentora. Oprócz oceny będzie zawierać ćwiczenia '
                       'do wykonania. Oczekuj powiadomienia na skrzynce mailowej.'),
            'description': _('Oczekuj powiadomienia na skrzynce mailowej.')
        },
        NotificationType.TASK_ANSWER_EXERCISES: {
            'title': _('Na podstawie Twojej prezentacji mentor zaproponował Ci ćwiczenia do zadania.'),
            'description': _('Po ich wykonaniu będziesz mógł nagrać poprawioną wersję swojej prezentacji.')
        },
        NotificationType.TASK_ANSWER_VOTE: {
            'title': _('Gratulacje!'),
            'description': _('Ukończyłeś to zadanie, możesz teraz oceniać prezentacje innych'),
            'button_txt': _('Przejdź do prezentacji'),
            'button_href': reverse_lazy('tasks:other-video-list')
        },
        NotificationType.TASK_ANSWER_LIST_GOTO: {
            'title': _('Szkolenie trwa'),
            'description': _('Rozwiąż kolejne zadania!'),
            'button_txt': _('Rozwiąż zadania'),
            'button_href': reverse_lazy('path-list'),
        },
        NotificationType.TASK_ANSWER_ARTICLES: {
            'title': _('Głodny kolejnych etapów rozwiązywania zadania?'),
            'description': _('Spędź trochę czasu eksplorując bazę wiedzy!'),
            'button_txt': _('Baza wiedzy'),
            'button_href': reverse_lazy('articles:article-list'),
        },
        NotificationType.NO_TASK_ANSWERS: {
            'title': _('Niestety nie zamieściłeś jeszcze żadnej prezentacji.'),
            'description': _('Przejdź do wybranej ścieżki i rozwiąż swoje pierwsze zadanie!'),
            'button_txt': _('Rozwiąż zadania'),
            'button_href': reverse_lazy('path-list'),
        }
    }
