# coding: utf-8
'''
Created on 14.01.2015

@author: v.popov
'''
import json

from com.jayway.jsonpath import JsonPath
from ru.curs.celesta.showcase.utils import XMLJSONConverter
from security.functions import userHasPermission
from edu.xform.startTestCard import getPersonTestLink

try:
    from ru.curs.showcase.core.jython import JythonDTO
except:
    from ru.curs.celesta.showcase import JythonDTO


def webtext(context, main=None, add=None, filterinfo=None, session=None, elementId=None):
    sid = JsonPath.read(session, "$.sessioncontext.sid")    
    
    links =  getPersonTestLink(context, sid)
    
    test_buttons = list()
    
    for key, link in links.items():
        test_buttons.append({
                "link": link,
                "text": key,
                "color": '006666',
                "icon": 'icon-profy',
                "type": 'inner'
            })

    medstaff_button = {
        "link": "?userdata=medstaff",
        "text": u'Слушатель'.upper(),
        "color": '006666',
        "icon": 'icon-profy',
        "type": 'inner'
    }

    method_button = {
        "link": "?userdata=method",
        "text": u'Методист'.upper(),
        "color": '006666',
        "icon": 'icon-support',
        "type": 'inner'
    }
    
    prepod_button = {
        "link": "?userdata=method",
        "text": u'Преподаватель'.upper(),
        "color": '006666',
        "icon": 'icon-support',
        "type": 'inner'
    }
    
    program_panel_button = {
        "link": "/home/admin/programs.openi",
        "text": u'Аналитика по программам'.upper(),
        "color": '006666',
        "icon": 'icon-corporate',
        "type": 'pentaho'
    }
    
    cycle_panel_button = {
        "link": "/home/admin/cycles.openi",
        "text": u'Аналитика по циклам'.upper(),
        "color": '006666',
        "icon": 'icon-corporate',
        "type": 'pentaho'
    }

    edu_button = {
        "link": "?userdata=edu",
        "text": u'Куратор'.upper(),
        "color": '006666',
        "icon": 'icon-sko',
        "type": 'inner'
    }

    admin_button = {
        "link": "?userdata=admin",
        "text": u'Управление ролями безопасности'.upper(),
        "color": '546E7A',
        "icon": 'icon-security',
        "type": 'inner'
    }

    buttons = []
    if userHasPermission(context, sid, "medstaffPerspective"):
#         buttons.append(medstaff_button)        
        for test_button in test_buttons:
            buttons.append(test_button)
        
    if userHasPermission(context, sid, "eduPerspective"):
        buttons.append(edu_button)
    if userHasPermission(context, sid, "methodPerspective"):
        buttons.append(method_button)
        #buttons.append(program_panel_button)
        #buttons.append(cycle_panel_button)
    if userHasPermission(context, sid, "securityPerspective"):
        buttons.append(admin_button)

#     test_buttons_div = []
#     for test_button in test_buttons:
#         onClick = "var url='%s';window.open(url,'_self');" % test_button["link"]
#         test_button_item = {
#                     '@onclick': onClick,
#                     '@class': 'mdl-cell mdl-cell--4-col mdl-cell--6-col-tablet mdl-cell--12-col-phone mdl-card mdl-shadow--3dp mdl-cell__border--{}'.format(test_button["color"]),
#                     'div': [
#                         {'@class': 'mdl-card__media',
#                          'span': {
#                             '@class': '{} mdl-cell__color--{}'.format(test_button["icon"], test_button["color"])}},
#                         {'@class': 'mdl-card__title mdl-cell__bgcolor--{}'.format(test_button["color"]),
#                          'span': {
#                             '@class': 'mdl-card__title-text',
#                             '#text': test_button["text"]}}]}
#         test_buttons_div.append(test_button_item)
    
    
    buttons_div = []
    userId, userPwd = 'admin', 'password'
    for button in buttons:
        onClick = "var url='%s';window.open(url,'_self');" % button["link"]
        if button["type"] == 'pentaho':
            onClick = "getAuth('','','','{}','{}','{}');".format(userId, userPwd, button["link"])
        buttonItem = {
                    '@onclick': onClick,
                    '@class': 'mdl-cell mdl-cell--12-col mdl-cell--12-col-tablet mdl-cell--12-col-phone mdl-card mdl-shadow--3dp mdl-cell__border--{}'.format(button["color"]),
                    'div': [
                        {'@class': 'mdl-card__media',
                         'span': {
                            '@class': '{} mdl-cell__color--{}'.format(button["icon"], button["color"])}},
                        {'@class': 'mdl-card__title mdl-cell__bgcolor--{}'.format(button["color"]),
                         'span': {
                            '@class': 'mdl-card__title-text',
                            '#text': button["text"]}}]}
        buttons_div.append(buttonItem)

    webtextsettings = {"properties": ''}

    webtextdata = {"div": {
                    'div': {
                        'div': {
                            'div': buttons_div,
                            "@class": "mdl-cell--5-col mdl-cell--6-col-tablet mdl-cell--12-col-phone"},
                        "@class": "welcome-card-container mdl-grid"},
        			'img' : {'@style': "position: absolute; top: 32px; right: 16px",
        					'@src': "resources/login_content/logo.png"},
                    "@class": "welcome-section"}}

    if not buttons:
#         context.error(u"Отсутствуют разрешения для работы с системой. Обратитесь к администратору")
        context.warning(u"Нет доступных разделов")       
    elif len(buttons) == 1:
        webtextdata["div"]["div"] = u"Пожалуйста, подождите..."
        webtextsettings = {"properties": {
                            "action": {
                                "#sorted": [
                                    {"main_context": 'current'},
                                    {"client": {
                                        "activity": [
                                            {
                                                "@id": 'link',
                                                "@name": "redirect",
                                                "add_context": buttons[0]["link"]}]}}]}}}

    settings = XMLJSONConverter.jsonToXml(json.dumps(webtextsettings))
    data = XMLJSONConverter.jsonToXml(json.dumps(webtextdata))

    return JythonDTO(data, settings)