TourIAm/TIAMWebApp/Server/Controllers/MessageAPIController.cs

74 lines
2.7 KiB
C#

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<MessageAPIController> _logger;
public MessageAPIController(ILogger<MessageAPIController> 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<IActionResult> SendEmail([FromBody] JsonElement SerializedMessageSenderModel)
{
Console.WriteLine("SendEmail called!");
var message = JObject.Parse(SerializedMessageSenderModel.GetRawText()).ToObject<MessageSenderModel<EmailMessage>>();
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");
}
}
}