[
"autonomous agent",
{
"init": "{
$_Registre = 'MGIC6DY2L6I4F5MEB3LSBGUCSTNLIJTV';
// Principals
$args = trigger.data;
$adr__ = trigger.initial_address;
$unitat = trigger.output[[ asset != base ]].asset;
$provisio = $unitat == 'none';
$proces = $args.proces;
$idprop = $args.idprop;
$dades = $args.dades otherwise {};
// Funcions
// Retorna el valor d'una entrada del _Registre
$__dada = $refdada =>
data_feed [[
oracles = $_Registre,
feed_name = $refdada,
ifnone = 0
]];
// Obté valor argument requesta especificat o rebota
$__arg = $arg =>
$args[ $arg ] otherwise
bounce( "Cal proporcionar el valor de: " || $arg );
//...
if ( $__dada( '_Portal' ) != trigger.address )
bounce( 'Portal no reconegut' );
if ( ! $provisio ) {
$convocs = $__dada( 'Estels' ); // Haurien de ser "convocs"!!!
$qt = 1; // Pendent de definició!!!
// Comprovacions
if ( ! $__dada( $idprop ) )
bounce( 'No hi ha cap proposta amb aquesta id' );
// Tractament proposta encara pendent
if ( !! $__dada( 'validacio_' || $idprop ) OR !! $__dada( 'refus_' || $idprop ) )
bounce( 'La decisió sobre aquesta proposta ja ha estat presa' );
// La convocatòria encara no pot haver estat efectuada
if ( !! $__dada( 'convocatoria_' || $idprop ) )
bounce( "La convocatoria d'aquesta proposta ja ha estat efectuada" );
// ...
// Funció de selecció aleatòria
$__ord_aleatori = ( $ord, $nombre, $seed ) => {
$num_aleatori = number_from_seed( ( $seed || $ord || $idprop ), 1000 );
ceil( $num_aleatori / 1000 * $nombre )
};
// Convocatòries isox
$convocatories_i = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];
$nombre_isox = $__dada( 'ordinal_isox' );
$selec_isox = [];
$llista_isox = [];
$__isox_aleatori = $x => {
$seed_isox = $llista_isox[0] otherwise $adr__ ;
$ordinal_aleatori = $__ord_aleatori( $x, $nombre_isox, $seed_isox );
$_isox = $__dada( 'isox_' || $ordinal_aleatori );
$estat_isox = $__dada( 'isox_' || $_isox || '_estat' ) otherwise '';
if( $estat_isox == 'habilitat' AND ! contains( $llista_isox[0], $_isox ) ) {
$selec_isox[] = $_isox;
$llista_isox_actual = $llista_isox[0] otherwise '';
$llista_isox[0] = $_isox || ':' || $llista_isox_actual;
$dades[ 'convocatoria_' || $idprop || '_isox_' || $x ] = $_isox;
}
};
foreach( $convocatories_i, 12, $__isox_aleatori );
// Convocatòries delegades
$convocatories_d = [ 1, 2, 3, 4, 5, 6 ]; // Nombre limitat per als TESTS
$nombre_entitats = $__dada( 'ordinal_entitat' );
$selec_delegades = [];
$llista_entitats = [];
$llista_delegades = [];
$__entitat_aleatoria = $x => {
$seed_entitats = $llista_entitats[0] otherwise $llista_isox[0] ;
$ord_entitat_aleatori = $__ord_aleatori( $x, $nombre_entitats, $seed_entitats );
$ref_entitat = $__dada( 'entitat_' || $ord_entitat_aleatori );
$estat_entitat = $__dada( $ref_entitat || '_estat' ) otherwise '';
if( $estat_entitat == 'operatiu' AND ! contains( $llista_entitats[0], $ref_entitat ) ) {
$seed_delegades = $llista_delegades[0] otherwise $llista_entitats[0] ;
$ord_delegada_aleatori = $__ord_aleatori( $x, 3, $seed_delegades );
$ref_delegada = $ref_entitat || '_delegada_' || $ord_delegada_aleatori;
$_delegada = $__dada( $ref_delegada ) otherwise '';
$llista_entitats_actual = $llista_entitats[0] otherwise '';
$llista_entitats[0] = $ref_entitat || ':' || $llista_entitats_actual;
if( $_delegada != '' AND ! contains( $llista_delegades[0], $_delegada ) ) {
$selec_delegades[] = $_delegada;
$llista_delegades_actual = $llista_delegades[0] otherwise '';
$llista_delegades[0] = $_delegada || ':' || $llista_delegades_actual;
$dades[ 'convocatoria_' || $idprop || '_delegada_' || $x ] = $_delegada;
}
}
};
foreach( $convocatories_d, 6, $__entitat_aleatoria );
$selec_valoradores = $selec_isox || $selec_delegades;
$convocacions = [];
$__convocacions_seleccionades = $adr_valoradora => {
if( !! $adr_valoradora ) {
$convocacio = {
address : $adr_valoradora,
amount : $qt
};
$convocacions[] = $convocacio;
}
};
foreach( $selec_valoradores, 18, $__convocacions_seleccionades );
$dades[ 'convocatoria_' || $idprop ] = timestamp;
$registre = {};
$registre.dades = $dades;
}
}",
"messages": [
{
"if": "{ ! $provisio }",
"init": "{
$payload =
{
asset : $convocs,
outputs : $convocacions
};
}",
"app": "payment",
"payload": "{ $payload }"
},
{
"if": "{ ! $provisio }",
"app": "data",
"payload": "{ $registre }"
},
{
"if": "{ ! $provisio }",
"app": "payment",
"payload": {
"asset": "base",
"outputs": [
{
"address": "{ $args._Registre }",
"amount": "{ $__dada( 'Provisio' ) }"
}
]
}
},
{
"app": "state",
"state": "{
if ( ! $provisio ) {
response[ 'Procés' ] = $proces;
response[ 'Proposta' ] = $idprop;
response[ 'Nombre Isox' ] = $nombre_isox;
response[ 'Nombre Entitats' ] = $nombre_entitats;
response[ 'Isox Convocades' ] = $llista_isox[0];
response[ 'Entitats Convocades' ] = $llista_entitats[0];
response[ 'Delegades Convocades' ] = $llista_delegades[0];
}
}"
}
]
}
]