async Task <UpdatedScheduledScaleEvent> IScaleManager.ScheduleScaleEvent(ScaleEvent scaleEvent, CancellationToken cancellationToken) { var events = await StateManager.GetStateAsync <List <ManagedScaleEvent> >(Events); var modifiedEvent = events.Find(e => e.Id == scaleEvent.Id); var state = modifiedEvent?.State ?? ScaleEventState.NotFound; if (modifiedEvent == null) { modifiedEvent = new ManagedScaleEvent { Id = scaleEvent.Id } } ; modifiedEvent.Name = scaleEvent.Name; modifiedEvent.RequiredScaleAt = scaleEvent.RequiredScaleAt; modifiedEvent.Scale = scaleEvent.Scale; modifiedEvent.StartScaleDownAt = scaleEvent.StartScaleDownAt; modifiedEvent.EstimatedScaleUpAt = modifiedEvent.RequiredScaleAt - EstimatedScaleTime; events.Add(modifiedEvent); await StateManager.SetStateAsync(Events, events, cancellationToken); return(new UpdatedScheduledScaleEvent { PreState = state, Id = modifiedEvent.Id, EstimatedScaleUpAt = modifiedEvent.EstimatedScaleUpAt, Name = modifiedEvent.Name, RequiredScaleAt = modifiedEvent.RequiredScaleAt, Scale = modifiedEvent.Scale, StartScaleDownAt = modifiedEvent.StartScaleDownAt, }); }
private static ScheduledScaleEvent ToScheduledScaleEvent(ManagedScaleEvent foundEvent) { return(new ScheduledScaleEvent { EstimatedScaleUpAt = foundEvent.EstimatedScaleUpAt, Id = foundEvent.Id, Name = foundEvent.Name, RequiredScaleAt = foundEvent.RequiredScaleAt, Scale = foundEvent.Scale, StartScaleDownAt = foundEvent.StartScaleDownAt, }); }