last ...
This commit is contained in:
@@ -0,0 +1,488 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using xCommons.Configurations;
|
||||
using xCommons.Extensions;
|
||||
using xCommons.Providers;
|
||||
using xIdentityService.Controllers;
|
||||
using xIdentityService.Interfaces;
|
||||
using xModels.Dtos;
|
||||
using xWebinarService.Interfaces;
|
||||
using xWebinarService.Models.Dtos;
|
||||
|
||||
namespace xWebinarService.Controller
|
||||
{
|
||||
/// <summary>
|
||||
/// a Controller base Class which implement based Actions to Provides Webinar Provider Access ...
|
||||
/// </summary>
|
||||
public class XWebinarServiceControllerBase : XIBaseProviderController, IXWebinarServiceControllerActions
|
||||
{
|
||||
//
|
||||
#region Props ...
|
||||
public IXWebinarProvider WebinarProvider { get; }
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region Constructor ...
|
||||
public XWebinarServiceControllerBase(
|
||||
ILogger logger,
|
||||
IXWebinarProvider webinarProvider,
|
||||
XAppConfiguration appConfiguration,
|
||||
IXIdentityProvider identityProvider,
|
||||
XValidationProvider validationProvider
|
||||
) : base(
|
||||
logger,
|
||||
appConfiguration,
|
||||
identityProvider,
|
||||
validationProvider
|
||||
)
|
||||
{
|
||||
//
|
||||
WebinarProvider = webinarProvider;
|
||||
}
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region Actions ...
|
||||
/// <summary>
|
||||
/// Create Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("Create")]
|
||||
public virtual async Task<ActionResult<XWebinarDto>> CreateWebinar(
|
||||
[FromBody] XWebinarDto item
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.CreateWebinar(item);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update a Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("Update")]
|
||||
public virtual async Task<ActionResult<XWebinarDto>> UpdateWebinar(
|
||||
[FromBody] XWebinarDto item
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.UpdateWebinar(item);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve Specified Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("")]
|
||||
public virtual async Task<ActionResult<XWebinarDto>> GetWebinar(
|
||||
[FromQuery] Guid id
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.GetWebinar(id);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve all Exists Webinars ...
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("All")]
|
||||
public virtual async Task<ActionResult<IEnumerable<XWebinarDto>>> GetWebinars()
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.GetWebinars();
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Query Webinars ...
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("Query")]
|
||||
public virtual async Task<ActionResult<XQueryResult<XWebinarDto>>> QueryWebinars(
|
||||
[FromQuery] XQuery query
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.QueryWebinars(query);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Remove Specified Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
[HttpDelete("Remove")]
|
||||
public virtual async Task<ActionResult<bool>> RemoveWebinar(
|
||||
[FromQuery] Guid webinarId
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
// Retrieve UserInfo ...
|
||||
var userInfo = await GetUserInfo();
|
||||
var requesterId = userInfo.UserId;
|
||||
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.RemoveWebinar(
|
||||
webinarId: webinarId,
|
||||
requesterUserSelectByParam: requesterId
|
||||
);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region WebinarSubscriber ...
|
||||
/// <summary>
|
||||
/// Subscribe a User to Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="subscriberId"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("Subscribe")]
|
||||
public virtual async Task<ActionResult<bool>> Subscribe(
|
||||
[FromQuery] Guid webinarId,
|
||||
[FromQuery] string subscriberId
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
// Retrieve UserInfo ...
|
||||
var userInfo = await GetUserInfo();
|
||||
var requesterId = userInfo.UserId;
|
||||
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.Subscribe(
|
||||
webinarId: webinarId,
|
||||
subscriberId: subscriberId,
|
||||
requesterUserSelectByParam: requesterId
|
||||
);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check Specified User Subscribed on a Webinar or not ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="subscriberId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("IsSubscribed")]
|
||||
public virtual async Task<ActionResult<bool>> IsSubscribed(
|
||||
[FromQuery] Guid webinarId,
|
||||
[FromQuery] string subscriberId
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
// Retrieve UserInfo ...
|
||||
var userInfo = await GetUserInfo();
|
||||
var requesterId = userInfo.UserId;
|
||||
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.IsSubscribed(
|
||||
webinarId: webinarId,
|
||||
subscriberId: subscriberId
|
||||
);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Unsubscribe Specified User from a Specified Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="subscriberId"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("Unsubscribe")]
|
||||
public virtual async Task<ActionResult<bool>> Unsubscribe(
|
||||
[FromQuery] Guid webinarId,
|
||||
[FromQuery] string subscriberId
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
// Retrieve UserInfo ...
|
||||
var userInfo = await GetUserInfo();
|
||||
var requesterId = userInfo.UserId;
|
||||
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.Unsubscribe(
|
||||
webinarId: webinarId,
|
||||
subscriberId: subscriberId,
|
||||
requesterUserSelectByParam: requesterId
|
||||
);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve Specified Subscriber ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="subscriberId"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetSubscriber")]
|
||||
public virtual async Task<ActionResult<XWebinarSubscriberDto>> GetSubscriber(
|
||||
[FromQuery] Guid webinarId,
|
||||
[FromQuery] string subscriberId )
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
// Retrieve UserInfo ...
|
||||
var userInfo = await GetUserInfo();
|
||||
var requesterId = userInfo.UserId;
|
||||
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.GetSubscriber(
|
||||
webinarId: webinarId,
|
||||
subscriberId: subscriberId,
|
||||
requesterUserSelectByParam: requesterId
|
||||
);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get all Specified Webinars Subscribers ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetSubscribers")]
|
||||
public virtual async Task<ActionResult<IEnumerable<XWebinarSubscriberDto>>> GetSubscribers(
|
||||
[FromQuery] Guid webinarId
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
// Retrieve UserInfo ...
|
||||
var userInfo = await GetUserInfo();
|
||||
var requesterId = userInfo.UserId;
|
||||
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.GetSubscribers(
|
||||
webinarId: webinarId,
|
||||
requesterUserSelectByParam: requesterId
|
||||
);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Query Specified Webinar's Subscribers ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="query"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("QuerySubscribers")]
|
||||
public virtual async Task<ActionResult<XQueryResult<XWebinarSubscriberDto>>> QuerySubscribers(
|
||||
[FromQuery] XQuery query,
|
||||
[FromQuery] Guid webinarId
|
||||
)
|
||||
{
|
||||
//
|
||||
// Do ...
|
||||
try
|
||||
{
|
||||
//
|
||||
// Retrieve UserInfo ...
|
||||
var userInfo = await GetUserInfo();
|
||||
var requesterId = userInfo.UserId;
|
||||
|
||||
//
|
||||
var result = await WebinarProvider
|
||||
.QuerySubscribers(
|
||||
query: query,
|
||||
webinarId: webinarId,
|
||||
requesterUserSelectByParam: requesterId
|
||||
);
|
||||
|
||||
//
|
||||
return Ok(result.
|
||||
ToDynamicObject());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//
|
||||
var result = GetExceptionActionResult(ex);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
//
|
||||
// Non Actions ...
|
||||
}
|
||||
}
|
||||
@@ -164,6 +164,5 @@ namespace xWebinarService.Interfaces
|
||||
string requesterUserSelectByParam = null
|
||||
);
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using xModels.Dtos;
|
||||
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>
|
||||
/// <returns></returns>
|
||||
Task<ActionResult<XWebinarDto>> CreateWebinar([FromBody] XWebinarDto item);
|
||||
|
||||
/// <summary>
|
||||
/// Update a Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
Task<ActionResult<XWebinarDto>> UpdateWebinar([FromBody] XWebinarDto item);
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve Specified Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
Task<ActionResult<XWebinarDto>> GetWebinar([FromQuery] 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>
|
||||
/// Remove Specified Webinar ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
Task<ActionResult<bool>> RemoveWebinar(
|
||||
[FromQuery] Guid webinarId
|
||||
);
|
||||
#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<ActionResult<bool>> Subscribe(
|
||||
[FromQuery] Guid webinarId,
|
||||
[FromQuery] string subscriberId
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Check Specified User Subscribed on a Webinar or not ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="subscriberId"></param>
|
||||
/// <returns></returns>
|
||||
Task<ActionResult<bool>> IsSubscribed(
|
||||
[FromQuery] Guid webinarId,
|
||||
[FromQuery] 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<ActionResult<bool>> Unsubscribe(
|
||||
[FromQuery] Guid webinarId,
|
||||
[FromQuery] string subscriberId
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve Specified Subscriber ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="subscriberId"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
Task<ActionResult<XWebinarSubscriberDto>> GetSubscriber(
|
||||
[FromQuery] Guid webinarId,
|
||||
[FromQuery] string subscriberId
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Get all Specified Webinars Subscribers ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
Task<ActionResult<IEnumerable<XWebinarSubscriberDto>>> GetSubscribers(
|
||||
[FromQuery] Guid webinarId
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Query Specified Webinar's Subscribers ...
|
||||
/// </summary>
|
||||
/// <param name="webinarId"></param>
|
||||
/// <param name="query"></param>
|
||||
/// <param name="requesterUserSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
Task<ActionResult<XQueryResult<XWebinarSubscriberDto>>> QuerySubscribers(
|
||||
[FromQuery] XQuery query,
|
||||
[FromQuery] Guid webinarId
|
||||
);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user