using System.Globalization;
public static class Program
public static void Main()
new Passenger { FirstName = "Richard", LastName = "Riddick", Nationality = "HU", BookingPassengerId = 1 }
var paymentEntries = new[]
new PaymentEntry { RefundCurrency = "HUF", FeeCode = "EUREG", RefundAmount = 7072m, ExchangeRate = 400m },
new PaymentEntry { RefundCurrency = "EUR", FeeCode = "AAF", RefundAmount = 50m, ExchangeRate = 1m }
Console.WriteLine(Do(passengers, paymentEntries));
public static string Do(Passenger[] claimPaymentPassengers, PaymentEntry[] paymentEntries)
var sb = new StringBuilder();
sb.AppendLine(CultureInfo.InvariantCulture, $"Comment: BenificiaryName");
foreach (var pax in claimPaymentPassengers)
foreach (var p in paymentEntries)
var passengerCount = claimPaymentPassengers.Length;
passengerCount = claimPaymentPassengers.Length;
var nationality = !string.IsNullOrWhiteSpace(pax.Nationality) ? $" ({pax.Nationality}) " : " ";
var amount = (p.RefundAmount / passengerCount) / (useEur ? p.ExchangeRate : 1m);
var currency = useEur ? "€" : p.RefundCurrency;
sb.AppendLine(CultureInfo.InvariantCulture, $"{pax.FirstName} {pax.LastName}{nationality}{pax.BookingPassengerId}");
sb.AppendLine(CultureInfo.InvariantCulture, $"{amount.Round():0.##} {currency} ({p.FeeCode})");
sb.AppendLine(CultureInfo.InvariantCulture, $"W6 2201 20122024");
public static decimal Round(this decimal d)
return Math.Round(d, 2, MidpointRounding.AwayFromZero);
public long BookingPassengerId {get;set;}
public string Nationality {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
public class PaymentEntry
public string RefundCurrency {get;set;}
public string FeeCode {get;set;}
public decimal RefundAmount {get;set;}
public decimal ExchangeRate {get;set;}