//returns if an airline can create a hub at an airport public static bool CanCreateHub(Airline airline, Airport airport, HubType type) { Terminal.TerminalType terminaltype = airline.AirlineRouteFocus == Route.RouteType.Cargo ? Terminal.TerminalType.Cargo : Terminal.TerminalType.Passenger; bool airlineHub = airport.GetHubs().Exists(h => h.Airline == airline); int airlineValue = (int) airline.GetAirlineValue() + 1; int totalAirlineHubs = airline.GetHubs().Count; // 'Airports.GetAllActiveAirports().Sum(a => a.Hubs.Count(h => h.Airline == airline)); double airlineGatesPercent = Convert.ToDouble(airport.Terminals.GetNumberOfGates(airline))/Convert.ToDouble(airport.Terminals.GetNumberOfGates(terminaltype))*100; switch (type.Type) { case HubType.TypeOfHub.FocusCity: return !airlineHub && airline.Money > AirportHelpers.GetHubPrice(airport, type); case HubType.TypeOfHub.RegionalHub: return !airlineHub && airline.Money > AirportHelpers.GetHubPrice(airport, type) && (airport.Profile.Size == GeneralHelpers.Size.Large || airport.Profile.Size == GeneralHelpers.Size.Medium) && airport.GetHubs().Count < 7; case HubType.TypeOfHub.FortressHub: return !airlineHub && airline.Money > AirportHelpers.GetHubPrice(airport, type) && (airport.Profile.Size > GeneralHelpers.Size.Medium) && airlineGatesPercent > 70 && (totalAirlineHubs < airlineValue); case HubType.TypeOfHub.Hub: return !airlineHub && airline.Money > AirportHelpers.GetHubPrice(airport, type) && (airlineGatesPercent > 20) && (totalAirlineHubs < airlineValue) && (airport.GetHubs(HubType.TypeOfHub.Hub).Count < (int) airport.Profile.Size); } return false; }
//add insurance policy public static void CreatePolicy(Airline airline, FleetAirliner airliner, AirlinerInsurance.InsuranceType type, AirlinerInsurance.InsuranceScope scope, AirlinerInsurance.PaymentTerms terms, double length, int amount) { #region Method Setup var rnd = new Random(); double hub = airline.GetHubs().Count()*0.1; var policy = new AirlinerInsurance(type, scope, terms, amount) { InsuranceEffective = GameObject.GetInstance().GameTime, InsuranceExpires = GameObject.GetInstance().GameTime.AddYears((int) length), PolicyIndex = GameObject.GetInstance().GameTime.ToString(CultureInfo.InvariantCulture) + airline }; switch (policy.InsTerms) { case AirlinerInsurance.PaymentTerms.Monthly: policy.RemainingPayments = length*12; break; case AirlinerInsurance.PaymentTerms.Quarterly: policy.RemainingPayments = length*4; break; case AirlinerInsurance.PaymentTerms.Biannual: policy.RemainingPayments = length*2; break; case AirlinerInsurance.PaymentTerms.Annual: policy.RemainingPayments = length; break; } //sets up multipliers based on the type and scope of insurance policy var typeMultipliers = new Dictionary<AirlinerInsurance.InsuranceType, double>(); var scopeMultipliers = new Dictionary<AirlinerInsurance.InsuranceScope, double>(); const double typeMLiability = 1; const double typeMGroundParked = 1.2; const double typeMGroundTaxi = 1.5; const double typeMGroundCombined = 1.8; const double typeMInFlight = 2.2; const double typeMFullCoverage = 2.7; const double scMAirport = 1; const double scMDomestic = 1.5; double scMHub = 1.5 + hub; double scMGlobal = 2.0 + hub; #endregion #region Domestic/Int'l Airport Counter int i = 0; int j = 0; foreach (Airport airport in GameObject.GetInstance().HumanAirline.Airports) { if (airport.Profile.Country != GameObject.GetInstance().HumanAirline.Profile.Country) { i++; } else j++; } #endregion // all the decision making for monthly payment amounts and deductibles switch (type) { #region Liability case AirlinerInsurance.InsuranceType.Liability: switch (scope) { case AirlinerInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMLiability*scMAirport; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMLiability*scMDomestic; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMLiability*scMHub; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMLiability*scMGlobal; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion #region Ground Parked case AirlinerInsurance.InsuranceType.GroundParked: switch (scope) { case AirlinerInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundParked*scMAirport; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundParked*scMDomestic; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundParked*scMHub; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundParked*scMGlobal; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion #region Ground Taxi case AirlinerInsurance.InsuranceType.GroundTaxi: switch (scope) { case AirlinerInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundTaxi*scMAirport; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundTaxi*scMDomestic; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundTaxi*scMHub; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundTaxi*scMGlobal; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion #region Ground Combined case AirlinerInsurance.InsuranceType.CombinedGround: switch (scope) { case AirlinerInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundCombined*scMAirport; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundCombined*scMDomestic; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundCombined*scMHub; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMGroundCombined*scMGlobal; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion #region In Flight case AirlinerInsurance.InsuranceType.InFlight: switch (scope) { case AirlinerInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMInFlight*scMAirport; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMInFlight*scMDomestic; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMInFlight*scMHub; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMInFlight*scMGlobal; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion #region Full Coverage case AirlinerInsurance.InsuranceType.FullCoverage: switch (scope) { case AirlinerInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMFullCoverage*scMAirport; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMFullCoverage*scMDomestic; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMFullCoverage*scMHub; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlinerInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMFullCoverage*scMGlobal; if (terms == AirlinerInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlinerInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlinerInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlinerInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion } }
//add insurance policy public static AirlineInsurance CreatePolicy(Airline airline, AirlineInsurance.InsuranceType type, AirlineInsurance.InsuranceScope scope, AirlineInsurance.PaymentTerms terms, bool allAirliners, double length, int amount) { #region Method Setup var rnd = new Random(); double modifier = GetRatingModifier(airline); double hub = airline.GetHubs().Count()*0.1; var policy = new AirlineInsurance(type, scope, terms, amount) { InsuranceEffective = GameObject.GetInstance().GameTime, InsuranceExpires = GameObject.GetInstance().GameTime.AddYears((int) length), PolicyIndex = GameObject.GetInstance().GameTime.ToString(CultureInfo.InvariantCulture) + airline, TermLength = length }; switch (policy.InsTerms) { case AirlineInsurance.PaymentTerms.Monthly: policy.RemainingPayments = length*12; break; case AirlineInsurance.PaymentTerms.Quarterly: policy.RemainingPayments = length*4; break; case AirlineInsurance.PaymentTerms.Biannual: policy.RemainingPayments = length*2; break; case AirlineInsurance.PaymentTerms.Annual: policy.RemainingPayments = length; break; } //sets up multipliers based on the type and scope of insurance policy var typeMultipliers = new Dictionary<AirlineInsurance.InsuranceType, double>(); var scopeMultipliers = new Dictionary<AirlineInsurance.InsuranceScope, double>(); double typeMPublic = modifier; double typeMPassenger = modifier + 0.2; double typeMCSL = modifier + 0.5; double typeMFull = modifier + 1; double scMAirport = modifier; double scMDomestic = modifier + 0.2; double scMHub = modifier + hub + 0.5; double scMGlobal = modifier + hub + 1; #endregion #region Domestic/Int'l Airport Counter int i = 0; int j = 0; foreach (Airport airport in GameObject.GetInstance().HumanAirline.Airports) { if (airport.Profile.Country != GameObject.GetInstance().HumanAirline.Profile.Country) { i++; } else j++; } #endregion // all the decision making for monthly payment amounts and deductibles #region Public Liability switch (type) { case AirlineInsurance.InsuranceType.PublicLiability: switch (scope) { case AirlineInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMPublic*scMAirport; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMPublic*scMDomestic; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMPublic*scMHub; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMPublic*scMGlobal; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion #region Passenger Liability case AirlineInsurance.InsuranceType.PassengerLiability: switch (scope) { case AirlineInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMPassenger*scMAirport; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMPassenger*scMDomestic; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMPassenger*scMHub; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMPassenger*scMGlobal; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion #region Combined Single Limit case AirlineInsurance.InsuranceType.CombinedSingleLimit: switch (scope) { case AirlineInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMCSL*scMAirport; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMCSL*scMDomestic; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMCSL*scMHub; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMCSL*scMGlobal; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } break; #endregion #region Full Coverage case AirlineInsurance.InsuranceType.FullCoverage: switch (scope) { case AirlineInsurance.InsuranceScope.Airport: policy.Deductible = amount*0.005; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMFull*scMAirport; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Domestic: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMFull*scMDomestic; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Hub: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMFull*scMHub; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; case AirlineInsurance.InsuranceScope.Global: policy.Deductible = amount*0.001; policy.PaymentAmount = policy.InsuredAmount*(4/10)*typeMFull*scMGlobal; if (terms == AirlineInsurance.PaymentTerms.Annual) policy.PaymentAmount = policy.InsuredAmount/length; if (terms == AirlineInsurance.PaymentTerms.Biannual) policy.PaymentAmount = policy.InsuredAmount/length/2; if (terms == AirlineInsurance.PaymentTerms.Quarterly) policy.PaymentAmount = policy.InsuredAmount/length/4; if (terms == AirlineInsurance.PaymentTerms.Monthly) policy.PaymentAmount = policy.InsuredAmount/length/12; break; } #endregion break; } if (allAirliners) { amount *= airline.Fleet.Count(); policy.PaymentAmount *= (airline.Fleet.Count()*0.95); } return policy; }