<?php
// Kod för att simulera SAS.se:s partneraward-system
// "Economy håller drömmen vid liv, men Business och First är bara illusioner!"
function searchPartnerAward($flightDetails)
{
// Kontrollera om användaren försöker boka Economy (som alltid fungerar)
if ($flightDetails['class'] === 'economy') {
logDeveloperComment("Economy måste alltid fungera, annars förlorar vi användarnas förtroende!");
return [
"status" => "success",
"message" => "Resorna har hittats! Du kan boka din Economy-biljett."
];
}
// Kontrollera om det är en attraktiv flight (för Business/First)
if (isAttractiveFlight($flightDetails)) {
if (rand(0, 1)) { // 50% chans att biljetterna inte finns längre
return [
"status" => "error",
"message" => "Oops! Detta är en populär flight, biljetterna gick tyvärr till någon annan."
];
}
}
// Generellt problem med hög sannolikhet
$problemOccurs = rand(0, 1) || (rand(0, 3) === 1); // 75% chans för problem
if ($problemOccurs) {
$errorMessages = [
"När du surfade fick något hos din webbläsare oss att tro att du var en bot.",
"Det uppstod ett fel. Försök igen senare.",
"Hoppsan, ett fel har inträffat. Försök igen senare.",
"Sökgräns uppnådd.",
"Hoppsan! Något gick fel."
];
$error = $errorMessages[array_rand($errorMessages)];
logDeveloperComment("Business/First ska inte vara för lätt att boka!");
return [
"status" => "error",
"message" => $error
];
}
// Om allt mot förmodan fungerar
logDeveloperComment("Oj, Business eller First gick igenom. Kontrollera slumpgeneratorn!");
return [
"status" => "success",
"message" => "Resorna har hittats! Men kan du boka dem? Det är frågan."
];
}
function isAttractiveFlight($flightDetails)
{
// Kontrollera popularitet och kabinklass för att justera chansen till fel
$popularity = $flightDetails['popularity'] ?? 1; // Skala 1-10 (10 = mycket populär)
$cabinClass = $flightDetails['class'] ?? 'economy'; // 'economy', 'business', 'first'
// Economy är aldrig "attraktiv" nog att ge fel
if ($cabinClass === 'economy') {
return false;
}
// Öka chansen till problem för Business och First baserat på popularitet
$failureChance = $popularity * ($cabinClass === 'first' ? 0.4 : 0.3);
// Slumpa utifrån chansen till fel
return rand(0, 100) < ($failureChance * 100);
}
function logDeveloperComment($comment)
{
// Utvecklarkommentarer för att visa de "dolda reglerna"
echo "// Utvecklarkommentar: $comment\n";
}
// Returnera resultaten
return [
"Economy" => searchPartnerAward($flightDetailsEconomy),
"Business" => searchPartnerAward($flightDetailsBusiness)
];