diff --git a/contracts/AssociationRegistry.jsligo b/contracts/AssociationRegistry.jsligo index 790aa9cd7a6c727e70e1b4e03156094f4622a300..2ad61f48a7809659fd552e2fd41c543b758de513 100644 --- a/contracts/AssociationRegistry.jsligo +++ b/contracts/AssociationRegistry.jsligo @@ -1,4 +1,3 @@ - type coordinate = { x: int; y: int; @@ -28,8 +27,8 @@ const registrationFeeInitial: tez = 10 as tez; //Register a new DAO @entry function registerAssociation(newAssociation: association, storage: storage): return_ { - const existingAssociation = Big_map.find_opt(newAssociation.name, storage); - if (Option.is_some(existingAssociation)) { + const existingAssociation = Big_map.mem(newAssociation.name, storage); + if (existingAssociation) { failwith("Association already registered"); } const updatedStorage: storage = Big_map.add(newAssociation.name, { @@ -39,38 +38,47 @@ function registerAssociation(newAssociation: association, storage: storage): ret // Within the registerAssociation function const noOperations : list<operation> = list([]); - - - const result: return_ = [noOperations, updatedStorage]; return result; } + + //Change Admin @entry -function changeAdmin(associationName, newAdmin, storage) { - const associationOpt = Big_map.find_opt(associationName, storage); +function changeAdmin(associationName :string, newAdmin : address, stor: storage) { + const associationOpt = Big_map.find_opt(associationName, stor); if (Option.is_none(associationOpt)) { - failwith("Unknown association cannot change admin"); - } - - const association = Option.unopt(associationOpt, () => failwith("Failed to get association")); + failwith("Unknown association cannot change admin");} + const association = Option.unopt_with_error(associationOpt,"Failed to get association"); //todo - if (Some(Tezos.get_sender()) != association.admin) { + const senderAddress = Tezos.get_sender(); + 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); - const updatedStorage = Big_map.update(associationName, Some(updatedAssociation), storage); + return [list([]), updatedStorage]; +}; +*/ - const noOperations: list<operation> = []; - const result: return_ = [noOperations, updatedStorage]; - return result; -} //List associations @view