diff --git a/contract/contracts/event_registry/src/lib.rs b/contract/contracts/event_registry/src/lib.rs index ad31a2b..dd01384 100644 --- a/contract/contracts/event_registry/src/lib.rs +++ b/contract/contracts/event_registry/src/lib.rs @@ -505,6 +505,11 @@ impl EventRegistry { storage::get_event(&env, event_id) } + /// Returns the organizer address for a given event ID, or `None` if the event does not exist. + pub fn get_organizer_address(env: Env, event_id: String) -> Option
{ + storage::get_event(&env, event_id).map(|e| e.organizer_address) + } + /// Returns the total number of tickets sold for an event across all tiers. pub fn get_total_tickets_sold(env: Env, event_id: String) -> Result { let event = storage::get_event(&env, event_id).ok_or(EventRegistryError::EventNotFound)?; @@ -1019,11 +1024,9 @@ impl EventRegistry { event_id: String, scanner: Address, ) -> Result<(), EventRegistryError> { - let event_info = - storage::get_event(&env, event_id.clone()).ok_or(EventRegistryError::EventNotFound)?; - - // Only the organizer can authorize scanners - event_info.organizer_address.require_auth(); + let organizer = Self::get_organizer_address(env.clone(), event_id.clone()) + .ok_or(EventRegistryError::EventNotFound)?; + organizer.require_auth(); storage::authorize_scanner(&env, event_id.clone(), &scanner); @@ -1032,7 +1035,7 @@ impl EventRegistry { ScannerAuthorizedEvent { event_id, scanner, - authorized_by: event_info.organizer_address, + authorized_by: organizer, timestamp: env.ledger().timestamp(), }, ); diff --git a/contract/contracts/ticket_payment/src/contract.rs b/contract/contracts/ticket_payment/src/contract.rs index 99cc4e3..c0b78da 100644 --- a/contract/contracts/ticket_payment/src/contract.rs +++ b/contract/contracts/ticket_payment/src/contract.rs @@ -102,6 +102,7 @@ pub mod event_registry { pub trait EventRegistryInterface { fn get_event_payment_info(env: Env, event_id: String) -> PaymentInfo; fn get_event(env: Env, event_id: String) -> Option; + fn get_organizer_address(env: Env, event_id: String) -> Option
; fn increment_inventory(env: Env, event_id: String, tier_id: String, quantity: u32); fn decrement_inventory(env: Env, event_id: String, tier_id: String); fn get_global_promo_bps(env: Env) -> u32;