using FrameworkBLL.MessageHub;
using FrameworkDAL.DTO.MessageHub;
using FrameworkDAL.DTO.MessageHub.MessageHubGenerator;
using GB5Shared.DTO.Framework.Login;
using GB5Shared.DTO.Framework.ResponseStandard;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using static GB5Shared.GB5Constant.Constant;
namespace FrameworkSL.Controllers.MessageHub
{
[ApiController]
[Route("MessageHub")]
public class MessageHubController : ControllerBase
{
private readonly IMessageHubBLL _messageHubBLL;
public MessageHubController(IMessageHubBLL messageHubBLL)
{
_messageHubBLL = messageHubBLL;
}
///
/// Save MessageHub (WhatsApp / Telegram / Teams)
///
[HttpPost("SaveMessageHub")]
[AllowAnonymous]
public async Task> SaveMessageHub(
[FromHeader(Name = "Login")] string loginHeader,
[FromBody] MessageHubOldDTO messageHubOldDTO)
{
try
{
// 🔹 Convert Login header JSON → LoginDTO
var loginDto = Newtonsoft.Json.JsonConvert
.DeserializeObject(loginHeader);
if (loginDto == null)
throw new ArgumentException("Invalid Login header");
// 🔹 Call BLL
var result = await _messageHubBLL
.SaveMessageHub(messageHubOldDTO, loginDto);
return await GB5Shared.ResponseStandard.Response
.CreateSuccessResponse(
result,
CacheKeyLevel.NOT_REQUIRED,
loginDto
);
}
catch (Exception ex)
{
return await GB5Shared.ResponseStandard.Response
.CreateExceptionError(
ex,
CacheKeyLevel.NOT_REQUIRED,
null!,
ex.Message,
500
);
}
}
}
}