public long GetValue()
{
double value = 0;
value += Money;
var fleet =
new List<FleetAirliner>(Fleet.FindAll(f => f.Purchased != FleetAirliner.PurchasedType.Leased));
value = fleet.Aggregate(value, (current, airliner) => current + airliner.Airliner.GetPrice());
var facilities = new List<AirlineFacility>(Facilities);
value += facilities.Sum(facility => facility.Price);
var airports = new List<Airport>(Airports);
value += airports.SelectMany(airport => new List<AirlineAirportFacility>(airport.GetAirportFacilities(this))).Sum(facility => facility.Facility.Price);
lock (Loans)
{
var loans = new List<Loan>(Loans);
value = loans.Aggregate(value, (current, loan) => current - loan.PaymentLeft);
}
var subs = new List<SubsidiaryAirline>(Subsidiaries);
value = subs.Aggregate(value, (current, subAirline) => current + subAirline.GetValue());
value = value/1000000;
if (double.IsNaN(value))
{
return 0;
}
return Convert.ToInt64(value);
}