tx · 3eyMNrcu1MNv1znrrj1TMdS5DjW5Er6ursUeEtJzAmDK

3N9bnBDbTLpgTYvhezFE8rSJyMEBBTH927Q:  -0.05000000 Waves

2022.02.04 00:25 [1907967] smart account 3N9bnBDbTLpgTYvhezFE8rSJyMEBBTH927Q > SELF 0.00000000 Waves

{ "type": 13, "id": "3eyMNrcu1MNv1znrrj1TMdS5DjW5Er6ursUeEtJzAmDK", "fee": 5000000, "feeAssetId": null, "timestamp": 1643923530583, "version": 2, "chainId": 84, "sender": "3N9bnBDbTLpgTYvhezFE8rSJyMEBBTH927Q", "senderPublicKey": "5tuiuQhSLUFHipVYrx5LHsWSRaDfEFeJCoXdGBKeuwr1", "proofs": [ "5BzWH9PmikLPpwuymaXGcihLvWSotLpnU39EwijqsYkZ5E4MTgTYNMxjSAe2eRprrLoed4kAQ598hSE3gCfJFPWW" ], "script": "base64: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", "height": 1907967, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9XcpN7G373tCZAbUP7q1zucGm6cXJ432LYngXn4ARFSu Next: Ffga2KfYKHkzycqePDoaqvePHgKAyM6ksXxpNFhtLw2D Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let presenceKey = "presences"
4+let estEnCours = "estEnCours"
55
6-let absenceKey = "absences"
6+let classeEnCours = "classeEnCours"
77
8-let totalCours = "totalCours"
8+let nodeValidatrice = "validatorNode"
99
10-let leaseIdKey = "leaseId"
10+func getClassName (nom,professeur) = ((nom + "_") + toString(professeur))
1111
12-func getNbPresence () = {
13- let nbPresence = getInteger(presenceKey)
14- match nbPresence {
15- case t: Int =>
16- t
17- case _ =>
18- 0
19- }
12+
13+func validerEleve (acc,e) = {
14+ let studentAddress = addressFromStringValue(take(e, 35))
15+ let studentStatus = takeRight(e, (size(e) - 34))
16+ let res = invoke(studentAddress, "validationPresence", [studentStatus, getStringValue(nodeValidatrice)], nil)
17+ if ((res == res))
18+ then true
19+ else throw("Strict value is not equal to itself.")
2020 }
2121
2222
23-func getNbCours () = {
24- let nbCours = getInteger(totalCours)
25- match nbCours {
26- case t: Int =>
27- t
28- case _ =>
29- 0
30- }
31- }
32-
33-
34-func getNbAbsence () = {
35- let nbAbsence = getInteger(absenceKey)
36- match nbAbsence {
37- case t: Int =>
38- t
39- case _ =>
40- 0
41- }
23+func testValid (e) = {
24+ let studentAddress = addressFromStringValue(take(e, 35))
25+ let studentStatus = takeRight(e, (size(e) - 36))
26+ let res = invoke(studentAddress, "validationPresence", [studentStatus, getStringValue(nodeValidatrice)], nil)
27+ if ((res == res))
28+ then unit
29+ else throw("Strict value is not equal to itself.")
4230 }
4331
4432
4533 @Callable(i)
46-func validationPresence (presence,addressToLease) = {
47- let nbPresence = getNbPresence()
48- let nbCours = getNbCours()
49- let nbAbsence = getNbAbsence()
50- if ((presence == "présent"))
51- then {
52- let leasableBalance = (wavesBalance(this).available - 100000)
53- let lease = Lease(addressFromStringValue(addressToLease), leasableBalance)
54- let leaseId = calculateLeaseId(lease)
55-[IntegerEntry(presenceKey, (nbPresence + 1)), IntegerEntry(totalCours, (nbCours + 1)), BinaryEntry(leaseIdKey, leaseId), IntegerEntry("balance", leasableBalance)]
56- }
57- else [IntegerEntry(absenceKey, (nbPresence + 1)), IntegerEntry(totalCours, (nbCours + 1)), LeaseCancel(getBinaryValue(leaseIdKey))]
34+func createOrModifyClass (nom,eleves) = [StringEntry(getClassName(nom, i.caller), eleves)]
35+
36+
37+
38+@Callable(i)
39+func deleteClass (nom) = [DeleteEntry(getClassName(nom, i.caller))]
40+
41+
42+
43+@Callable(i)
44+func ajouterValidateur (address) = [StringEntry(nodeValidatrice, address)]
45+
46+
47+
48+@Callable(i)
49+func faireAppel (classe,eleves) = {
50+ let leasedEtudiants = {
51+ let $l = eleves
52+ let $s = size($l)
53+ let $acc0 = nil
54+ func $f0_1 ($a,$i) = if (($i >= $s))
55+ then $a
56+ else validerEleve($a, $l[$i])
57+
58+ func $f0_2 ($a,$i) = if (($i >= $s))
59+ then $a
60+ else throw("List size exceeds 30")
61+
62+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
63+ }
64+[StringEntry(classeEnCours, getClassName(classe, i.caller)), BooleanEntry(estEnCours, true)]
5865 }
5966
6067
61-@Verifier(tx)
62-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
68+
69+@Callable(i)
70+func faireAppelEleve () = {
71+ let eleve = testValid("3N7at66kMSR66wPkY8pvnAcRg711XKkRmW7_présent")
72+[IntegerEntry("balance_available", wavesBalance(this).available)]
73+ }
74+
75+
76+
77+@Callable(i)
78+func arreterCours () = [StringEntry(classeEnCours, ""), BooleanEntry(estEnCours, false)]
79+
6380

github/deemru/w8io/3ef1775 
42.16 ms