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 ); } } } }