# coding: utf-8
import json
from java.util import ArrayList

from nci._nci_orm import education_baseCursor
from edu._edu_orm import course_edu_baseCursor

try:
    from ru.curs.showcase.core.jython import JythonDTO
    from ru.curs.showcase.core.jython import JythonDownloadResult
    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


def procListAndCount(context, main=None, add=None, filterinfo=None, session=None, params=None, curValue=None, startsWith=None, firstRecord=None, recordCount=None):
    session = json.loads(session)
    course_edu_base = course_edu_baseCursor(context)
    gridContext = session["sessioncontext"]["related"]["gridContext"]
    
#     for grid in gridContext:
#         if grid["@id"] == "courseGrid":
#             course_id = grid["selectedRecordId"]
    course_id = main
    course_edu_base.setRange("course_id",course_id)
    
    bases = []
    if course_edu_base.count() > 0:
        for base in course_edu_base.iterate():
            bases.append(base.edu_base_id)
            
    data = procList(context, session, bases, firstRecord, recordCount)
    count = procCount(bases)
    
    return ResultSelectorData(data.getDataRecordList(), count.getCount())

def procCount(bases):
    count = len(bases)

    return ResultSelectorData(None, count)

def procList(context, session, bases, firstRecord, recordCount):

    education_base = education_baseCursor(context)
    education_base.limit(firstRecord, recordCount)
    
    recordList = ArrayList()
    
    if bases:
        for id in bases:
            rec = DataRecord()
            education_base.get(id)
            rec.id = str(id)
            rec.name = education_base.name
            recordList.add(rec)


    return ResultSelectorData(recordList, 0)