This commit is contained in:
2025-11-05 16:17:03 +03:30
parent e24ec4c283
commit fca31967e7
3 changed files with 622 additions and 1 deletions
+488
View File
@@ -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 ...
}
}
-1
View File
@@ -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
}
}