Files
xWebinarService/Interfaces/IXWebinarProvider.cs
T
2025-11-05 16:17:03 +03:30

168 lines
5.4 KiB
C#

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 ...
/// <summary>
/// Converts Specified XWebinar Entity to it's Corresponding Dto Presentation
/// and also Fill Owner and Title/Description Resources ...
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
Task<XWebinarDto> ToXWebinarDto(XWebinar model);
/// <summary>
/// Converts Specified WebinarSubscriber Entity to it's Dto Presentation ...
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
Task<XWebinarSubscriberDto> ToXWebinarSubscriberDto(XWebinarSubscriber model);
#endregion
//
#region Actions ...
/// <summary>
/// Create Webinar ...
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
Task<XWebinarDto> CreateWebinar(XWebinarDto item);
/// <summary>
/// Update a Webinar ...
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
Task<XWebinarDto> UpdateWebinar(XWebinarDto item);
/// <summary>
/// Retrieve Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<XWebinarDto> GetWebinar(Guid id);
/// <summary>
/// Retrieve all Exists Webinars ...
/// </summary>
/// <returns></returns>
Task<IEnumerable<XWebinarDto>> GetWebinars();
/// <summary>
/// Query Webinars ...
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
Task<XQueryResult<XWebinarDto>> QueryWebinars(XQuery query);
/// <summary>
/// Remove Specified Webinar ...
/// </summary>
/// <param name="webinarId"></param>
/// <param name="requesterUserSelectByParam"></param>
/// <returns></returns>
Task<bool> RemoveWebinar(
Guid webinarId,
string requesterUserSelectByParam = null
);
#endregion
//
#region WebinarSubscriber ...
/// <summary>
/// Subscribe a User to Webinar ...
/// </summary>
/// <param name="webinarId"></param>
/// <param name="subscriberId"></param>
/// <param name="requesterUserSelectByParam"></param>
/// <returns></returns>
Task<bool> Subscribe(
Guid webinarId,
string subscriberId,
string requesterUserSelectByParam = null
);
/// <summary>
/// Check Specified User Subscribed on a Webinar or not ...
/// </summary>
/// <param name="webinarId"></param>
/// <param name="subscriberId"></param>
/// <returns></returns>
Task<bool> IsSubscribed(
Guid webinarId,
string subscriberId
);
/// <summary>
/// Unsubscribe Specified User from a Specified Webinar ...
/// </summary>
/// <param name="webinarId"></param>
/// <param name="subscriberId"></param>
/// <param name="requesterUserSelectByParam"></param>
/// <returns></returns>
Task<bool> Unsubscribe(
Guid webinarId,
string subscriberId,
string requesterUserSelectByParam = null
);
/// <summary>
/// Retrieve Specified Subscriber ...
/// </summary>
/// <param name="webinarId"></param>
/// <param name="subscriberId"></param>
/// <param name="requesterUserSelectByParam"></param>
/// <returns></returns>
Task<XWebinarSubscriberDto> GetSubscriber(
Guid webinarId,
string subscriberId,
string requesterUserSelectByParam = null
);
/// <summary>
/// Get all Specified Webinars Subscribers ...
/// </summary>
/// <param name="webinarId"></param>
/// <param name="requesterUserSelectByParam"></param>
/// <returns></returns>
Task<IEnumerable<XWebinarSubscriberDto>> GetSubscribers(
Guid webinarId,
string requesterUserSelectByParam = null
);
/// <summary>
/// Query Specified Webinar's Subscribers ...
/// </summary>
/// <param name="webinarId"></param>
/// <param name="query"></param>
/// <param name="requesterUserSelectByParam"></param>
/// <returns></returns>
Task<XQueryResult<XWebinarSubscriberDto>> QuerySubscribers(
Guid webinarId,
XQuery query,
string requesterUserSelectByParam = null
);
#endregion
}
}