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 Webinar Ids ...
///
///
IEnumerable GetWebinarIds();
///
/// Retrieve all Exists Webinars ...
///
///
Task> GetWebinars();
///
/// Query Webinars ...
///
///
///
Task> QueryWebinars(XQuery query);
///
/// Query Webinar Ids ...
///
///
///
XQueryResult QueryWebinarIds(XQuery query);
///
/// Remove Specified Webinar ...
///
///
///
Task RemoveWebinar(Guid webinarId);
#endregion
//
#region WebinarSubscriber ...
///
/// Subscribe a User to Webinar ...
///
///
///
///
Task Subscribe(
Guid webinarId,
string subscriberId
);
///
/// 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
);
///
/// Retrieve Specified Subscriber ...
///
///
///
///
Task GetSubscriber(
Guid webinarId,
string subscriberId
);
///
/// Get all Specified Webinars Subscribers ...
///
///
///
Task> GetSubscribers(Guid webinarId);
///
/// Query Specified Webinar's Subscribers ...
///
///
///
///
Task> QuerySubscribers(
Guid webinarId,
XQuery query
);
#endregion
}
}