Пример #1
0
 public bool IsFeasibleWithoutProcessing(ITakingOffAircraft aircraft)
 {
     return(aircraft.Moments[Moments.Appearance].Value +
            aircraft.Intervals[Intervals.ParkingPreliminaryStartMotion] +
            aircraft.Intervals[Intervals.MaxPreliminaryStartWaiting] <=
            aircraft.Moments[Moments.PlannedPreliminaryStartArrival].Value);
 }
Пример #2
0
        private bool IsPlannedMomentFeasible(ITakingOffAircraft aircraft)
        {
            // Если обработка нужна => вызываем метод {Контроллера} (И.2) и передаем {ВВС}
            if (aircraft.ProcessingIsNeeded)
            {
                return(controller.IsFeasibleWithProcessing(aircraft));
            }

            // Если обработка не нужна => вызываем метод {Контроллера} (И.1) и передаем {ВВС};
            return(controller.IsFeasibleWithoutProcessing(aircraft));
        }
Пример #3
0
 private TableRowCreationData GetTableRowCreationData(ITakingOffAircraft aircraft, string engineStartMoment, bool feasibility)
 {
     return(new TableRowCreationData(aircraft.Id.GetId(), aircraft.Moments[Moments.Appearance].Value.ToString(),
                                     aircraft.Moments[Moments.SpecPlatformLeave].Value.ToString(),
                                     aircraft.Moments[Moments.PreliminaryStartArrival].Value.ToString(),
                                     aircraft.Moments[Moments.PlannedPreliminaryStartArrival].Value.ToString(),
                                     engineStartMoment, aircraft.Intervals[Intervals.ProcessingWaiting].ToString(),
                                     aircraft.Intervals[Intervals.SafeMergeWaiting].ToString(),
                                     aircraft.Intervals[Intervals.PreliminaryStartWaiting].ToString(),
                                     aircraft.ProcessingIsNeeded, feasibility));
 }
Пример #4
0
        /// <summary>
        /// Полный рабочий цикл {Взлетающего ВС}: (7)
        /// </summary>
        /// <param name="aircraft"></param>
        private void FullWorkProcessWithTakingOffAircraft(ITakingOffAircraft aircraft)
        {
            // Проверяем выполнимость планового выхода на ПРСТ
            // Если выполнимо =>
            if (IsPlannedMomentFeasible(aircraft))
            {
                // Получаем интервал занимания ВПП через метод {ВВС} (И.2)
                var runwayOccupationInterval = aircraft.GetRunwayOccupationInterval();

                // Регистрируем {ВВС} на ВПП через метод (3);
                RegisterAircraftAtRunway(aircraft.GetRunwayId(), runwayOccupationInterval);

                var engineStartMoment = aircraft.GetEngineStartMoment();

                //  Если обработка нужна =>
                if (aircraft.ProcessingIsNeeded)
                {
                    // Получаем интервал занимания {Спец площадки} через метод {ВВС} (И.3)
                    var specPlatformOccupationInterval = aircraft.GetSpecPlatformOccupationInterval();

                    // Регистрируем {ВВС} на {Спец площадке} через метод (4)
                    RegisterAircraftAtSpecPlatform(aircraft.GetSpecPlatformId(), specPlatformOccupationInterval);
                }



                // Добавляем информацию о ВС в {Таблицу} через метод (5)
                // Собираем данные для публикации в таблице
                var tableRowData = GetTableRowCreationData(aircraft, engineStartMoment.Value.ToString(), true);

                // Добавляем информацию о ВС в {Таблицу} через метод (5)
                DisplayInformationInTable(tableRowData);
            }
            else
            {
                // Если не выполнимо =>

                var engineStartMoment = aircraft.GetEngineStartMoment();

                // Собираем данные для публикации в таблице
                var tableRowData = GetTableRowCreationData(aircraft, engineStartMoment.Value.ToString(), false);

                // Добавляем информацию о ВС в {Таблицу} через метод (5);
                DisplayInformationInTable(tableRowData);
            }
        }