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

from nci._nci_orm import education_formCursor
from edu._edu_orm import course_edu_formCursor

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_form = course_edu_formCursor(context)
    gridContext = session["sessioncontext"]["related"]["gridContext"]
    
#     for grid in gridContext:
#         if grid["@id"] == "courseGrid":
#             course_id = grid["selectedRecordId"]
    course_id = main    
    course_edu_form.setRange("course_id",course_id)
    
    forms = []
    if course_edu_form.count() > 0:
        for form in course_edu_form.iterate():
            forms.append(form.edu_form_id)
            
    data = procList(context, session, forms, firstRecord, recordCount)
    count = procCount(forms)
    
    return ResultSelectorData(data.getDataRecordList(), count.getCount())

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

    return ResultSelectorData(None, count)

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

    education_form = education_formCursor(context)
    education_form.limit(firstRecord, recordCount)
    
    recordList = ArrayList()
    
    if forms:
        for id in forms:
            rec = DataRecord()
            education_form.get(id)
            rec.id = str(id)
            rec.name = education_form.name
            recordList.add(rec)


    return ResultSelectorData(recordList, 0)