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

@author: i.lopatin

'''
import json

from common._common_orm import linesOfNumbersSeriesCursor
from common._common_orm import numbersSeriesCursor
from common.numbersseries import getNextNo
from qt._qt_orm import QtiQuestionCursor, QtiThemeCursor
from ru.curs.celesta.showcase.utils import XMLJSONConverter
from author._author_orm import serviceCatalogCursor
from java.text import SimpleDateFormat
from java.util import Date

try:
    from ru.curs.showcase.core.jython import JythonDTO
    from ru.curs.showcase.core.selector import ResultSelectorData
    from ru.beta2.extra.gwt.ui.selector.api import DataRecord
except:
    from ru.curs.celesta.showcase import JythonDTO, DataRecord, ResultSelectorData

def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None):
   
    u'''Процедура для отрисовки данных карточки. '''
    
    theme = QtiThemeCursor(context)
    question = QtiQuestionCursor(context)

    u"""Получение набора всего набора полей из данной таблицы"""
    gridContext = json.loads(session)['sessioncontext']['related']['gridContext']

    u"""Получение ThemeID выделенной записи"""
    currRecordId = gridContext["currentRecordId"]
        
    u"""Получение выделенной записи для таблицы qtiThemes"""
    theme.get(currRecordId)
    
    question.setRange("ThemeID", currRecordId)
    
    if question.count() > 0:
        context.message(u"Удаление данной темы, приведет к удалению всех вопросов внутри нее!")
    
    
    u"""Данные для полей на карточке"""    
    xformsdata = {"schema":{"themeData": {"@add":add,
                                            "@ThemeName": theme.ThemeName,
                                            "@ParentTheme": theme.ParentTheme,
                                            "@PackageID": theme.PackageID,
                                           }
                            }
                  }
    
    xformssettings = {"properties":{"event":{"@name":"single_click",
                                             "@linkId": "1",
                                             "action":{
                                                  "#sorted": [
                                                      {"main_context": "current"},
                                                      {"datapanel": {"@type": "current",
                                                                     "@tab": "current",
                                                                     "element": [{"@id":"webThemeGrid",
                                                                                 "add_context": ""},
                                                                                 
                                                                                 {"@id":"webQuestionGrid",
                                                                                 "add_context": "hide"}
                                                                                 ]
                                                                     }
                                                      }]}
                                             },
                                    
                                    }
                      }
    
    return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xformsdata)),
                     XMLJSONConverter.jsonToXml(json.dumps(xformssettings))
                     )


def cardDataDelete(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None):    
    u'''Процедура удаления'''  

    u"""Получение набора всего набора полей из данной таблицы"""
    idContent = json.loads(session)['sessioncontext']['related']['gridContext']
    
    u"""Создание курсора для таблицы qtiTheme и таблицы qtiQuestion"""
    theme = QtiThemeCursor(context)
    question = QtiQuestionCursor(context)

    currRecordId = idContent['currentRecordId']
    theme.get(currRecordId)
    
    u"""Настройка курсора таблицы qtiQuestion на вопросы, относящиеся к выбранной теме"""
    question.setRange("ThemeID", currRecordId)
    
    u"""Удаление всех вопросов"""
    if question.count() > 0:
        question.deleteAll()
        
    u"""Удаление выбранной темы"""
    theme.delete()
    
    context.message(u"Данные удалены")

