This commit is contained in:
Adam 2024-08-17 09:44:21 +02:00
commit fd002486cb
7 changed files with 72 additions and 21 deletions

View File

@ -217,7 +217,7 @@ namespace TIAM.Database.DataLayers.Admins
public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); public string GetUsersJson() => Session(ctx => ctx.Users.ToJson());
public Task<bool> AddUserAsync(User user) => TransactionAsync(ctx => ctx.AddUser(user)); public Task<bool> AddUserAsync(User user) => TransactionAsync(ctx => ctx.AddUser(user));
public Task<User?> UpdateUserAsync(User user) => UpdateSafeAsync(user); public Task<User?> UpdateUserAsync(User? user) => UpdateSafeAsync(user);
public Task<bool> RemoveUserAsync(Guid userId) => TransactionAsync(ctx => ctx.RemoveUser(userId)); public Task<bool> RemoveUserAsync(Guid userId) => TransactionAsync(ctx => ctx.RemoveUser(userId));
#region Product #region Product
@ -322,6 +322,14 @@ namespace TIAM.Database.DataLayers.Admins
public Task<List<EmailMessage>> GetEmailMessagesAsync(Guid contextId, Guid userId, Guid userProductMappingId) => SessionAsync(ctx => ctx.GetEmailMessages<EmailMessage, EmailRecipient>(contextId, userId, userProductMappingId).OrderByDescending(x => x.Created).ToList()); public Task<List<EmailMessage>> GetEmailMessagesAsync(Guid contextId, Guid userId, Guid userProductMappingId) => SessionAsync(ctx => ctx.GetEmailMessages<EmailMessage, EmailRecipient>(contextId, userId, userProductMappingId).OrderByDescending(x => x.Created).ToList());
public Task<List<EmailMessage>> GetAllEmailMessagesAsync() => SessionAsync(ctx => ctx.GetAllEmailMessages<EmailMessage, EmailRecipient>().OrderByDescending(x => x.Created).ToList()); public Task<List<EmailMessage>> GetAllEmailMessagesAsync() => SessionAsync(ctx => ctx.GetAllEmailMessages<EmailMessage, EmailRecipient>().OrderByDescending(x => x.Created).ToList());
public Task<List<EmailMessage>> GetEmailMessagesByUserId(Guid userId)
{
return SessionAsync(ctx =>
{
return ctx.GetEmailMessagesByIds<EmailMessage, EmailRecipient>(ctx.GetUserProductMappingsByUserId(userId).Select(x => x.Id).Concat([userId])).ToList();
});
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
@ -329,7 +337,7 @@ namespace TIAM.Database.DataLayers.Admins
/// <returns></returns> /// <returns></returns>
public Task<List<EmailMessage>> GetTransfersMessagesByDriverIdAsync(Guid driverId) => SessionAsync(ctx => public Task<List<EmailMessage>> GetTransfersMessagesByDriverIdAsync(Guid driverId) => SessionAsync(ctx =>
{ {
//TODO: Az upm.UserId elvben nem kell, csak amíg ne fix a db! semmilyen gondot nem okoz... - J. //TODO: Az upm.UserId elvben nem kell, csak amíg nem fix a db! semmilyen gondot nem okoz... - J.
var upm = ctx.GetUserProductMappingById(driverId); var upm = ctx.GetUserProductMappingById(driverId);
if (upm == null) return []; if (upm == null) return [];

View File

@ -79,9 +79,10 @@ public class SignalRTags : AcSignalRTags
/// UserPropductMappingId /// UserPropductMappingId
/// </summary> /// </summary>
public const int GetTransfersMessagesByDriverId = 62; public const int GetTransfersMessagesByDriverId = 62;
public const int CreateMessage = 63; public const int GetMessagesByUserId = 63;
public const int UpdateMessage = 64; public const int CreateMessage = 64;
public const int DeleteMessage = 65; public const int UpdateMessage = 65;
public const int DeleteMessage = 66;
public const int GetProductById = 70; public const int GetProductById = 70;
public const int GetProductsByOwnerId = 71; //for now until we can send multiple parameters public const int GetProductsByOwnerId = 71; //for now until we can send multiple parameters

View File

@ -71,8 +71,6 @@
<div class="row"> <div class="row">
<div class=" col-12"> <div class=" col-12">
<DxTabs> <DxTabs>
<DxTabPage Text="Upcoming"> <DxTabPage Text="Upcoming">
<DxAccordion ExpandMode="ExpandMode" <DxAccordion ExpandMode="ExpandMode"
@ -163,7 +161,6 @@
<DxTabPage Text="Messages"> <DxTabPage Text="Messages">
<div class="d-flex flex-column mb-4 pb-2"> <div class="d-flex flex-column mb-4 pb-2">
@* TODO: Megírni az GetMessagesByDriverId() endpoint-ot! - J. *@
<MessageDetailGridComponent ContextId="driverId" GetAllMessageTag="SignalRTags.GetTransfersMessagesByDriverId" IsSenderEmailVisible="false" IsMessageTextVisible="false"></MessageDetailGridComponent> <MessageDetailGridComponent ContextId="driverId" GetAllMessageTag="SignalRTags.GetTransfersMessagesByDriverId" IsSenderEmailVisible="false" IsMessageTextVisible="false"></MessageDetailGridComponent>
</div> </div>
</DxTabPage> </DxTabPage>

View File

@ -1,16 +1,50 @@
@page "/user/messages/{userId:guid}" @page "/user/messages/{UserId:guid}"
@using AyCode.Core.Extensions
@using TIAM.Models.Dtos.Users
@using TIAM.Services
@using TIAMSharedUI.Pages.User.SysAdmins
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Services
@inject ISessionService sessionService;
@inject AdminSignalRClient AdminSignalRClient;
@* @inject JSRuntime jsRuntime
<script>
function isDevice() {
return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i.test(navigator.userAgent);
}
</script>
*@
<div class="text-center m-5">
<h1>Messages</h1>
<h2 style="font-size:small">Manage messages here!</h2>
</div>
<div class="card-body card-admin-body py-2 px-4"> <div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-column mb-4 pb-2"> <div class="d-flex flex-column mb-4 pb-2">
<MessageDetailGridComponent ContextId="UserId" GetAllMessageTag="SignalRTags.GetMessagesByUserId" IsSenderEmailVisible="false" IsMessageTextVisible="!_isMobile"></MessageDetailGridComponent>
<p>@userId.ToString()</p>
</div> </div>
</div> </div>
@code { @code {
[Parameter] public Guid? userId { get; set; } [Parameter] public Guid? UserId { get; set; }
//private List<object> _contextParams = [];
private bool _isMobile = false;
protected override async Task OnInitializedAsync()
{
//if (userId.IsNullOrEmpty() || sessionService.User == null) return;
// _contextParams.Add(userId);
// var upmId = sessionService.User.UserModelDto.UserProductMappings.Select(x => x.Id).FirstOrDefault();
// if(!upmId.IsNullOrEmpty()) _contextParams.Add(upmId);
//_isMobile = await jsRuntime.InvokeAsync<bool>("isDevice");
await base.OnInitializedAsync();
}
} }

View File

@ -29,20 +29,21 @@
GetAllMessageTag="GetAllMessageTag" GetAllMessageTag="GetAllMessageTag"
ContextIds="@(ContextId.IsNullOrEmpty() ? throw new InvalidDataException($"ContextId.IsNullOrEmpty(); ContextId: {ContextId}") : [ContextId.Value])" ContextIds="@(ContextId.IsNullOrEmpty() ? throw new InvalidDataException($"ContextId.IsNullOrEmpty(); ContextId: {ContextId}") : [ContextId.Value])"
CustomizeElement="CustomizeElement"> CustomizeElement="CustomizeElement">
<Columns> <Columns>
<DxGridCommandColumn Width="135" MinWidth="135" Visible="AcDomain.IsDeveloperVersion" DeleteButtonVisible="AcDomain.IsDeveloperVersion" EditButtonVisible="AcDomain.IsDeveloperVersion" FixedPosition="GridColumnFixedPosition.Left" /> <DxGridCommandColumn Width="135" MinWidth="135" Visible="AcDomain.IsDeveloperVersion" DeleteButtonVisible="AcDomain.IsDeveloperVersion" EditButtonVisible="AcDomain.IsDeveloperVersion" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" /> <DxGridDataColumn FieldName="Id" Width="150" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
<DxGridDataColumn FieldName="ContextId" Width="80px" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" /> <DxGridDataColumn FieldName="ContextId" Width="150px" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
<DxGridDataColumn FieldName="SenderId" Width="150px" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
<DxGridDataColumn FieldName="Created" Caption="Received" DisplayFormat="g" Width="130" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" /> <DxGridDataColumn FieldName="Created" Caption="Received" DisplayFormat="g" Width="130" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" />
<DxGridDataColumn FieldName="EmailAddress" Caption="Sender" Width="200px" Visible="@IsSenderEmailVisible" /> <DxGridDataColumn FieldName="ContextType" Caption="Category" Width="75" />
<DxGridDataColumn FieldName="EmailAddress" Caption="Sender" Width="200px" Visible="IsSenderEmailVisible || AcDomain.IsDeveloperVersion" />
<DxGridDataColumn FieldName="Subject" /> <DxGridDataColumn FieldName="Subject" />
<DxGridDataColumn FieldName="Text" Visible="@IsMessageTextVisible"> <DxGridDataColumn FieldName="Text" Visible="@IsMessageTextVisible">
<CellDisplayTemplate Context="displayTextContext"> <CellDisplayTemplate Context="displayTextContext">
<text>@System.Text.RegularExpressions.Regex.Replace((displayTextContext.Value as string)!, "<(.|\n)*?>", string.Empty)</text> <text>@System.Text.RegularExpressions.Regex.Replace((displayTextContext.Value as string)!, "<(.|\n)*?>", string.Empty)</text>
</CellDisplayTemplate> </CellDisplayTemplate>
</DxGridDataColumn> </DxGridDataColumn>
<DxGridDataColumn FieldName="IsReaded" Caption="Readed" Visible="@IsSenderEmailVisible" Width="70" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" /> <DxGridDataColumn FieldName="IsReaded" Caption="Readed" Visible="@IsMessageTextVisible" Width="70" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" />
</Columns> </Columns>
<DetailRowTemplate> <DetailRowTemplate>

View File

@ -88,6 +88,16 @@ namespace TIAMWebApp.Server.Controllers
return await _adminDal.GetTransfersMessagesByDriverIdAsync(driverId); return await _adminDal.GetTransfersMessagesByDriverIdAsync(driverId);
} }
[NonAction]
[ApiExplorerSettings(IgnoreApi = true)]
[SignalR(SignalRTags.GetMessagesByUserId)]
public async Task<List<EmailMessage>> GetMessagesByUserId(Guid userId)
{
_logger.Info($@"GetMessagesByUserId called with userId: {userId}");
return await _adminDal.GetEmailMessagesByUserId(userId);
}
[AllowAnonymous] [AllowAnonymous]
[HttpGet] [HttpGet]
[Route(APIUrls.GetMessagesByContextIdRouteName + "/{contextId}")] [Route(APIUrls.GetMessagesByContextIdRouteName + "/{contextId}")]

View File

@ -449,9 +449,9 @@ namespace TIAMWebApp.Server.Controllers
[Route(APIUrls.SendForgottenPasswordMailRouteName)] [Route(APIUrls.SendForgottenPasswordMailRouteName)]
public async Task<bool> SendForgottenPasswordMail([FromBody] string email) public async Task<bool> SendForgottenPasswordMail([FromBody] string email)
{ {
User user;
_logger.Info($"SendForgottenPasswordMail called with id: {email}"); _logger.Info($"SendForgottenPasswordMail called with id: {email}");
user = await userDal.GetUserByEmailAsync(email, false);
var user = await userDal.GetUserByEmailAsync(email, false);
if (user == null) if (user == null)
{ {
return false; return false;
@ -554,7 +554,7 @@ namespace TIAMWebApp.Server.Controllers
} }
[NonAction] [NonAction]
private async Task<bool> SetEmailConfirmedMethod(User user) private async Task<bool> SetEmailConfirmedMethod(User? user)
{ {
user.EmailConfirmed = true; user.EmailConfirmed = true;
var result = await adminDal.UpdateUserAsync(user); var result = await adminDal.UpdateUserAsync(user);