@@ -287,12 +287,7 @@ impl SubTrackrContract {
287287 }
288288
289289 /// User pauses their subscription with a specific duration
290- pub fn pause_by_subscriber (
291- env : Env ,
292- subscriber : Address ,
293- subscription_id : u64 ,
294- duration : u64 ,
295- ) {
290+ pub fn pause_by_subscriber ( env : Env , subscriber : Address , subscription_id : u64 , duration : u64 ) {
296291 subscriber. require_auth ( ) ;
297292
298293 let mut sub: Subscription = env
@@ -522,108 +517,6 @@ impl SubTrackrContract {
522517 ) ;
523518 }
524519
525- /// Request a refund for a subscription (can only be called by the subscriber)
526- pub fn request_refund ( env : Env , subscription_id : u64 , amount : i128 ) {
527- let mut sub: Subscription = env
528- . storage ( )
529- . persistent ( )
530- . get ( & DataKey :: Subscription ( subscription_id) )
531- . expect ( "Subscription not found" ) ;
532-
533- sub. subscriber . require_auth ( ) ;
534-
535- assert ! ( amount > 0 , "Refund amount must be positive" ) ;
536- assert ! (
537- amount <= sub. total_paid,
538- "Refund amount cannot exceed total paid"
539- ) ;
540-
541- sub. refund_requested_amount = amount;
542-
543- env. storage ( )
544- . persistent ( )
545- . set ( & DataKey :: Subscription ( subscription_id) , & sub) ;
546-
547- // Publish event
548- env. events ( ) . publish (
549- ( String :: from_str ( & env, "refund_requested" ) , subscription_id) ,
550- ( sub. subscriber . clone ( ) , amount) ,
551- ) ;
552- }
553-
554- /// Approve a refund (can only be called by the admin)
555- pub fn approve_refund ( env : Env , subscription_id : u64 ) {
556- let mut sub: Subscription = env
557- . storage ( )
558- . persistent ( )
559- . get ( & DataKey :: Subscription ( subscription_id) )
560- . expect ( "Subscription not found" ) ;
561-
562- let admin: Address = env
563- . storage ( )
564- . instance ( )
565- . get ( & DataKey :: Admin )
566- . expect ( "Admin not set" ) ;
567- admin. require_auth ( ) ;
568-
569- let amount = sub. refund_requested_amount ;
570- assert ! ( amount > 0 , "No pending refund request" ) ;
571-
572- let _plan: Plan = env
573- . storage ( )
574- . persistent ( )
575- . get ( & DataKey :: Plan ( sub. plan_id ) )
576- . expect ( "Plan not found" ) ;
577-
578- // TODO: Execute actual token transfer from merchant back to subscriber
579- // token::Client::new(&env, &plan.token).transfer(
580- // &plan.merchant, &sub.subscriber, &amount
581- // );
582-
583- sub. total_paid -= amount;
584- sub. refund_requested_amount = 0 ;
585-
586- env. storage ( )
587- . persistent ( )
588- . set ( & DataKey :: Subscription ( subscription_id) , & sub) ;
589-
590- // Publish event
591- env. events ( ) . publish (
592- ( String :: from_str ( & env, "refund_approved" ) , subscription_id) ,
593- ( sub. subscriber . clone ( ) , amount) ,
594- ) ;
595- }
596-
597- /// Reject a refund (can only be called by the admin)
598- pub fn reject_refund ( env : Env , subscription_id : u64 ) {
599- let mut sub: Subscription = env
600- . storage ( )
601- . persistent ( )
602- . get ( & DataKey :: Subscription ( subscription_id) )
603- . expect ( "Subscription not found" ) ;
604-
605- let admin: Address = env
606- . storage ( )
607- . instance ( )
608- . get ( & DataKey :: Admin )
609- . expect ( "Admin not set" ) ;
610- admin. require_auth ( ) ;
611-
612- assert ! ( sub. refund_requested_amount > 0 , "No pending refund request" ) ;
613-
614- sub. refund_requested_amount = 0 ;
615-
616- env. storage ( )
617- . persistent ( )
618- . set ( & DataKey :: Subscription ( subscription_id) , & sub) ;
619-
620- // Publish event
621- env. events ( ) . publish (
622- ( String :: from_str ( & env, "refund_rejected" ) , subscription_id) ,
623- sub. subscriber . clone ( ) ,
624- ) ;
625- }
626-
627520 // ── Queries ──
628521
629522 /// Get plan details
0 commit comments