@@ -25,7 +25,7 @@ pub mod EventFactory {
25
25
use crowd_pass :: {
26
26
errors :: Errors ,
27
27
interfaces :: {
28
- i_event_factory :: {EventData , IEventFactory },
28
+ i_event_factory :: {EventData , EventMetadata , IEventFactory },
29
29
i_ticket_721 :: {ITicket721Dispatcher , ITicket721DispatcherTrait },
30
30
},
31
31
};
@@ -37,7 +37,7 @@ pub mod EventFactory {
37
37
const STRK_TOKEN_ADDRESS : felt252 =
38
38
0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d ;
39
39
const TICKET_721_CLASS_HASH : felt252 =
40
- 0x02932c15f926119f4601b9914a38f7a9861effa19e3a7bfe3d14ce0528e6a908 ;
40
+ 0x005ee891ce47817ff2f1264599fc9e25d414eb6b84c74e83b2af7200f0ad1f0c ;
41
41
const TBA_REGISTRY_CLASS_HASH : felt252 =
42
42
0x2cbf50931c7ec9029c5188985ea5fa8aedc728d352bde12ec889c212f0e8b3 ;
43
43
const TBA_REGISTRY_CONTRACT_ADDRESS : felt252 =
@@ -277,22 +277,62 @@ pub mod EventFactory {
277
277
278
278
// -------------- GETTER FUNCTIONS -----------------------
279
279
280
- fn get_all_events (self : @ ContractState ) -> Array <EventData > {
280
+ fn get_all_events (self : @ ContractState ) -> Array <EventMetadata > {
281
281
let mut events = array! [];
282
- let _count = self . event_count. read ();
282
+ let count = self . event_count. read ();
283
283
let mut i : u256 = 1 ;
284
284
285
- while i < _count + 1 {
285
+ while i < count + 1 {
286
286
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 ;
289
308
};
290
309
291
310
events
292
311
}
293
312
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
296
336
}
297
337
298
338
fn get_event_count (self : @ ContractState ) -> u256 {
@@ -577,11 +617,11 @@ pub mod EventFactory {
577
617
578
618
fn _check_in (ref self : ContractState , event_id : u256 , attendee : ContractAddress ) {
579
619
let event_instance = self . events. entry (event_id ). read ();
580
-
620
+
581
621
// assert event has started
582
622
assert (event_instance . start_date >= get_block_timestamp (), Errors :: EVENT_NOT_STARTED );
583
623
assert (event_instance . end_date <= get_block_timestamp (), Errors :: EVENT_ENDED );
584
-
624
+
585
625
let ticket_address = event_instance . ticket_address;
586
626
let ticket = ITicket721Dispatcher { contract_address : ticket_address };
587
627
@@ -640,12 +680,15 @@ pub mod EventFactory {
640
680
let ticket_address = event_instance . ticket_address;
641
681
let ticket = ITicket721Dispatcher { contract_address : ticket_address };
642
682
643
- let ticket_owner = ticket . owner_of (ticket_id );
644
683
let caller = get_caller_address ();
645
- assert (caller == ticket_owner , Errors :: NOT_TICKET_OWNER );
646
- // ticket.burn(ticket_id);
647
-
648
684
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
+ );
649
692
650
693
let ticket_price = event_instance . ticket_price;
651
694
0 commit comments