
import re, json, csv

#generic = importlib.import_module('generic')
from   generic.gn_api       import   gn_api # 
from   generic.gn_request   import   Request # 

class arqcsv(gn_api):
    
    def __init__(self, argv:list):
            
            self.db = False
            setup = self.setup(argv)
            
            self.arqcsv_request = False
            
            #self.ApplicationToken  = setup[0]    [  'NMTOKEN2API'] 
            #self.CompanyToken      = setup[0]    ['NMTOKEN2DADOS']
            
            super(arqcsv, self, ).__init__()
            
        
    def get_envirioment_config(self):
        self.environment_config = {}
        
    def fileHandler(self) :
        
        #self.call("beforeGet_" + self.atualWs['rote'])
        data = [self.csv_to_dict()]
        if not data :
            return
        
        #self.call("afterGet_" + self.atualWs['rote'])
        
        self.define_sd_request()
        self.call(self.atualWs['handler'] + "_handler", data)
        
    
    def csv_to_dict(self) :
        data = {}
        csvFile = self.read_file(self.rote)
        splitlines = csvFile.split("\n")
        
        if not splitlines :
            return data
        
        keys   = splitlines[0].split(";")
        rows = splitlines[1:] 
        
        row_list = []

        row_dict_pedido = {}
        for ir, row in enumerate(rows):
            row_dict_itens  = {}
            row_data = row.split(";")
            initial_pedido_state = True
            initial_itens_state = False
            
            for iv ,value in enumerate(row_data) :
                
                key_name = keys[iv].strip()
                if key_name == 'PRODUTO':
                    pedido_state    = not initial_pedido_state
                    itens_state     = not initial_itens_state
                elif key_name == 'EMPRESA':
                    pedido_state    =  initial_pedido_state
                    itens_state     =  initial_itens_state
                    
                
                
                if ir == 0 and pedido_state:
                    row_dict_pedido[key_name] = value.strip() 
                    
                if key_name == 'PRODUTO' and  not value :
                    break
                    
                if itens_state :
                    row_dict_itens[key_name] = value.strip() 
                    
            if row_dict_itens :
                row_list.append(row_dict_itens)
            
        
        data['PEDIDOS'] = row_dict_pedido
        data['PEDIDOS']['ITEMS'] = row_list
        
        return data['PEDIDOS']
        
    
    def get_order_items(self, order):
        return [ self.extractValues(item, "itenscarrinho_fields") for item in order['ITEMS']]
        
    
    def get_order_data(self, order) :
        return [ self.extractValues(order, 'pedido_fields') ]
        
    
    def salvar_cliente_softdib(self, data) :
        if data :
            return data['CDCLIENTE']
        else :
            super().salvar_cliente_softdib(data)
        
    
    def date(self, value) :
        if value:
            date = value.split(" ")[0]
            date = date.split("/")
            return "{ano}-{mes}-{dia}".format(
                ano=date[2]
                ,mes=date[1]
                ,dia=date[0]
            )
        
        return ''
    
    def hour(self, value) :
        if value:
            return value.split(" ")[1]
        
    
    