diff --git a/TIAM.Services.Server/MessageSenderService.cs b/TIAM.Services.Server/MessageSenderService.cs index 921438fd..b67541d7 100644 --- a/TIAM.Services.Server/MessageSenderService.cs +++ b/TIAM.Services.Server/MessageSenderService.cs @@ -49,8 +49,7 @@ namespace TIAM.Services.Server if (!message.SenderId.HasValue) return HttpStatusCode.BadRequest; - var senderUser = adminDal.GetUserById(message.SenderId.Value); - //var receiverUser = adminDal.Context.Users.FirstOrDefault(x => x.Id == message.ReceiverId); + var senderUser = adminDal.GetUserById(message.SenderId.Value); if (senderUser != null) return HttpStatusCode.BadRequest; @@ -68,23 +67,35 @@ namespace TIAM.Services.Server from = new EmailAddress(message.EmailAddress, senderUser.Profile.Name); } - List> sendTasks = new List>(); - foreach (var messageRecipient in message.Recipients) + Response[] responses = []; + + try { - var to = new EmailAddress(messageRecipient.EmailAddress, messageRecipient.EmailAddress); + List> sendTasks = new List>(); + foreach (var messageRecipient in message.Recipients) + { + var to = new EmailAddress(messageRecipient.EmailAddress, messageRecipient.EmailAddress); - Console.WriteLine($"Message recipient: {messageRecipient.EmailAddress}"); - var plainTextContent = message.Text; + Console.WriteLine($"Message recipient: {messageRecipient.EmailAddress}"); + var plainTextContent = message.Text; - var msg = MailHelper.CreateSingleEmail(from, to, message.Subject, plainTextContent, plainTextContent); - sendTasks.Add(client.SendEmailAsync(msg)); + //MailHelper.CreateSingleEmailToMultipleRecipients() + var msg = MailHelper.CreateSingleEmail(from, to, message.Subject, plainTextContent, plainTextContent); + //msg.AddBccs() + sendTasks.Add(client.SendEmailAsync(msg)); + } + + responses = await Task.WhenAll(sendTasks).ConfigureAwait(false); + + foreach (var response in responses) + { + Console.WriteLine($"{response.StatusCode}, {response.Body.ReadAsStringAsync()}"); + } + + adminDal.AddEmailMessageAsync(message).Forget(); } - - var responses = await Task.WhenAll(sendTasks).ConfigureAwait(false); - - foreach (var response in responses) - { - Console.WriteLine($"{response.StatusCode}, {response.Body.ReadAsStringAsync()}"); + catch(Exception ex) + { } if (responses.Any(response => !response.IsSuccessStatusCode)) diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index 16e775bc..30a579fe 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -41,7 +41,7 @@ Closing="EulaPopupClosing" Closed="EulaPopupClosed"> - Statuses { get; set; } = [ @@ -230,7 +230,7 @@ new(Convert.ToInt16(TransferStatusType.AdminDenied), "Admin cancelled") ]; - public MessageWizardModel MessageWizardModel = new(); + private MessageWizardModel _messageWizardModel = new(); public List AppointmentModels { get; set; } @@ -242,8 +242,9 @@ { _logger.Info($"Sending mail to {item.ContactEmail}, {item.Id}"); - MessageWizardModel.ContextId = item.Id; - MessageWizardModel.SenderFullName = item.FullName; //Miért nullable a FullName? - J. + _messageWizardModel.ContextId = item.Id; + _messageWizardModel.ReceiverEmailAddress = item.ContactEmail; + _messageWizardModel.ReceiverFullName = item.FullName; PopupVisible = true; } @@ -260,7 +261,7 @@ void EulaPopupClosing(PopupClosingEventArgs args) { //myModel = new TransferWizardModel(); - MessageWizardModel = new MessageWizardModel(); + _messageWizardModel = new MessageWizardModel(); } //----------------------------------------------------------------------------------- @@ -269,7 +270,7 @@ public async Task SubmitForm(object result) { var messageModel = result as MessageWizardModel; - messageModel.ContextId = MessageWizardModel.ContextId; + messageModel.ContextId = _messageWizardModel.ContextId; //messageModel.SenderId = sessionService.User.UserId; string FormatEmailContent() @@ -452,3 +453,7 @@ + + + + } \ No newline at end of file diff --git a/TIAMSharedUI/Shared/AdminLayout.razor b/TIAMSharedUI/Shared/AdminLayout.razor index e4384908..b9eabd01 100644 --- a/TIAMSharedUI/Shared/AdminLayout.razor +++ b/TIAMSharedUI/Shared/AdminLayout.razor @@ -1,10 +1,32 @@ @inherits LayoutComponentBase + @using TIAMSharedUI.Shared.Users +@using AyCode.Core.Extensions +@using AyCode.Interfaces.StorageHandlers; +@using AyCode.Services.Loggers +@using Newtonsoft.Json; +@using TIAMSharedUI.Pages +@using TIAMSharedUI.Shared.Components @using TIAMWebApp.Shared.Application.Interfaces +@using TIAMWebApp.Shared.Application.Models.ClientSide; +@using AyCode.Blazor.Components; @using TIAMWebApp.Shared.Application.Models; -@inject NavigationManager NavigationManager +@using TIAMWebApp.Shared.Application.Utility; +@using System.IdentityModel.Tokens.Jwt; +@using System.Runtime.CompilerServices +@using TIAM.Core.Loggers; +@using System.Diagnostics +@using AyCode.Utils.Extensions +@inject NavigationManager NavManager +@inject IJSRuntime jsRuntime +@inject ISecureStorageHandler SecureStorageHandler +@inject ISessionService sessionService +@inject IEnumerable LogWriters @inject IUserDataService userDataService + +
+
@@ -17,21 +39,58 @@ @Body +
@code { - /*bool isUserLoggedIn; - int userType = 0; + private ILogger _logger; - protected override async Task OnInitializedAsync() + public PopupMessageBox PopupMessageBox { get; private set; } = default!; + + + protected override void OnInitialized() { - var user = await userDataService.IsLoggedInAsync(); - isUserLoggedIn = user.IsLoggedIn; + _logger = new LoggerClient(LogWriters.ToArray()); - if (!isUserLoggedIn) + base.OnInitialized(); + } + + private void HandleError(Exception exception)//, [CallerMemberName] string? memberName = null) + { + exception.GetCategoryAndMemberNameFromStackTraceString(out var memberName, out var categoryName); + + if (memberName.IsNullOrWhiteSpace()) memberName = "..."; //ne "HandleError" memberName-el logoljunk! - J. + + try { - NavigationManager.NavigateTo("/login"); + _logger.Error($"An error occurred: {exception.Message}", exception, categoryName, memberName); } - }*/ + catch (Exception loggerException) + { + jsRuntime.InvokeVoidAsync("console.error", $"{nameof(MainLayout)}->HandleError; Logger error! {loggerException}"); + + jsRuntime.InvokeVoidAsync("console.error", $"{nameof(MainLayout)}->{memberName}; An error occurred: {exception}"); + //jsRuntime.InvokeVoidAsync("console.warn", $"{nameof(MainLayout)}->{memberName}; Error details: {exception.StackTrace}"); + } + + // Log the error to server + //LogErrorToServer(exception); + + // Show a notification on UI + ShowErrorNotification("An unexpected error occurred. Please try again later."); + + //jsRuntime.InvokeVoidAsync("console.error", $"An error occurred: {exception.Message}"); + //jsRuntime.InvokeVoidAsync("console.warn", $"Error details: {exception.StackTrace}"); + } + + // private void LogErrorToServer(Exception exception) + // { + // //_logger.Error($"An error occurred: {exception.Message}"); + // } + + private void ShowErrorNotification(string message) + { + jsRuntime.InvokeVoidAsync("alert", message); + } } diff --git a/TIAMWebApp/Server/Program.cs b/TIAMWebApp/Server/Program.cs index cc177870..888355ac 100644 --- a/TIAMWebApp/Server/Program.cs +++ b/TIAMWebApp/Server/Program.cs @@ -173,6 +173,7 @@ app.MapRazorPages(); app.MapControllers(); app.MapBlazorHub(); app.MapHub("/myhub"); +app.MapHub("/adminhub"); app.MapFallbackToFile("index.html"); app.Run(); diff --git a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs new file mode 100644 index 00000000..79a99477 --- /dev/null +++ b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs @@ -0,0 +1,34 @@ +using Microsoft.AspNetCore.SignalR; + +namespace TIAMWebApp.Server.Services; +public class DevAdminSignalRHub : Hub +{ + public async Task SendMessage(string user, string message) + { + await Clients.All.SendAsync("ReceiveMessage", user, message); + } + + public async Task MuteChat(string user) + { + + await Clients.All.SendAsync("UserMuted", user); + + } + + public async Task LoggedInToChat(string user) + { + + await Clients.All.SendAsync("UserLoggedInToChat", user); + + } + + public async Task LoggedOutFromChat(string user) + { + + await Clients.All.SendAsync("UserLoggedOutFromChat", user); + + } + + +} +