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