using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System.Text.Json; using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models.ClientSide.Messages; using AyCode.Models.Enums; using TIAM.Database.DataLayers.Admins; using TIAM.Entities.Emails; namespace TIAMWebApp.Server.Controllers { [Authorize] [ApiController] [Route("api/v1/[controller]")] public class MessageAPIController : ControllerBase { private AdminDal _adminDal; private readonly IConfiguration _configuration; private readonly IWebHostEnvironment _webHostEnvironment; private IMessageSenderService _messageSenderService; private readonly ILogger _logger; public MessageAPIController(ILogger logger, IConfiguration configuration, IWebHostEnvironment webHostEnvironment, IMessageSenderService messageSenderService, AdminDal adminDal) { _adminDal = adminDal; _logger = logger; _configuration = configuration; _webHostEnvironment = webHostEnvironment; _messageSenderService = messageSenderService; } [AllowAnonymous] [HttpPost] [Route(APIUrls.SendEmailRouteName)] public async Task SendEmail([FromBody] JsonElement SerializedMessageSenderModel) { Console.WriteLine("SendEmail called!"); var message = JObject.Parse(SerializedMessageSenderModel.GetRawText()).ToObject>(); if (message != null) { if (message.MessageType == MessageTypesEnum.email) { Console.WriteLine($"EmailMessage!!!"); var messageElement = message.Message; Console.WriteLine(message.Message); var result = await _messageSenderService.SendMessageAsync(messageElement, (int)message.MessageType); //_adminDal.AddEmailMessageAsync((TIAM.Entities.Emails.EmailMessage)SerializedMessageSenderModel.Message); messageElement.EmailAddress = "noreply@anataworld.com"; _adminDal.AddEmailMessageAsync(messageElement).Forget(); Console.WriteLine("SendEmail result: " + result); return Ok(result); } else { return BadRequest("Invalid request"); // Access BaseClass properties } } return BadRequest("Invalid request"); } } }