using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using xModels.Dtos; using XFileDto = xFileService.Models.Dtos.XFileDto; using xWebinarService.Models.Dtos; namespace xWebinarService.Interfaces { /// /// an Interface to Provides Webinar Provider Actions ... /// public interface IXWebinarServiceControllerActions { // #region Actions ... /// /// Create Webinar ... /// /// /// /// /// Task> CreateWebinar( [FromForm] XWebinarDto item, [FromQuery] string tags = null, [FromForm] IFormFileCollection files = null ); /// /// Update a Webinar ... /// /// /// /// Task> UpdateWebinar( [FromRoute] Guid id, [FromBody] XWebinarDto item ); /// /// Retrieve Specified Webinar ... /// /// /// Task> GetWebinar( [FromRoute] 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( [FromRoute] Guid id ); #endregion // #region WebinarSubscriber ... /// /// Subscribe a User to Webinar ... /// /// /// /// Task> Subscribe( [FromRoute] Guid id, [FromRoute] string subscriberId ); /// /// Check Specified User Subscribed on a Webinar or not ... /// /// /// /// Task> IsSubscribed( [FromRoute] Guid id, [FromRoute] string subscriberId ); /// /// Unsubscribe Specified User from a Specified Webinar ... /// /// /// /// Task> Unsubscribe( [FromRoute] Guid id, [FromRoute] string subscriberId ); /// /// Retrieve Specified Subscriber ... /// /// /// /// Task> GetSubscriber( [FromRoute] Guid id, [FromRoute] string subscriberId ); /// /// Get all Specified Webinars Subscribers ... /// /// /// Task>> GetSubscribers( [FromRoute] Guid id ); /// /// Query Specified Webinar's Subscribers ... /// /// /// /// Task>> QuerySubscribers( [FromRoute] Guid id, [FromQuery] XQuery query ); #endregion // #region File Actions ... /// /// Upload Specified Files for Specified Webinar ... /// /// /// /// Task>> UploadFiles( [FromRoute] Guid id, [FromForm] IFormFileCollection files ); /// /// Remove Specified (All) Files of Specified Webinar ... /// /// /// /// Task>> RemoveFiles( [FromRoute] Guid id, [FromQuery] string ids = null ); /// /// Retrieve Specified Webinar's Files ... /// /// /// Task>> GetFiles( [FromRoute] Guid id ); /// /// Stream Specified File of Specified Webinar ... /// /// /// /// Task StreamFile( [FromRoute] Guid id, [FromRoute] Guid fileId ); /// /// Download Specified File of Specified Webinar ... /// /// /// /// Task DownloadFile( [FromRoute] Guid id, [FromRoute] Guid fileId ); /// /// Attach Provided Files to Specified Webinar ... /// /// /// /// [HttpPost("{id}/Files/AttachMany")] Task AttachFiles( [FromRoute] Guid id, [FromQuery] string ids ); /// /// Detach Provided Files to Specified Webinar ... /// /// /// if null, detach all files ... /// [HttpDelete("{id}/Files/DetachMany")] Task DetachFiles( [FromRoute] Guid id, [FromQuery] string ids = null ); #endregion // #region Tags Actions ... /// /// Attach Specified Tags To Specified Webinar ... /// /// /// /// Task AttachTags( [FromRoute] Guid id, [FromQuery] string tags ); /// /// Detach Specified Tags From Specified Webinar ... /// /// /// /// Task DetachTags( [FromRoute] Guid id, [FromQuery] string tags ); /// /// Retrieve Specified Webinars Tags ... /// /// /// Task>> GetTags( [FromRoute] Guid id ); #endregion } }