TheAirline.Models.Airports.Terminal.GetFreeGates C# (CSharp) Méthode

GetFreeGates() public méthode

public GetFreeGates ( ) : int
Résultat int
        public int GetFreeGates()
        {
            if (Airline != null)
            {
                return Gates.NumberOfGates;
            }
            int terminalIndex =
                Airport.Terminals.AirportTerminals.Where(
                    a => a.Airline == null && a.Type == Type && a.DeliveryDate <= GameObject.GetInstance().GameTime)
                       .ToList()
                       .IndexOf(this);

            int terminalGates =
                Airport.Terminals.AirportTerminals.Where(
                    a => a.Airline != null && a.Type == Type && a.DeliveryDate <= GameObject.GetInstance().GameTime)
                       .Sum(t => t.Gates.NumberOfGates);

            int contracts = Airport.AirlineContracts.Where(c => c.TerminalType == Type).Sum(c => c.NumberOfGates) - terminalGates;

            int gates = 0;

            int i = 0;
            while (gates < contracts)
            {
                gates +=
                    Airport.Terminals.AirportTerminals.Where(
                        a => a.Airline == null && a.Type == Type && a.DeliveryDate <= GameObject.GetInstance().GameTime).ToList()[i].Gates
                                                                                                                                    .NumberOfGates;

                if (gates < contracts)
                {
                    i++;
                }
            }

            if (terminalIndex > i || contracts == 0)
            {
                return Gates.NumberOfGates;
            }

            if (terminalIndex < i)
            {
                return 0;
            }

            if (terminalIndex == i)
            {
                return gates - contracts;
            }

            return Gates.NumberOfGates;
        }

Usage Example

        public AirportTerminalMVVM(Terminal terminal, Boolean isBuyable, Boolean isSellable)
        {
            Terminal = terminal;

            Name = Terminal.Name;
            Airline = Terminal.Airline;
            Gates = Terminal.Gates.NumberOfGates;
            FreeGates = Terminal.GetFreeGates();
            IsBuyable = isBuyable;
            DeliveryDate = Terminal.DeliveryDate;
            IsSellable = isSellable;

            AllGates = new ObservableCollection<AirportGateMVVM>();

            int gatenumber = 1;

            foreach (Gate gate in Terminal.Gates.GetGates())
            {
                AllGates.Add(new AirportGateMVVM(gatenumber, gate.Airline));

                gatenumber++;
            }
        }