
import sys
import pandas as pd
import pandas.io as pdio

from flask import Blueprint, request, jsonify, abort, Response

from app.resource.ResourceConstant import *

from app.entity.systemconfig.SystemEnumeration import *
from app.entity.systemconfig.SystemTemplate import *

from app.resource.CustomerJSONEncoder import *
from app.resource.ResponseBuilder import *

mod = Blueprint('systemConfig', __name__, url_prefix=ResourceConstant.SYSTEM_CONFIG)


@mod.route(ResourceConstant.SYSTEM_CONFIG_DATA_TEMPLATES, methods=['GET'])
def get_template():
    DATA_TEMPLATE = ['CalculatorDataBean', 
                     'Options',
                     'Stock']
    
    templateDict = {}
    for x in DATA_TEMPLATE:
        templateFile = './configure/template/' + x + '.csv'

        templateData = pdio.parsers.read_csv(templateFile, sep=',', header=0, na_values='')

        template = []
        for i in templateData.index:
            name = templateData.Name[i]
            displayName = templateData.Display_Name[i]
            dataType = templateData.Data_Type[i]
            isInput = bool(templateData.Is_Input[i])
            isOutput = bool(templateData.Is_Output[i])
            isVisible = bool(templateData.Is_Visible[i])
            dataFormat = templateData.Data_Format[i]
            defaultValue = templateData.Default_Value[i]
            
            template.append(SystemTemplate(name,displayName,dataType,isInput,isOutput,isVisible,dataFormat,defaultValue))
        
        templateDict[x] = template
    
    #js = dumps(templateDict, cls=CustomerJSONEncoder)
    #response = Response(js, status=200, mimetype='application/json')
    #response.headers.add('Access-Control-Allow-Origin', '*')
    #response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
    #response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
    #return response
    return ResponseBuilder.build(templateDict)
    
   
@mod.route(ResourceConstant.SYSTEM_CONFIG_ENUMERATION, methods=['GET'])
def get_enumeration():
    ENUMERATION = './configure/template/' + 'enumeration.csv'
    
    data = pdio.parsers.read_csv(ENUMERATION, sep=',', header=0, na_values=' ')

    enumDict = {}
    for i in data.index:
        enumId = data.id[i]
        code = data.Code[i]
        displayName = data.Display_Name[i]
        
        enumValue = enumDict.get(enumId, [])
        enumValue.append(SystemEnumeration(code, displayName))
        enumDict[enumId] = enumValue
    
    #js = dumps(enumDict, cls=CustomerJSONEncoder)
    #response = Response(js, status=200, mimetype='application/json')
    #response.headers.add('Access-Control-Allow-Origin', '*')
    #response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
    #response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
    #return response
    return ResponseBuilder.build(enumDict)

