From affed0c7a540b2f32bf13a9f3b22328cb79477a8 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 28 Nov 2023 14:52:55 +0100 Subject: [PATCH] messageservice, sendgrid send basic implementation --- TIAM.Database.Test/TIAM.Database.Test.csproj | 15 ++++ TIAM.Database/TIAM.Database.csproj | 15 ++++ TIAMWebApp/Client/TIAMWebApp.Client.csproj | 6 ++ .../Server/Services/MessageSenderService.cs | 79 +++++++++++++++++++ TIAMWebApp/Server/TIAMWebApp.Server.csproj | 6 ++ .../Server/appsettings.Development.json | 3 + TIAMWebApp/Server/appsettings.json | 4 + 7 files changed, 128 insertions(+) create mode 100644 TIAMWebApp/Server/Services/MessageSenderService.cs diff --git a/TIAM.Database.Test/TIAM.Database.Test.csproj b/TIAM.Database.Test/TIAM.Database.Test.csproj index 003030c6..58787465 100644 --- a/TIAM.Database.Test/TIAM.Database.Test.csproj +++ b/TIAM.Database.Test/TIAM.Database.Test.csproj @@ -58,6 +58,21 @@ ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Interfaces.Server.dll + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.dll + + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.Server.dll + + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.dll + + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.Server.dll + + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Utils.dll + diff --git a/TIAM.Database/TIAM.Database.csproj b/TIAM.Database/TIAM.Database.csproj index ba1f4841..7f7e3735 100644 --- a/TIAM.Database/TIAM.Database.csproj +++ b/TIAM.Database/TIAM.Database.csproj @@ -43,6 +43,21 @@ ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Interfaces.Server.dll + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.dll + + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.Server.dll + + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.dll + + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.Server.dll + + + ..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Utils.dll + diff --git a/TIAMWebApp/Client/TIAMWebApp.Client.csproj b/TIAMWebApp/Client/TIAMWebApp.Client.csproj index 35040ede..ac0e02e1 100644 --- a/TIAMWebApp/Client/TIAMWebApp.Client.csproj +++ b/TIAMWebApp/Client/TIAMWebApp.Client.csproj @@ -27,6 +27,12 @@ ..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Interfaces.dll + + ..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.dll + + + ..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.Server.dll + diff --git a/TIAMWebApp/Server/Services/MessageSenderService.cs b/TIAMWebApp/Server/Services/MessageSenderService.cs new file mode 100644 index 00000000..3183a52a --- /dev/null +++ b/TIAMWebApp/Server/Services/MessageSenderService.cs @@ -0,0 +1,79 @@ +using AyCode.Interfaces.Messages; +using SendGrid; +using SendGrid.Helpers.Mail; +using AyCode.Models.Enums; +using AyCode.Entities.Messages; +using AyCode.Models.Messages; +using TIAM.Database.DataLayers.Users; + + +namespace TIAMWebApp.Server.Controllers +{ + public class MessageService : IMessageSenderService + { + private readonly HttpClient http; + private readonly IConfiguration _configuration; + public UserDal _userDal; + + public MessageService(HttpClient http, IConfiguration configuration, UserDal userDal) + { + this.http = http; + _configuration = configuration; + _userDal = userDal; + } + + public async Task SendMessageAsync(IMessageBase message, int[] messageTypes) + { + foreach (var messageType in messageTypes) + { + switch (messageType) + { + case (int)MessageTypesEnum.email: + await SendMailWithSendgrid(((EMailMessage)message)); + break; + case (int)MessageTypesEnum.sms: + //await SendSmsWithTwilio(message.Message); + break; + case (int)MessageTypesEnum.push: + //await SendPushWithFirebase(message.Message); + break; + case (int)MessageTypesEnum.chat: + //await SendChatWithSignalR(message.Message); + default: + break; + } + } + + + //return true here + return await Task.FromResult(true); + } + + public async Task SendMailWithSendgrid(EMailMessage message) + { + //resolve user!!! + var senderUser = _userDal.Ctx.Users.FirstOrDefault(x => x.Id == message.SenderId); + var receiverUser = _userDal.Ctx.Users.FirstOrDefault(x => x.Id == message.ReceiverId); + string apiKey = _configuration["SendGrid:Key"]; + var _client = new SendGridClient(apiKey); + var _from = new EmailAddress("", ""); + if(message.SenderId == null) + { + + _from = new EmailAddress("noreply@tiam.com", "TourIAm mailservice"); + } + else + { + _from = new EmailAddress(senderUser.Email, senderUser.Email); + } + var _subject = message.Subject; + var _to = new EmailAddress(receiverUser.Email, receiverUser.Email); + var _plainTextContent = message.Message; + var _htmlContent = message.HtmlContent; + var _msg = MailHelper.CreateSingleEmail(_from, _to, message.Subject, _plainTextContent, _htmlContent); + var response = await _client.SendEmailAsync(_msg).ConfigureAwait(false); + return response.StatusCode.ToString(); + } + + } +} diff --git a/TIAMWebApp/Server/TIAMWebApp.Server.csproj b/TIAMWebApp/Server/TIAMWebApp.Server.csproj index b25e61a0..b5aa5914 100644 --- a/TIAMWebApp/Server/TIAMWebApp.Server.csproj +++ b/TIAMWebApp/Server/TIAMWebApp.Server.csproj @@ -49,6 +49,12 @@ ..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Interfaces.Server.dll + + ..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.dll + + + ..\..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.Server.dll + ..\..\..\AyCode.Core\AyCode.Utils\bin\Debug\net8.0\AyCode.Utils.dll diff --git a/TIAMWebApp/Server/appsettings.Development.json b/TIAMWebApp/Server/appsettings.Development.json index 78a8d7c0..e874ef8a 100644 --- a/TIAMWebApp/Server/appsettings.Development.json +++ b/TIAMWebApp/Server/appsettings.Development.json @@ -9,5 +9,8 @@ "Key": "Cee4400-rDMFkVvHPufyLDSzbfu2grgRhpepos299IhTLOXsljkcpt3yUR4RRjPQ", "Issuer": "https://localhost:7116", "Audience": "http://localhost:7116" + }, + "SendGrid": { + "Key": "" } } diff --git a/TIAMWebApp/Server/appsettings.json b/TIAMWebApp/Server/appsettings.json index 8667b4b9..edfa0e40 100644 --- a/TIAMWebApp/Server/appsettings.json +++ b/TIAMWebApp/Server/appsettings.json @@ -13,5 +13,9 @@ "Key": "Cee4400-rDMFkVvHPufyLDSzbfu2grgRhpepos299IhTLOXsljkcpt3yUR4RRjPQ", "Issuer": "http://localhost:5000", "Audience": "http://localhost:5000" + }, + "SendGrid": { + "Key": "" } + }