356 lines
11 KiB
C#
356 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq.Expressions;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
using xDataService.Configuration;
|
|
using xIdentityModels.Models;
|
|
using xIdentityService.Interfaces;
|
|
using xModels.Dtos;
|
|
using xWebinarService.Hubs;
|
|
using xWebinarService.Interfaces.Entities;
|
|
using xWebinarService.Models.Dtos;
|
|
using xWebinarService.Models.Entities;
|
|
using XFileDto = xFileService.Models.Dtos.XFileDto;
|
|
|
|
namespace xWebinarService.Interfaces
|
|
{
|
|
public interface IXWebinarProvider
|
|
{
|
|
//
|
|
#region Props ...
|
|
IHubContext<XWebinarEntityHub> Hub { get; }
|
|
IXIdentityProvider IdentityProvider { get; }
|
|
IXWebinarRepository WebinarRepository { get; }
|
|
IXWebinarTagProvider WebinarTagProvider { get; }
|
|
IXWebinarFileProvider WebinarFileProvider { 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>
|
|
/// <param name="tags"></param>
|
|
/// <param name="files"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <returns></returns>
|
|
Task<XWebinarDto> CreateWebinar(
|
|
XWebinarDto item,
|
|
IEnumerable<string> tags = null,
|
|
IFormFileCollection files = null,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Update a Webinar ...
|
|
/// </summary>
|
|
/// <param name="item"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <returns></returns>
|
|
Task<XWebinarDto> UpdateWebinar(
|
|
XWebinarDto item,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Retrieve Specified Webinar ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
Task<XWebinarDto> GetWebinar(Guid id);
|
|
|
|
/// <summary>
|
|
/// Retrieve all Exists Webinar Ids ...
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
IEnumerable<Guid> GetWebinarIds();
|
|
|
|
/// <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>
|
|
/// Conditional Query Webinars ...
|
|
/// </summary>
|
|
/// <param name="whereClause"></param>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
Task<XQueryResult<XWebinarDto>> ConditionalQueryWebinars(
|
|
Expression<Func<XWebinarDto, bool>> whereClause,
|
|
XQuery query
|
|
);
|
|
|
|
/// <summary>
|
|
/// Query Owned Webinars ...
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
Task<XQueryResult<XWebinarDto>> QueryOwnedWebinars(
|
|
XQuery query,
|
|
XUserClaimsInfoDto userInfo = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Query Joinable Webinars ...
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
Task<XQueryResult<XWebinarDto>> QueryJoinableWebinars(
|
|
XQuery query,
|
|
XUserClaimsInfoDto userInfo = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Query Webinar Ids ...
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
XQueryResult<Guid> QueryWebinarIds(XQuery query);
|
|
|
|
/// <summary>
|
|
/// Remove Specified Webinar ...
|
|
/// </summary>
|
|
/// <param name="webinarId"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <returns></returns>
|
|
Task<bool> RemoveWebinar(
|
|
Guid webinarId,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
#region WebinarSubscriber ...
|
|
/// <summary>
|
|
/// Subscribe a User to Webinar ...
|
|
/// </summary>
|
|
/// <param name="webinarId"></param>
|
|
/// <param name="subscriberId"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <returns></returns>
|
|
Task<bool> Subscribe(
|
|
Guid webinarId,
|
|
string subscriberId,
|
|
string connectionId = 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="connectionId"></param>
|
|
/// <returns></returns>
|
|
Task<bool> Unsubscribe(
|
|
Guid webinarId,
|
|
string subscriberId,
|
|
string connectionId = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Retrieve Specified Subscriber ...
|
|
/// </summary>
|
|
/// <param name="webinarId"></param>
|
|
/// <param name="subscriberId"></param>
|
|
/// <returns></returns>
|
|
Task<XWebinarSubscriberDto> GetSubscriber(
|
|
Guid webinarId,
|
|
string subscriberId
|
|
);
|
|
|
|
/// <summary>
|
|
/// Get all Specified Webinars Subscribers ...
|
|
/// </summary>
|
|
/// <param name="webinarId"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<XWebinarSubscriberDto>> GetSubscribers(Guid webinarId);
|
|
|
|
/// <summary>
|
|
/// Query Specified Webinar's Subscribers ...
|
|
/// </summary>
|
|
/// <param name="webinarId"></param>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
Task<XQueryResult<XWebinarSubscriberDto>> QuerySubscribers(
|
|
Guid webinarId,
|
|
XQuery query
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
#region File Actions ...
|
|
/// <summary>
|
|
/// Upload Files ...
|
|
/// </summary>
|
|
/// <param name="forProvidedId"></param>
|
|
/// <param name="files"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<XFileDto>> UploadFiles(
|
|
Guid id,
|
|
IFormFileCollection files,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Remove Specified Files ...
|
|
/// </summary>
|
|
/// <param name="forProvidedId"></param>
|
|
/// <param name="ids"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<Guid>> RemoveFiles(
|
|
Guid id,
|
|
string ids = null,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Get Webinar Files ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<XFileDto>> GetFiles(Guid id);
|
|
#endregion
|
|
|
|
//
|
|
#region Tags Actions ...
|
|
/// <summary>
|
|
/// Attach Tag to Specified File ...
|
|
/// </summary>
|
|
/// <param name="tag"></param>
|
|
/// <param name="id"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <param name="forceAttachToFiles"></param>
|
|
/// <returns></returns>
|
|
Task TagAttach(
|
|
string tag,
|
|
Guid id,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null,
|
|
bool forceAttachToFiles = true
|
|
);
|
|
|
|
/// <summary>
|
|
/// Detach Tag fro Specified File ...
|
|
/// </summary>
|
|
/// <param name="tag"></param>
|
|
/// <param name="id"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <param name="forceAttachToFiles"></param>
|
|
/// <returns></returns>
|
|
Task TagDetach(
|
|
string tag,
|
|
Guid id,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null,
|
|
bool forceDetachFromFiles = true
|
|
);
|
|
|
|
/// <summary>
|
|
/// Attach Tags for Specified File ...
|
|
/// </summary>
|
|
/// <param name="tags"></param>
|
|
/// <param name="id"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <param name="forceAttachToFiles"></param>
|
|
/// <returns></returns>
|
|
Task TagsAttach(
|
|
IEnumerable<string> tags,
|
|
Guid id,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null,
|
|
bool forceAttachToFiles = true
|
|
);
|
|
|
|
/// <summary>
|
|
/// Detach Tags for Specified File ...
|
|
/// </summary>
|
|
/// <param name="tags"></param>
|
|
/// <param name="id"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <param name="forceDetachFromFiles"></param>
|
|
/// <returns></returns>
|
|
Task TagsDetach(
|
|
IEnumerable<string> tags,
|
|
Guid id,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null,
|
|
bool forceDetachFromFiles = true
|
|
);
|
|
|
|
/// <summary>
|
|
/// Detach all Attached Tags for Specified File ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <param name="connectionId"></param>
|
|
/// <param name="forceDetachFromFiles"></param>
|
|
/// <returns></returns>
|
|
Task TagsDetach(
|
|
Guid id,
|
|
XUserClaimsInfoDto userInfo = null,
|
|
string connectionId = null,
|
|
bool forceDetachFromFiles = true
|
|
);
|
|
#endregion
|
|
}
|
|
} |