from   tray.tray       import   tray # 

class base_solid(tray):
    def rote_filter_orders(self):
        
        sql =  """
            SELECT 
                DTULTIMAALTERACAO 
            FROM 
                TBRELACIONAID
            WHERE 
                1=1 
            AND 
                NMTABELA = '{table}'
            ORDER BY 
                DTULTIMAALTERACAO DESC 
            LIMIT 1;
        """.format(table=self.atualWs['table'])
        
        date = self.getDb().select(sql)
        
        if date:
            alterado_apos = date[0]['DTULTIMAALTERACAO']
        else :
            alterado_apos = "1980-01-01" 
        
        return  self.mountRouteParams(
            #{}
            #{ "status" : "Pedido confirmado", "modified": alterado_apos }
            {"status" : "A ENVIAR%", "modified": alterado_apos  }
            #{"id" : 33   }
        )
    
    def beforeSend_products(self, data):
        if data['Product']['stock'] == 0:
            data['Product']['available_in_store'] = 0

        return data
        
    def send_handler(self, data) :
        """
            Metodo para manipular o envio
        """
        
        # o data pode ser alterado aqui dentro
        self.prepare_send(data)
        
        # Faz um tratamento no dados antes de enviar
        func_rote = self.fixed_rote()
        func = f"beforeSend_{func_rote}"#.format(func_rote)
        # Tratamento de dados antes de enviar
        beforeSend = self.call(func, data, is_required= self.atualWs.get('need_beforeSend',False))

        data = beforeSend if beforeSend is not None else data

        #if self.hasAttr(func, self) :
        #    data = getattr(self, func)( data )
        #print("stop")
        if hasattr(self, 'ignore_request') and self.ignore_request == True:
            self.ignore_request = False
            return
        
        self.send( data )
        
        # Executa apoas enviar - cada rota tem a sua especifica - deve-se criar dentro da arquivo da api
        
        if not self.atualWs['send'] or self.send_response.status_code in range(200,300) :
            func = f"afterSend_{func_rote}"#format(func_rote)
            # Tratamento de dados depois de enviar
            #if self.hasAttr(func, self) :
            #    getattr(self, func)( data )
            self.call(func, data )
            
        self.current_data = {}