from django.db import models
from multiselectfield import MultiSelectField

# ATTENTION!!!
# No key should be used twice in any of these dicts because of the
# suboptimal implementation in views.EvaFormView.beautify_data()
#

DEPARTMENT_CHOICES = {'PROG': 'Programme',
                      'SOFT': 'Softwareentwicklung',
                      'CENT': 'Central',
                      'VOR': 'Vorstand',}

VENDOR_CHOICES = {'STANDARD': 'Dell Latitude',
                 'LENOVO': 'Lenovo Thinkpad',
                 'MAC': 'Mac (nur für Grafiker_innen)'}

OS_CHOICES = {'UBU': 'Ubuntu (Standard)',
              'WIN': 'Windows (bitte Begründung angeben)',
              'MOS': 'Mac OS (nur wenn Mac gewählt)'}


LANG_CHOICES = {'GER': 'Deutsch',
                'ENG': 'English',}

KEYBOARD_CHOICES = {'DE': 'Deutsch',
                    'US': 'USA',
                    'OT': 'Anderes (Bitte unten angeben)'}

ACCOUNT_CHOICES = {'OTRSWMDE': 'OTRS Ticketsystem',
                   'CIVIC1': 'Civic CRM (allgemein)',
                   'CIVIC2': "Civic CRM (Mailings, impliziert allgemein)",
                   'WEB': 'www.wikimedia.de (edit)',
                   'BLOG': 'blog.wikimedia.de (edit)',
                   'FORUM': 'forum.wikimedia.de',
                   }

TRANSPONDER_CHOICES = {'NORM': 'Allgemeiner Transponder',
                       'SPECIAL': 'Besondere Schließungen (bitte angeben)',
                       'NOTRANS': 'Kein Transponder',}

class Employee(models.Model):

    # email adress of user. should not be necessary if we use openauth one day
    # usermail = models.EmailField(max_length=50, verbose_name="Deine Mailadresse (Ansprechpartner_in)", default='bestechefin@wikimedia.de')

    # personal data
    firstname = models.CharField(max_length=50, verbose_name="Vorname")
    lastname = models.CharField(max_length=50, verbose_name="Nachname")
    # intern = models.BooleanField(verbose_name='Interne_r Mitarbeiter_in?', default=True)
    department = models.CharField(max_length=5, choices=DEPARTMENT_CHOICES.items(), verbose_name='Bereich')
    team = models.CharField(max_length=20, null=True, blank=True) # TODO? better with choices?

    # general work related stuff
    firstdate_employment = models.DateField(null=True, verbose_name="Erster Arbeitstag")
    firstdate_presence = models.DateField(null=True, verbose_name="Erster Tag der Anwesenheit in der Geschäftsstelle")
    jobdescription_german = models.CharField(null=True, max_length=100, verbose_name="Stellenbezeichnung(deutsch)")
    jobdescription_english = models.CharField(null=True, max_length=100, verbose_name="Job description(english)")
    remote = models.BooleanField(verbose_name='Braucht Arbeitsplatz in der Geschäftsstelle?', default=True)
    desk = models.CharField(max_length=100, null=True, blank=True, verbose_name="Wo soll der Arbeitsplatz sein?")

    # IT related stuff
    vendor = models.CharField(max_length=8, choices=VENDOR_CHOICES.items(), default='STANDARD', verbose_name='Hersteller')
    os = models.CharField(max_length=3, choices=OS_CHOICES.items(), default='UBU', verbose_name='Betriebssystem')
    screen = models.BooleanField(default=False, verbose_name='Zusätzlicher Monitor? Einer ist standard.')
    mobile = models.BooleanField(max_length=6, default=False, verbose_name='Diensttelefon (Handy)')
    # sim = models.BooleanField(default=False, verbose_name="Mobilfunkvertrag")
    keyboard = models.CharField(max_length=2, choices=KEYBOARD_CHOICES.items(), default='DE', verbose_name="Tastaturlayout")
    comment = models.TextField(max_length=500, null=True, blank=True, verbose_name="zusätzliche IT-Anforderungen")
    language = models.CharField(max_length=3, choices=LANG_CHOICES.items(), default="GER", verbose_name="Sprache")
    accounts = MultiSelectField(choices=ACCOUNT_CHOICES.items(), null=True, blank=True, verbose_name="Zusätzliche Accounts")
    lists = models.CharField(max_length=100, null=True, blank=True, verbose_name="Zusätzliche Mailinglisten")
    rebu2go = models.BooleanField(verbose_name="Rebu2Go-Zugang benötigt?", default=False)

    # office related stuff
    transponder = models.CharField(max_length=7, choices=TRANSPONDER_CHOICES.items(), default='NORM')
    special = models.TextField(max_length=500, null=True, blank=True, verbose_name="Besondere Schließungen hier eintragen")
    post_office_box = models.BooleanField(default=True, verbose_name='Postfach am Empfang benötigt?')