using System.Collections.Generic; using System.Threading.Tasks; using Timeline.Services.Timeline; using Timeline.Services.User; namespace Timeline.Services.Api { /// /// Service that controls highlight timeline. /// public interface IHighlightTimelineService { /// /// Get all highlight timelines in order. /// /// Id list of all highlight timelines. Task> GetHighlightTimelinesAsync(); /// /// Check if a timeline is highlight timeline. /// /// Timeline id. /// If true it will throw if timeline does not exist. /// True if timeline is highlight. Otherwise false. /// Thrown when timeline does not exist and is true. Task IsHighlightTimelineAsync(long timelineId, bool checkTimelineExistence = true); /// /// Add a timeline to highlight list. /// /// The timeline id. /// The user id of operator. /// True if timeline is actually added to highligh. False if it already is. /// Thrown when timeline with given id does not exist. /// Thrown when user with given operator id does not exist. Task AddHighlightTimelineAsync(long timelineId, long? operatorId); /// /// Remove a timeline from highlight list. /// /// The timeline id. /// The user id of operator. /// True if deletion is actually performed. Otherwise false (timeline was not in the list). /// Thrown when timeline with given id does not exist. /// Thrown when user with given operator id does not exist. Task RemoveHighlightTimelineAsync(long timelineId, long? operatorId); /// /// Move a highlight timeline to a new position. /// /// The timeline name. /// The new position. Starts at 1. /// Thrown when timeline with given id does not exist. /// Thrown when given timeline is not a highlight timeline. /// /// If is smaller than 1. Then move the timeline to head. /// If is bigger than total count. Then move the timeline to tail. /// Task MoveHighlightTimelineAsync(long timelineId, long newPosition); } }