Refactoring EmailMessage, EmailRecipient, MessageSenderService, etc...

This commit is contained in:
jozsef.b@aycode.com 2024-04-27 19:08:58 +02:00
parent ae741bc6a7
commit 4026ebae5f
15 changed files with 55 additions and 83 deletions

View File

@ -7,7 +7,7 @@ using TIAM.Database.DbContexts.Users;
namespace TIAM.Database.Test
{
[TestClass]
public class DatabaseTest : AcDatabaseTestBase<DbContextBase>
public class DatabaseTestBase : AcDatabaseTestBase<DbContextBase>
{
[TestInitialize]
public void Setup()

View File

@ -59,12 +59,6 @@
<Reference Include="AyCode.Models.Server">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.Server.dll</HintPath>
</Reference>
<Reference Include="AyCode.Services">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.dll</HintPath>
</Reference>
<Reference Include="AyCode.Services.Server">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.Server.dll</HintPath>
</Reference>
<Reference Include="AyCode.Utils">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Utils.dll</HintPath>
</Reference>

View File

@ -1,49 +1,21 @@
using System.Collections.Specialized;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using AyCode.Entities.Messages;
using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo;
using AyCode.Interfaces.Users;
namespace TIAM.Entities.Emails;
public interface IMessageSenderService
{
public Task<string> SendMessageAsync<TEmailMessage>(TEmailMessage message, int messageType) where TEmailMessage : EmailMessage;
}
[Table(nameof(EmailMessage))]
public class EmailMessage : IEntityGuid, ITimeStampInfo, IEmailRecipientsRelation, IEmailAddress
public class EmailMessage : AcEmailMessage<EmailRecipient> //IEntityGuid, ITimeStampInfo, IEmailRecipientsRelation, IEmailAddress
{
public EmailMessage()
{
}
public EmailMessage(Guid id, Guid? senderId, Guid contextId, string subject, string? text, string emailAddress) : this()
public EmailMessage(Guid id, Guid? senderId, Guid contextId, string subject, string? text, string emailAddress) : base(id, senderId, contextId, subject, text, emailAddress)
{
Id = id;
SenderId = senderId;
ContextId = contextId;
Subject = subject;
Text = text;
EmailAddress = emailAddress;
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
public Guid ContextId { get; set; }
public Guid? SenderId { get; set; }
public virtual List<EmailRecipient> Recipients { get; set; } = [];
[MaxLength(150)]
public string EmailAddress { get; set; }
[MaxLength(100)]
public string Subject { get; set; }
public string? Text { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
}

View File

@ -2,35 +2,20 @@
using AyCode.Interfaces.TimeStampInfo;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using AyCode.Entities.Messages;
using AyCode.Interfaces.Users;
namespace TIAM.Entities.Emails;
//Update efcore, aspnetcore to 8.0.1; Implement EmailMessage, EmailRecipient; refactoring, improvments, fixes, etc...
public class EmailRecipient : IEntityGuid, ITimeStampInfo, IEmailMessageRelation, IEmailAddress
[Table(nameof(EmailRecipient))]
public class EmailRecipient : AcEmailRecipient<EmailMessage> //IEntityGuid, ITimeStampInfo, IEmailMessageRelation, IEmailAddress
{
public EmailRecipient()
{
}
public EmailRecipient(Guid id, Guid recipientId, Guid emailMessageId, string emailAddress) : this()
public EmailRecipient(Guid id, Guid recipientId, Guid emailMessageId, string emailAddress) : base(id, recipientId, emailMessageId, emailAddress)
{
Id = id;
RecipientId = recipientId;
EmailMessageId = emailMessageId;
EmailAddress = emailAddress;
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
public Guid RecipientId { get; set; }
public Guid EmailMessageId { get; set; }
public string EmailAddress { get; set; }
public virtual EmailMessage EmailMessage { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
}

View File

@ -0,0 +1,8 @@
using AyCode.Interfaces.Messages;
namespace TIAM.Entities.Emails;
public interface IEmailMessage : IAcEmailMessage<IEmailRecipientBase>, IEmailMessageBase
{
}

View File

@ -0,0 +1,8 @@
using AyCode.Interfaces.Messages;
namespace TIAM.Entities.Emails;
public interface IEmailMessageBase : IAcEmailMessageBase
{
}

View File

@ -0,0 +1,8 @@
using AyCode.Interfaces.Messages;
namespace TIAM.Entities.Emails;
public interface IEmailRecipient : IAcEmailRecipient<IEmailMessage>, IEmailRecipientBase
{
}

View File

@ -0,0 +1,8 @@
using AyCode.Interfaces.Messages;
namespace TIAM.Entities.Emails;
public interface IEmailRecipientBase : IAcEmailRecipientBase
{
}

View File

@ -0,0 +1,7 @@
using AyCode.Interfaces.Messages;
namespace TIAM.Entities.Emails;
public interface IMessageSenderService : IAcMessageSenderService<EmailMessage, EmailRecipient>
{
}

View File

@ -1,5 +1,4 @@
using AyCode.Interfaces.Enums;
using AyCode.Interfaces.Messages;
using System.Diagnostics;
using TIAM.Entities.Transfers;
using TIAM.Entities.Emails;

View File

@ -22,7 +22,6 @@ using TIAM.Entities.Users;
using TIAMWebApp.Server.ModelsTIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Utility;
using TIAM.Entities.Auctions;
using AyCode.Interfaces.Messages;
using TIAMWebApp.Shared.Application.Models.ClientSide.Messages;
using AyCode.Models.Enums;
using TIAM.Database.DataLayers.Admins;

View File

@ -1,4 +1,3 @@
using AyCode.Interfaces.Messages;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.IdentityModel.Tokens;

View File

@ -1,5 +1,4 @@
using System.Net;
using AyCode.Interfaces.Messages;
using SendGrid;
using SendGrid.Helpers.Mail;
using AyCode.Models.Enums;
@ -13,27 +12,16 @@ namespace TIAMWebApp.Server.Services
{
public class MessageSenderService(IConfiguration configuration, AdminDal adminDal) : IMessageSenderService
{
//public AdminDal AdminDal = adminDal;
public async Task<string> SendMessageAsync<TEmailMessage>(TEmailMessage message, int messageType) where TEmailMessage : EmailMessage
public async Task<string> SendMessageAsync(EmailMessage message, int messageType)
{
var result = "";
switch (messageType)
{
case (int)MessageTypesEnum.email:
if (message is EmailMessage emailMessage)
{
Console.WriteLine($@"EmailMessage!!!");
// Access DerivedClass properties
//var subject = emailMessage.Subject;
result = (await SendMailWithSendgrid(emailMessage)).ToString(); //?? HttpStatusCode.BadRequest.ToString();
}
else
{
// Access BaseClass properties
result = "Invalid message";
}
Console.WriteLine($@"EmailMessage!!!");
// Access DerivedClass properties
//var subject = emailMessage.Subject;
result = (await SendMailWithSendgrid(message)).ToString(); //?? HttpStatusCode.BadRequest.ToString();
break;
case (int)MessageTypesEnum.sms:
//await SendSmsWithTwilio(message.Message);
@ -44,12 +32,11 @@ namespace TIAMWebApp.Server.Services
case (int)MessageTypesEnum.chat:
//await SendChatWithSignalR(message.Message);
default:
break;
}
return result;
}
public async Task<HttpStatusCode> SendMailWithSendgrid(EmailMessage message)

View File

@ -1,5 +1,4 @@
using AyCode.Interfaces.Messages;
using TIAM.Entities.Emails;
using TIAM.Entities.Emails;
using System;
using System.Collections.Generic;
using System.Linq;

View File

@ -1,5 +1,4 @@
using AyCode.Interfaces.Messages;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;