*/ $flights = $this->flights(); $flightsWithAircraft = $flights->filter(fn($f) => $f->aircraft !== null); $this->awardIf( $flightsWithAircraft->contains( fn(UserFlight $f) => in_array($f->aircraft->aircraft_description, ['LandPlane', 'SeaPlane']) ), 'aircraft.fly_on_a_plane' ); $this->awardIf( $flightsWithAircraft->contains( fn(UserFlight $f) => $f->aircraft->aircraft_description === 'Helicopter' ), 'aircraft.fly_on_a_helicopter' ); $this->awardIf( $flightsWithAircraft->contains( fn(UserFlight $f) => $f->aircraft->engine_type === 'Jet' ), 'aircraft.fly_on_a_jet' ); $this->awardIf( $flightsWithAircraft->contains( fn(UserFlight $f) => $f->aircraft->engine_type === 'Turboprop/Turboshaft' || $f->aircraft->engine_type === 'Piston' ), 'aircraft.fly_on_a_prop' ); // --- Engine count achievements --- $this->awardIf( $flightsWithAircraft->contains(fn(UserFlight $f) => $f->aircraft->engine_count === 1 && $f->aircraft->aircraft_description !== 'Helicopter'), 'aircraft.single_engine' ); $this->awardIf( $flightsWithAircraft->contains(fn(UserFlight $f) => $f->aircraft->engine_count === 2 && $f->aircraft->aircraft_description !== 'Helicopter'), 'aircraft.twin_engine' ); $this->awardIf( $flightsWithAircraft->contains(fn(UserFlight $f) => $f->aircraft->engine_count === 3 && $f->aircraft->aircraft_description !== 'Helicopter'), 'aircraft.tri_engine' ); $this->awardIf( $flightsWithAircraft->contains(fn(UserFlight $f) => $f->aircraft->engine_count === 4 && $f->aircraft->aircraft_description !== 'Helicopter'), 'aircraft.quad_engine' ); // --- Double decker --- $this->awardIf( $flightsWithAircraft->contains( fn(UserFlight $f) => in_array($f->aircraft->designator, self::DOUBLE_DECKER_DESIGNATORS) ), 'aircraft.double_decker' ); // --- Smaller manufacturer (scheduled service only) --- $this->awardIf( $flightsWithAircraft->contains( fn(UserFlight $f) => $f->airline && $f->flight_number && !in_array(strtolower($f->aircraft->manufacturer_code), ['boeing', 'airbus']) ), 'aircraft.smaller_manufacturer' ); // --- Boeing 7x7 families --- $flownBoeingFamilies = collect(Aircraft::BOEING_FAMILIES) ->filter(fn($designators) => $flightsWithAircraft->contains( fn(UserFlight $f) => in_array($f->aircraft->designator, $designators) ) ) ->count(); $this->awardProgress($flownBoeingFamilies, 'aircraft.all_boeing_7x7'); // --- Airbus A3xx families --- $flownAirbusFamilie = collect(Aircraft::AIRBUS_FAMILIES) ->filter(fn($designators) => $flightsWithAircraft->contains( fn(UserFlight $f) => in_array($f->aircraft->designator, $designators) ) ) ->count(); $this->awardProgress($flownAirbusFamilie, 'aircraft.all_airbus_a3xx'); } }