diff --git a/contracts/AssociationRegistry.jsligo b/contracts/AssociationRegistry.jsligo index 6c05400804326f592ba17d244b40e7b0570fd0f0..799471e43cc738d7175a03c4a9735d7ffeafb3c1 100644 --- a/contracts/AssociationRegistry.jsligo +++ b/contracts/AssociationRegistry.jsligo @@ -1,87 +1,44 @@ -type coordinate = { - x: int; - y: int; - z: int; -} - -type associationStatus = - | ["Active"] - | ["Inactive"] - | ["Pending"]; - -type association = { - name: string; - coordinate: coordinate; - status: associationStatus; - admin: option<address>; - registrationFee: tez; -}; - -type storage = big_map<string, association>; - -type return_ = [list<operation>, storage]; - +const registrationFeeInitial = 10 as tez; -const registrationFeeInitial= 10 as tez; - -//Register a new DAO @entry -function registerAssociation(newAssociation: association, storage: storage): return_ { - const existingAssociation = Big_map.mem(newAssociation.name, storage); - if (existingAssociation) { +function registerAssociation(newAssociation, storage) { + const existingAssociationOpt = Big_map.find_opt(newAssociation.name, storage); + if (Option.is_some(existingAssociationOpt)) { failwith("Association already registered"); } - const updatedStorage: storage = Big_map.add(newAssociation.name, { + + const updatedStorage = Big_map.add(newAssociation.name, { ...newAssociation, registrationFee: registrationFeeInitial }, storage); -// Within the registerAssociation function -const noOperations : list<operation> = list([]); - const result: return_ = [noOperations, updatedStorage]; - return result; + const noOperations = ([] : list<operation>); + return [noOperations, updatedStorage]; } - - -//Change Admin @entry -function changeAdmin(associationName :string, newAdmin : address, stor: storage) { +function changeAdmin(associationName, newAdmin, stor) { const associationOpt = Big_map.find_opt(associationName, stor); if (Option.is_none(associationOpt)) { - failwith("Unknown association cannot change admin");} - const association = Option.unopt_with_error(associationOpt,"Failed to get association"); - //todo + failwith("Unknown association cannot change admin"); + } + + const association = Option.unopt_with_error(associationOpt, "Failed to get association"); const senderAddress = Tezos.get_sender(); - if (!Option.is_some(association.admin) || senderAddress != Option.unopt(association.admin)) { + if (!Option.is_some(association.admin) || senderAddress != Option.unopt(association.admin)) { failwith("Only the current admin can change the admin"); } + const updatedAssociation = { ...association, admin: Some(newAdmin) - } - const updatedStorage = Big_map.update(associationName, Some(updatedAssociation), stor); - - return [list([],updatedStorage)] }; -/* -@entry -const destroy = (planetName: string, stor: storage): return_ => { - const existingPlanet = Big_map.find_opt(planetName, stor); - const planet = Option.unopt_with_error(existingPlanet, "Unknown planet cannot be destroyed"); - const senderAddress = Tezos.get_sender(); - if (!Option.is_some(planet.lord) || !Tezos.address_equals(senderAddress, Option.unopt(planet.lord))) { - failwith("Only the lord of the planet can destroy it"); - } - const updatedStorage = Big_map.remove(planetName, stor); - - return [list([]), updatedStorage]; -}; -*/ + const updatedStorage = Big_map.update(associationName, Some(updatedAssociation), stor); + return [[], updatedStorage]; +} -//List associations @view -function getAssociationDetails(associationName: string, storage: storage): option<association> { +function getAssociationDetails(associationName, storage) { return Big_map.find_opt(associationName, storage); }