Files
xWebinarService/Interfaces/IXWebinarServiceControllerActions.cs
T

265 lines
8.0 KiB
C#

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
{
/// <summary>
/// an Interface to Provides Webinar Provider Actions ...
/// </summary>
public interface IXWebinarServiceControllerActions
{
//
#region Actions ...
/// <summary>
/// Create Webinar ...
/// </summary>
/// <param name="item"></param>
/// <param name="tags"></param>
/// <param name="files"></param>
/// <returns></returns>
Task<ActionResult<XWebinarDto>> CreateWebinar(
[FromForm] XWebinarDto item,
[FromQuery] string tags = null,
[FromForm] IFormFileCollection files = null
);
/// <summary>
/// Update a Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="item"></param>
/// <returns></returns>
Task<ActionResult<XWebinarDto>> UpdateWebinar(
[FromRoute] Guid id,
[FromBody] XWebinarDto item
);
/// <summary>
/// Retrieve Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<ActionResult<XWebinarDto>> GetWebinar(
[FromRoute] Guid id
);
/// <summary>
/// Retrieve all Exists Webinars ...
/// </summary>
/// <returns></returns>
Task<ActionResult<IEnumerable<XWebinarDto>>> GetWebinars();
/// <summary>
/// Query Webinars ...
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
Task<ActionResult<XQueryResult<XWebinarDto>>> QueryWebinars(
[FromQuery] XQuery query
);
/// <summary>
/// Query Owned Webinars ...
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
Task<ActionResult<XQueryResult<XWebinarDto>>> QueryOwnedWebinars(
[FromQuery] XQuery query
);
/// <summary>
/// Query Joinable Webinars ...
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
Task<ActionResult<XQueryResult<XWebinarDto>>> QueryJoinableWebinars(
[FromQuery] XQuery query
);
/// <summary>
/// Remove Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<ActionResult<bool>> RemoveWebinar(
[FromRoute] Guid id
);
#endregion
//
#region WebinarSubscriber ...
/// <summary>
/// Subscribe a User to Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="subscriberId"></param>
/// <returns></returns>
Task<ActionResult<bool>> Subscribe(
[FromRoute] Guid id,
[FromRoute] string subscriberId
);
/// <summary>
/// Check Specified User Subscribed on a Webinar or not ...
/// </summary>
/// <param name="id"></param>
/// <param name="subscriberId"></param>
/// <returns></returns>
Task<ActionResult<bool>> IsSubscribed(
[FromRoute] Guid id,
[FromRoute] string subscriberId
);
/// <summary>
/// Unsubscribe Specified User from a Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="subscriberId"></param>
/// <returns></returns>
Task<ActionResult<bool>> Unsubscribe(
[FromRoute] Guid id,
[FromRoute] string subscriberId
);
/// <summary>
/// Retrieve Specified Subscriber ...
/// </summary>
/// <param name="id"></param>
/// <param name="subscriberId"></param>
/// <returns></returns>
Task<ActionResult<XWebinarSubscriberDto>> GetSubscriber(
[FromRoute] Guid id,
[FromRoute] string subscriberId
);
/// <summary>
/// Get all Specified Webinars Subscribers ...
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<ActionResult<IEnumerable<XWebinarSubscriberDto>>> GetSubscribers(
[FromRoute] Guid id
);
/// <summary>
/// Query Specified Webinar's Subscribers ...
/// </summary>
/// <param name="id"></param>
/// <param name="query"></param>
/// <returns></returns>
Task<ActionResult<XQueryResult<XWebinarSubscriberDto>>> QuerySubscribers(
[FromRoute] Guid id,
[FromQuery] XQuery query
);
#endregion
//
#region File Actions ...
/// <summary>
/// Upload Specified Files for Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="files"></param>
/// <returns></returns>
Task<ActionResult<IEnumerable<XFileDto>>> UploadFiles(
[FromRoute] Guid id,
[FromForm] IFormFileCollection files
);
/// <summary>
/// Retrieve Specified Webinar's Files ...
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<ActionResult<IEnumerable<XFileDto>>> GetFiles(
[FromRoute] Guid id
);
/// <summary>
/// Stream Specified File of Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="fileId"></param>
/// <returns></returns>
Task<ActionResult> StreamFile(
[FromRoute] Guid id,
[FromRoute] Guid fileId
);
/// <summary>
/// Download Specified File of Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="fileId"></param>
/// <returns></returns>
Task<ActionResult> DownloadFile(
[FromRoute] Guid id,
[FromRoute] Guid fileId
);
/// <summary>
/// Attach Provided Files to Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="ids"></param>
/// <returns></returns>
[HttpPost("{id}/Files/AttachMany")]
Task<ActionResult> AttachFiles(
[FromRoute] Guid id,
[FromQuery] string ids
);
/// <summary>
/// Detach Provided Files to Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="ids">if null, detach all files ...</param>
/// <returns></returns>
[HttpDelete("{id}/Files/DetachMany")]
Task<ActionResult> DetachFiles(
[FromRoute] Guid id,
[FromQuery] string ids = null
);
#endregion
//
#region Tags Actions ...
/// <summary>
/// Attach Specified Tags To Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="tags"></param>
/// <returns></returns>
Task<ActionResult> AttachTags(
[FromRoute] Guid id,
[FromQuery] string tags
);
/// <summary>
/// Detach Specified Tags From Specified Webinar ...
/// </summary>
/// <param name="id"></param>
/// <param name="tags"></param>
/// <returns></returns>
Task<ActionResult> DetachTags(
[FromRoute] Guid id,
[FromQuery] string tags
);
/// <summary>
/// Retrieve Specified Webinars Tags ...
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<ActionResult<IEnumerable<string>>> GetTags(
[FromRoute] Guid id
);
#endregion
}
}