using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using xModels.Dtos; using xWebinarService.Models.Dtos; namespace xWebinarService.Interfaces { /// /// an Interface to Provides Webinar Provider Actions ... /// public interface IXWebinarServiceControllerActions { // #region Actions ... /// /// Create Webinar ... /// /// /// /// /// Task> CreateWebinar( [FromBody] XWebinarDto item, [FromQuery] string tags = null, [FromForm] IFormFileCollection files = null ); /// /// Update a Webinar ... /// /// /// Task> UpdateWebinar( [FromBody] XWebinarDto item ); /// /// Retrieve Specified Webinar ... /// /// /// Task> GetWebinar( [FromQuery] Guid id ); /// /// Retrieve all Exists Webinars ... /// /// Task>> GetWebinars(); /// /// Query Webinars ... /// /// /// Task>> QueryWebinars( [FromQuery] XQuery query ); /// /// Query Owned Webinars ... /// /// /// Task>> QueryOwnedWebinars( [FromQuery] XQuery query ); /// /// Query Joinable Webinars ... /// /// /// Task>> QueryJoinableWebinars( [FromQuery] XQuery query ); /// /// Remove Specified Webinar ... /// /// /// /// Task> RemoveWebinar( [FromQuery] Guid webinarId ); #endregion // #region WebinarSubscriber ... /// /// Subscribe a User to Webinar ... /// /// /// /// /// Task> Subscribe( [FromQuery] Guid webinarId, [FromQuery] string subscriberId ); /// /// Check Specified User Subscribed on a Webinar or not ... /// /// /// /// Task> IsSubscribed( [FromQuery] Guid webinarId, [FromQuery] string subscriberId ); /// /// Unsubscribe Specified User from a Specified Webinar ... /// /// /// /// /// Task> Unsubscribe( [FromQuery] Guid webinarId, [FromQuery] string subscriberId ); /// /// Retrieve Specified Subscriber ... /// /// /// /// /// Task> GetSubscriber( [FromQuery] Guid webinarId, [FromQuery] string subscriberId ); /// /// Get all Specified Webinars Subscribers ... /// /// /// /// Task>> GetSubscribers( [FromQuery] Guid webinarId ); /// /// Query Specified Webinar's Subscribers ... /// /// /// /// /// Task>> QuerySubscribers( [FromQuery] XQuery query, [FromQuery] Guid webinarId ); #endregion // #region File Actions ... /// /// Upload Specified Files for Specified Webinar ... /// /// /// /// Task>> Upload( [FromRoute] Guid id, [FromForm] IFormFileCollection files ); /// /// Remove Specified (All) Files of Specified Webinar ... /// /// /// /// Task>> Remove( [FromRoute] Guid id, [FromQuery] string ids = null ); /// /// Retrieve Specified Webinar's Files ... /// /// /// Task>> GetFiles( [FromRoute] Guid id ); #endregion // #region Tags Actions ... /// /// Attach Specified Tags To Specified Webinar ... /// /// /// /// Task TagsAttach( [FromRoute] Guid id, [FromQuery] string tags ); /// /// Detach Specified Tags From Specified Webinar ... /// /// /// /// Task TagsDetach( [FromRoute] Guid id, [FromQuery] string tags ); #endregion } }