using System; using System.Collections.Generic; using System.Threading.Tasks; using xDataService.Configuration; using xIdentityService.Interfaces; using xModels.Dtos; using xWebinarService.Interfaces.Entities; using xWebinarService.Models.Dtos; using xWebinarService.Models.Entities; namespace xWebinarService.Interfaces { public interface IXWebinarProvider { // #region Props ... IXIdentityProvider IdentityProvider { get; } IXWebinarRepository WebinarRepository { get; } XDataServiceConfiguration DataSercviceConfiguration { get; } IXWebinarTitleResourceProvider TitleResourceProvider { get; } IXWebinarSubscriberRepository WebinarSubscriberRepository { get; } IXWebinarDescriptionResourceProvider DescriptionResourceProvider { get; } #endregion // #region Tools ... /// /// Converts Specified XWebinar Entity to it's Corresponding Dto Presentation /// and also Fill Owner and Title/Description Resources ... /// /// /// Task ToXWebinarDto(XWebinar model); /// /// Converts Specified WebinarSubscriber Entity to it's Dto Presentation ... /// /// /// Task ToXWebinarSubscriberDto(XWebinarSubscriber model); #endregion // #region Actions ... /// /// Create Webinar ... /// /// /// Task CreateWebinar(XWebinarDto item); /// /// Update a Webinar ... /// /// /// Task UpdateWebinar(XWebinarDto item); /// /// Retrieve Specified Webinar ... /// /// /// Task GetWebinar(Guid id); /// /// Retrieve all Exists Webinars ... /// /// Task> GetWebinars(); /// /// Query Webinars ... /// /// /// Task> QueryWebinars(XQuery query); /// /// Remove Specified Webinar ... /// /// /// /// Task RemoveWebinar( Guid webinarId, string requesterUserSelectByParam = null ); #endregion // #region WebinarSubscriber ... /// /// Subscribe a User to Webinar ... /// /// /// /// /// Task Subscribe( Guid webinarId, string subscriberId, string requesterUserSelectByParam = null ); /// /// Check Specified User Subscribed on a Webinar or not ... /// /// /// /// Task IsSubscribed( Guid webinarId, string subscriberId ); /// /// Unsubscribe Specified User from a Specified Webinar ... /// /// /// /// /// Task Unsubscribe( Guid webinarId, string subscriberId, string requesterUserSelectByParam = null ); /// /// Retrieve Specified Subscriber ... /// /// /// /// /// Task GetSubscriber( Guid webinarId, string subscriberId, string requesterUserSelectByParam = null ); /// /// Get all Specified Webinars Subscribers ... /// /// /// /// Task> GetSubscribers( Guid webinarId, string requesterUserSelectByParam = null ); /// /// Query Specified Webinar's Subscribers ... /// /// /// /// /// Task> QuerySubscribers( Guid webinarId, XQuery query, string requesterUserSelectByParam = null ); #endregion } }