1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- use solana_program::{
- entrypoint::ProgramResult,
- msg,
- program_error::ProgramError,
- };
- use crate::state::ride;
- // InstructionData Data
- pub struct GetOnRideInstructionData {
- pub rider_name: String,
- pub rider_height: u32,
- pub rider_ticket_count: u32,
- pub ride: String,
- }
- pub fn get_on_ride(ix: GetOnRideInstructionData) -> ProgramResult {
-
- let rides_list = ride::get_rides();
-
- for ride in rides_list.iter() {
-
- if ix.ride.eq(&ride.name) {
-
- msg!("You're about to ride the {}!", ride.name);
- if ix.rider_ticket_count < ride.tickets {
- msg!(" Sorry {}, you need {} tickets to ride the {}!", ix.rider_name, ride.tickets, ride.name);
- return Ok(())
- };
- if ix.rider_height < ride.min_height {
- msg!(" Sorry {}, you need to be {}\" tall to ride the {}!", ix.rider_name, ride.min_height, ride.name);
- return Ok(())
- };
- msg!(" Welcome aboard the {}!", ride.name);
- if ride.upside_down {
- msg!(" Btw, this ride goes upside down. Hold on tight!");
- };
- return Ok(())
- }
- }
- Err(ProgramError::InvalidInstructionData)
- }
|