/// <summary> /// Возвращает минимальное время ожидания на ПРСТ /// </summary> /// <param name="startMoment">Момент выхода на ИСПСТ</param> /// <param name="endMoment">Момент покидания ВПП (взлета)</param> /// <returns></returns> public int GetPreliminaryStartMinDelayTime(IMoment startMoment, IMoment endMoment) { // Создаем интервал занимания обратившегося судна из переданных им данных; var currentInterval = new Interval(startMoment, endMoment); // Получаем левый и правый интервалы (метод ЗПД) относительно принятого интервала; var leftAndRightIntervals = this.GetLeftAndRightIntervalsRelative(currentInterval); var leftInterval = leftAndRightIntervals.Item1; var rightInterval = leftAndRightIntervals.Item2; // Проверяем пересечение полученного интервала с записанными в ВПП интервалами (метод (2) ЗПД): // Если пересечений нет => возвращаем ноль; if (leftInterval == null || !this.DoesIntervalsIntersect(currentInterval, leftInterval)) { if (rightInterval == null || !this.DoesIntervalsIntersect(currentInterval, rightInterval)) { return(0); } } // Если есть => получаем начальный момент (ключ для словаря) последнего обратившегося судна var lastAircraftStartMoment = OccupationIntervals.Keys.OrderBy(key => key).Last(); // Получаем момент покидания ВПП последнего обратившегося судна var leaveMoment = OccupationIntervals[lastAircraftStartMoment]; // Рассчитываем интервал ожидания на ПРСТ = момент покидания ВПП последним записанным судном // минус момент прибытия (без задержки) обратившегося судна; var waitingInterval = leaveMoment.Value - currentInterval.StartMoment.Value; // Возвращаем полученный интервал; return(waitingInterval); }
/// <summary> /// Initializes a new instance of the <see cref="AuthManager"/> class. /// </summary> /// <param name="userManager">The user manager.</param> /// <param name="dbContext">The database context.</param> /// <param name="moment">The moment.</param> public AuthManager( UserManager <AppUser> userManager, FvectContext dbContext, IMoment moment) { this.userManager = userManager; this.dbContext = dbContext; this.moment = moment; }
// Delete a moment when clicked. public void OnItemClick(AdapterView <object> parent, View view, int position, long id) { IMoment moment = mMomentListAdapter.GetItem(position); if (moment != null) { mPendingDeletion.Add(moment); Toast.MakeText(this, GetString(R.String.plus_remove_moment_status), Toast.LENGTH_SHORT).Show(); mPlusClientFragment.SignIn(REQUEST_CODE_PLUS_CLIENT_FRAGMENT); } }
/// <summary> /// Initializes a new instance of the <see cref="AuthenticationFlow"/> class. /// </summary> /// <param name="httpContextAccessor">The context accessor.</param> /// <param name="jwtCrytpoProvider">The crypto provider.</param> /// <param name="userManager">The user manager.</param> /// <param name="dbContext">The database context.</param> /// <param name="rngGenerator">The random generator.</param> /// <param name="moment">The current moment provider.</param> /// <param name="options">The options.</param> /// <param name="logger">The logger.</param> public AuthenticationFlow( IHttpContextAccessor httpContextAccessor, IJwtCryptoProvider jwtCrytpoProvider, UserManager <AppUser> userManager, FvectContext dbContext, ISecureRandomGenerator rngGenerator, IMoment moment, IOptionsMonitor <BackendOptions> options, ILogger <AuthenticationFlow> logger) { this.httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); this.jwtCrytpoProvider = jwtCrytpoProvider ?? throw new ArgumentNullException(nameof(jwtCrytpoProvider)); this.userManager = userManager ?? throw new ArgumentNullException(nameof(userManager)); this.dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext)); this.rngGenerator = rngGenerator ?? throw new ArgumentNullException(nameof(rngGenerator)); this.moment = moment ?? throw new ArgumentNullException(nameof(moment)); this.options = options ?? throw new ArgumentNullException(nameof(options)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
private void ModifyRow(IMoment moment, int index) { var row = MomentTable.NewRow(); if (moment is UniformMoment) { row[0] = "Равномерное движение"; } else if (moment is AcceleratedMoment) { row[0] = "Равноускоренное движение"; } else if (moment is FluctationMoment) { row[0] = "Колебательное движение"; } row[1] = moment.CalculateCoordinate(10); MomentTable.Rows.RemoveAt(index); MomentTable.Rows.InsertAt(row, index); }
private void AddRow(IMoment moment) { Moments.Add(moment); var row = MomentTable.NewRow(); if (moment is UniformMoment) { row[0] = "Равномерное движение"; } else if (moment is AcceleratedMoment) { row[0] = "Равноускоренное движение"; } else if (moment is FluctationMoment) { row[0] = "Колебательное движение"; } row[1] = moment.CalculateCoordinate(10); MomentTable.Rows.Add(row); }
public Interval(IMoment startMoment, IMoment endMoment, Intervals type = Intervals.Ordinary) { Type = type; StartMoment = startMoment; EndMoment = endMoment; }
public void Write(IMoment moment) { Console.WriteLine("{0}: {1} {2}", moment.MomentType, moment.Date, moment.Time); }