Skip to content

Commit 1403ca0

Browse files
committed
refactor EventFactory to use EventMetadata for event retrieval and update related methods
1 parent 93615f8 commit 1403ca0

File tree

1 file changed

+58
-15
lines changed

1 file changed

+58
-15
lines changed

src/event_factory/event_factory.cairo

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub mod EventFactory {
2525
use crowd_pass::{
2626
errors::Errors,
2727
interfaces::{
28-
i_event_factory::{EventData, IEventFactory},
28+
i_event_factory::{EventData, EventMetadata, IEventFactory},
2929
i_ticket_721::{ITicket721Dispatcher, ITicket721DispatcherTrait},
3030
},
3131
};
@@ -37,7 +37,7 @@ pub mod EventFactory {
3737
const STRK_TOKEN_ADDRESS: felt252 =
3838
0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d;
3939
const TICKET_721_CLASS_HASH: felt252 =
40-
0x02932c15f926119f4601b9914a38f7a9861effa19e3a7bfe3d14ce0528e6a908;
40+
0x005ee891ce47817ff2f1264599fc9e25d414eb6b84c74e83b2af7200f0ad1f0c;
4141
const TBA_REGISTRY_CLASS_HASH: felt252 =
4242
0x2cbf50931c7ec9029c5188985ea5fa8aedc728d352bde12ec889c212f0e8b3;
4343
const TBA_REGISTRY_CONTRACT_ADDRESS: felt252 =
@@ -277,22 +277,62 @@ pub mod EventFactory {
277277

278278
// -------------- GETTER FUNCTIONS -----------------------
279279

280-
fn get_all_events(self: @ContractState) -> Array<EventData> {
280+
fn get_all_events(self: @ContractState) -> Array<EventMetadata> {
281281
let mut events = array![];
282-
let _count = self.event_count.read();
282+
let count = self.event_count.read();
283283
let mut i: u256 = 1;
284284

285-
while i < _count + 1 {
285+
while i < count + 1 {
286286
let event: EventData = self.events.entry(i).read();
287-
events.append(event);
288-
i += 1;
287+
let ticket_address = event.ticket_address;
288+
let ticket = ITicket721Dispatcher { contract_address: ticket_address };
289+
let mut metadata = EventMetadata {
290+
id: event.id,
291+
organizer: event.organizer,
292+
ticket_address: ticket_address,
293+
name: ticket.name(),
294+
symbol: ticket.symbol(),
295+
uri: ticket.base_uri(),
296+
description: event.description,
297+
location: event.location,
298+
created_at: event.created_at,
299+
updated_at: event.updated_at,
300+
start_date: event.start_date,
301+
end_date: event.end_date,
302+
total_tickets: event.total_tickets,
303+
ticket_price: event.ticket_price,
304+
is_canceled: event.is_canceled,
305+
};
306+
events.append(metadata);
307+
i = i + 1;
289308
};
290309

291310
events
292311
}
293312

294-
fn get_event(self: @ContractState, event_id: u256) -> EventData {
295-
self.events.entry(event_id).read()
313+
fn get_event(self: @ContractState, event_id: u256) -> EventMetadata {
314+
let event = self.events.entry(event_id).read();
315+
let ticket_address = event.ticket_address;
316+
let ticket = ITicket721Dispatcher { contract_address: ticket_address };
317+
let mut metadata = EventMetadata {
318+
id: event.id,
319+
organizer: event.organizer,
320+
ticket_address: ticket_address,
321+
name: ticket.name(),
322+
symbol: ticket.symbol(),
323+
uri: ticket.base_uri(),
324+
description: event.description,
325+
location: event.location,
326+
created_at: event.created_at,
327+
updated_at: event.updated_at,
328+
start_date: event.start_date,
329+
end_date: event.end_date,
330+
total_tickets: event.total_tickets,
331+
ticket_price: event.ticket_price,
332+
is_canceled: event.is_canceled,
333+
};
334+
335+
metadata
296336
}
297337

298338
fn get_event_count(self: @ContractState) -> u256 {
@@ -577,11 +617,11 @@ pub mod EventFactory {
577617

578618
fn _check_in(ref self: ContractState, event_id: u256, attendee: ContractAddress) {
579619
let event_instance = self.events.entry(event_id).read();
580-
620+
581621
// assert event has started
582622
assert(event_instance.start_date >= get_block_timestamp(), Errors::EVENT_NOT_STARTED);
583623
assert(event_instance.end_date <= get_block_timestamp(), Errors::EVENT_ENDED);
584-
624+
585625
let ticket_address = event_instance.ticket_address;
586626
let ticket = ITicket721Dispatcher { contract_address: ticket_address };
587627

@@ -640,12 +680,15 @@ pub mod EventFactory {
640680
let ticket_address = event_instance.ticket_address;
641681
let ticket = ITicket721Dispatcher { contract_address: ticket_address };
642682

643-
let ticket_owner = ticket.owner_of(ticket_id);
644683
let caller = get_caller_address();
645-
assert(caller == ticket_owner, Errors::NOT_TICKET_OWNER);
646-
// ticket.burn(ticket_id);
647-
648684
let tba_address = self._get_tba(ticket_address, ticket_id);
685+
assert(caller == tba_address, Errors::CALLER_NOT_TBA);
686+
687+
let ticket_owner = ticket.owner_of(ticket_id);
688+
assert(
689+
self.event_attendance.entry(event_id).entry(ticket_owner).read(),
690+
Errors::NOT_TICKET_OWNER
691+
);
649692

650693
let ticket_price = event_instance.ticket_price;
651694

0 commit comments

Comments
 (0)