implement SiteViewModel; improvements, fixes, etc...

This commit is contained in:
Loretta 2024-08-21 18:28:22 +02:00
parent dd8b1ac6b4
commit a82bf9a287
15 changed files with 221 additions and 72 deletions

View File

@ -31,6 +31,7 @@ using DevExpress.Data.Linq.Helpers;
using TIAM.Database.DbSets.Drivers;
using AyCode.Entities.Server.LogItems;
using AyCode.Interfaces.Entities;
using TIAM.Models;
using TIAM.Models.Dtos.Users;
using TIAM.Models.PageViewModels;
@ -42,6 +43,13 @@ namespace TIAM.Database.DataLayers.Admins
{
}
//TODO: ezt meg a Messages-eket átbuherálni a UserDal-ra... - J.
public async Task<SiteViewModel> GetSiteViewModelByUserId(Guid userId)
{
var messages = await GetEmailMessagesByUserId(userId, true);
return new SiteViewModel(messages);
}
#region Car
public Task<List<Car>> GetAllCarsAsync() => SessionAsync(ctx => ctx.Cars.OrderBy(x => x.Manufacture).ThenBy(x => x.CarModel).ToList());
public Task<List<Car>> GetAllCarsbyProductIdAsync(Guid productId) => SessionAsync(ctx => ctx.Cars.Where(x => x.UserProductMapping.ProductId == productId).OrderBy(x => x.Manufacture).ThenBy(x => x.CarModel).ToList());
@ -69,9 +77,9 @@ namespace TIAM.Database.DataLayers.Admins
public Task<DriverManageTransfersPageModel> GetDriverManageTransfersPageModelByDriverId(Guid driverId) => SessionAsync(ctx =>
{
var transfers = ctx.GetTransfersByUserProductMappingId(driverId).OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId);
var unreadedMessagesCount = GetTransfersMessagesByDriverIdInnerAsync(ctx, driverId)?.Count(x => !x.IsReaded) ?? 0;
var unreadMessagesCount = GetTransfersMessagesByDriverIdInnerAsync(ctx, driverId)?.Count(x => !x.IsReaded) ?? 0;
return new DriverManageTransfersPageModel(transfers, unreadedMessagesCount);
return new DriverManageTransfersPageModel(transfers, unreadMessagesCount);
});
public Task<List<Transfer>> GetTransfersAsync() => SessionAsync(ctx => ctx.GetTransfers().OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId).ToList());
@ -336,8 +344,11 @@ 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>> GetAllEmailMessagesAsync() => SessionAsync(ctx => ctx.GetAllEmailMessages<EmailMessage, EmailRecipient>().OrderByDescending(x => x.Created).ToList());
public Task<List<EmailMessage>> GetEmailMessagesByUserId(Guid userId)
=> SessionAsync(ctx => ctx.GetEmailMessagesByIds<EmailMessage, EmailRecipient>(ctx.GetUserProductMappingsByUserId(userId).Select(x => x.Id).Concat([userId])).ToList());
public Task<List<EmailMessage>> GetEmailMessagesByUserId(Guid userId, bool onlyUnread = false)
=> SessionAsync(ctx => ctx
.GetEmailMessagesByIds<EmailMessage, EmailRecipient>(ctx.GetUserProductMappingsByUserId(userId).Select(x => x.Id).Concat([userId]))
.Where(x => !onlyUnread || !x.IsReaded)
.ToList());
/// <summary>
///
@ -352,7 +363,7 @@ namespace TIAM.Database.DataLayers.Admins
/// </summary>
/// <param name="driverId">UserProductMappingId</param>
/// <returns></returns>
public Task<int> GetTransfersMessagesUnreadedCountByDriverIdAsync(Guid driverId)
public Task<int> GetTransfersMessagesUnreadCountByDriverIdAsync(Guid driverId)
=> SessionAsync(ctx => GetTransfersMessagesByDriverIdInnerAsync(ctx, driverId)?.Count(x => !x.IsReaded) ?? 0);
/// <summary>

View File

@ -1,4 +1,5 @@
using AyCode.Database.DataLayers.Users;
using AyCode.Database.DbSets.Messages;
using AyCode.Database.DbSets.Users;
using Microsoft.EntityFrameworkCore;
using TIAM.Database.DbContexts.Users;
@ -7,6 +8,7 @@ using TIAM.Entities.Emails;
using TIAM.Entities.Profiles;
using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Users;
using TIAM.Models;
using TIAM.Models.Dtos.Users;
namespace TIAM.Database.DataLayers.Users
@ -22,6 +24,11 @@ namespace TIAM.Database.DataLayers.Users
{
}
//public Task<SiteViewModel> GetSiteViewModelByUserId(Guid userId) => SessionAsync(ctx =>
//{
// ctx.GetEmailMessagesByUserIdOrUpmId<EmailMessage, EmailRecipient>(userId,
//}));
public Task<List<UserModelDtoEmail>> GetUserModelDtoEmailsAsync() => SessionAsync(ctx => ctx.Users.Select(x => new UserModelDtoEmail(x)).ToList());
public override Task<User?> UpdateUserAsync(User user) => base.UpdateSafeAsync(user);

View File

@ -1,5 +1,6 @@
using AyCode.Blazor.Models.ViewModels;
using Newtonsoft.Json;
using System.Security.Cryptography.Xml;
using TIAM.Core.Enums;
using TIAM.Entities.Transfers;
@ -10,7 +11,7 @@ public class DriverManageTransfersPageModel : AcPageViewModelBase
private readonly object _forLock = new();
private const int AppointmentWaitingHours = 3;
public int UnreadedMessagesCount { get; set; }
public int UnreadMessagesCount { get; set; }
public List<Transfer> Transfers { get; set; } = [];
private readonly List<Transfer> _upcomings = [];
@ -65,29 +66,39 @@ public class DriverManageTransfersPageModel : AcPageViewModelBase
{
}
public DriverManageTransfersPageModel(IEnumerable<Transfer> transfers, int unreadedMessagesCount)
public DriverManageTransfersPageModel(IEnumerable<Transfer> transfers, int unreadMessagesCount)
{
Initialize(transfers, unreadedMessagesCount);
Initialize(transfers, unreadMessagesCount);
}
public void Initialize(DriverManageTransfersPageModel? driverManageTransfersPageModel)
{
if (driverManageTransfersPageModel == null) return;
Initialize(driverManageTransfersPageModel.Transfers, driverManageTransfersPageModel.UnreadedMessagesCount);
Initialize(driverManageTransfersPageModel.Transfers, driverManageTransfersPageModel.UnreadMessagesCount);
}
public void Initialize(IEnumerable<Transfer> transfers, int unreadedMessagesCount)
public void Initialize(IEnumerable<Transfer> transfers, int unreadMessagesCount)
{
lock (_forLock)
{
ClearAll();
Transfers.AddRange(transfers.Where(t => t.TransferStatusType != TransferStatusType.UserCanceled && t.TransferStatusType != TransferStatusType.AdminDenied));
}
UnreadMessagesCount = unreadMessagesCount;
}
public void ClearAll()
{
lock (_forLock)
{
Transfers.Clear();
Transfers.AddRange(transfers.Where(t => t.TransferStatusType != TransferStatusType.UserCanceled && t.TransferStatusType != TransferStatusType.AdminDenied));
Upcomings.Clear();
Problems.Clear();
}
UnreadedMessagesCount = unreadedMessagesCount;
UnreadMessagesCount = 0;
}
}

View File

@ -0,0 +1,51 @@
using AyCode.Blazor.Models.ViewModels;
using TIAM.Entities.Emails;
using TIAM.Models.PageViewModels;
namespace TIAM.Models;
public class SiteViewModel : AcSiteViewModel
{
private readonly object _forLock = new object();
public List<EmailMessage> UnreadMessages { get; } = [];
public DriverManageTransfersPageModel DriverManageTransfersPageModel { get; } = new();
public SiteViewModel()
{}
public SiteViewModel(IEnumerable<EmailMessage> unreadMessages)
{
Initialize(unreadMessages);
}
public void Initialize(SiteViewModel siteViewModel)
{
lock (_forLock)
{
//A PageViewModel-eket itt nem Initialize-oljuk, azok majd lefutnak miokor használjuk őket! - J.
Initialize(siteViewModel.UnreadMessages);
}
}
public void Initialize(IEnumerable<EmailMessage> unreadMessages)
{
lock (_forLock)
{
UnreadMessages.Clear();
UnreadMessages.AddRange(unreadMessages);
}
}
public void ClearAll()
{
lock (_forLock)
{
UnreadMessages.Clear();
DriverManageTransfersPageModel.ClearAll();
}
}
}

View File

@ -5,6 +5,8 @@ namespace TIAM.Services;
public class SignalRTags : AcSignalRTags
{
public const int GetSiteViewModelByUserId = 999;
public const int GetTransfer = 1;
public const int GetTransfers = 2;
public const int GetTransfersByUserId = 3;
@ -13,8 +15,7 @@ public class SignalRTags : AcSignalRTags
public const int GetTransfersByCompanyId = 6;
public const int GetTransfersByUserProductMappingId = 701;
public const int GetTransfersByOrderingProductId = 702;
public const int GetDriverManageTransfersPageModelByDriverId = 703;
public const int GetTransfersByFilterText = 301;
public const int UpdateTransfer = 7;
@ -38,6 +39,7 @@ public class SignalRTags : AcSignalRTags
public const int AddTransferToDriver = 26;
public const int UpdateTransferToDriver = 27;
public const int RemoveTransferToDriver = 28;
public const int GetDriverManageTransfersPageModelByDriverId = 803;
public const int GetAddress = 29;

View File

@ -6,6 +6,7 @@ using AyCode.Services.Loggers;
using Newtonsoft.Json;
using TIAM.Core.Loggers;
using TIAM.Entities.Users;
using TIAM.Models;
using TIAM.Models.Dtos.Users;
using TIAMWebApp.Shared.Application.Interfaces;
using TIAMWebApp.Shared.Application.Models;
@ -18,19 +19,21 @@ namespace TIAMMobileApp.Services
{
public class UserDataServiceMobile : IUserDataService
{
private readonly HttpClient http;
private readonly ISecureStorageHandler secureStorageHandler;
private readonly IServiceProviderDataService serviceProviderDataService;
private readonly HttpClient _http;
private readonly SiteViewModel _siteViewModel;
private readonly ISecureStorageHandler _secureStorageHandler;
private readonly IServiceProviderDataService _serviceProviderDataService;
private readonly LoggerClient<UserDataServiceMobile> _logger;
public UserDataServiceMobile(HttpClient http, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
public UserDataServiceMobile(HttpClient http, SiteViewModel siteViewModel, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
{
this.http = http;
this.secureStorageHandler = secureStorageHandler;
_http = http;
_secureStorageHandler = secureStorageHandler;
_siteViewModel = siteViewModel;
//this._browserConsoleLogWriter = new BrowserConsoleLogWriter(jsRuntime);
this.serviceProviderDataService = serviceProviderDataService;
_serviceProviderDataService = serviceProviderDataService;
_logger = new LoggerClient<UserDataServiceMobile>(logWriters.ToArray());
//_logger = new TIAM.Core.Loggers.Logger<UserDataServiceWeb>(AppType.Web, LogLevel.Info, logWriters.ToArray());
//_logger = new TIAM.Core.Loggers.Logger<UserDataServiceWeb>(AppType.Web, LogLevel.Info, logWriter);
@ -75,7 +78,7 @@ namespace TIAMMobileApp.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.UserTest}";
var response = await http.PostAsJsonAsync(url, Param);
var response = await _http.PostAsJsonAsync(url, Param);
var result = await response.Content.ReadAsStringAsync();
return result;
}
@ -85,7 +88,7 @@ namespace TIAMMobileApp.Services
string result = string.Empty;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.AuthenticateUser}";
var response = await http.PostAsJsonAsync(url, loginModel);
var response = await _http.PostAsJsonAsync(url, loginModel);
//try
//{
@ -117,7 +120,7 @@ namespace TIAMMobileApp.Services
string result = string.Empty;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateUser}";
_logger.Info("CreateUser url: " + url);
var response = await http.PostAsJsonAsync(url, regModel);
var response = await _http.PostAsJsonAsync(url, regModel);
result = await response.Content.ReadAsStringAsync();
/*if (response.IsSuccessStatusCode)
{
@ -142,7 +145,7 @@ namespace TIAMMobileApp.Services
UserModelDto? user = new UserModelDto();
var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateGuestUser}";
_logger.Info("CreateGuestUser url: " + url);
var response = await http.PostAsJsonAsync(url, regModel);
var response = await _http.PostAsJsonAsync(url, regModel);
if (response.IsSuccessStatusCode)
@ -165,7 +168,7 @@ namespace TIAMMobileApp.Services
public async Task<List<UserModelDto>?> GetUsersAsync()
{
return await http.GetFromJsonAsync<List<UserModelDto>>(APIUrls.GetUsers);
return await _http.GetFromJsonAsync<List<UserModelDto>>(APIUrls.GetUsers);
}
public async Task<List<UserModelDtoDetail>?> GetUsersWithDetailsAsync()
@ -174,7 +177,7 @@ namespace TIAMMobileApp.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUsersWithDetails}";
_logger.Info("GetUserByEmailAsync url: " + url + "!");
var response = await http.GetFromJsonAsync<List<UserModelDtoDetail>>(APIUrls.GetUsersWithDetails);
var response = await _http.GetFromJsonAsync<List<UserModelDtoDetail>>(APIUrls.GetUsersWithDetails);
//var result = await response.Content.ReadAsStringAsync();
//var user = JsonConvert.DeserializeObject<UserModelDto>(result);
return response;
@ -189,7 +192,7 @@ namespace TIAMMobileApp.Services
{
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUserByEmail}/{email}";
_logger.Info("GetUserByEmailAsync url: " + url + ", " + email);
var response = await http.GetAsync(url);
var response = await _http.GetAsync(url);
response.EnsureSuccessStatusCode();
if (response.Content != null)
@ -230,7 +233,7 @@ namespace TIAMMobileApp.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUserById}";
_logger.Info("GetUserByIdAsync url: " + url + ", " + id.ToString());
var response = await http.PostAsJsonAsync(url, id);
var response = await _http.PostAsJsonAsync(url, id);
var result = await response.Content.ReadAsStringAsync();
var user = JsonConvert.DeserializeObject<UserModelDto>(result);
@ -244,7 +247,7 @@ namespace TIAMMobileApp.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUserDetailById}";
_logger.Info("GetUserDetailByIdAsync url: " + url + ", " + id.ToString());
var response = await http.PostAsJsonAsync(url, id);
var response = await _http.PostAsJsonAsync(url, id);
var result = await response.Content.ReadAsStringAsync();
var user = JsonConvert.DeserializeObject<UserModelDtoDetail>(result);
@ -268,7 +271,7 @@ namespace TIAMMobileApp.Services
try
{
_logger.Info("Refreshtoken url: " + url);
var response = await http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json"));
var response = await _http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json"));
if (response.IsSuccessStatusCode)
{
string contentStr = await response.Content.ReadAsStringAsync();
@ -280,7 +283,7 @@ namespace TIAMMobileApp.Services
Setting.UserBasicDetails.RefreshToken = tokenDetails.RefreshToken;
string userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails);
await secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr);
await _secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr);
isTokenRefreshed = true;
}
}
@ -299,9 +302,11 @@ namespace TIAMMobileApp.Services
{
_logger.Info("Logout() called");
_siteViewModel.ClearAll();
var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}";
bool result = false;
var response = await http.PostAsJsonAsync(url, RefreshToken);
var response = await _http.PostAsJsonAsync(url, RefreshToken);
if (response.IsSuccessStatusCode)
{
string resultMessage = await response.Content.ReadAsStringAsync();
@ -329,7 +334,7 @@ namespace TIAMMobileApp.Services
_logger.Info("SendForgottenPasswordMail() called");
var url = $"{Setting.ApiBaseUrl}/{APIUrls.SendForgottenPasswordMail}";
var response = await http.PostAsJsonAsync(url, emailAddress);
var response = await _http.PostAsJsonAsync(url, emailAddress);
var success = await response.Content.ReadFromJsonAsync<bool>();
_logger.Detail($"SendForgottenPasswordMail(): {success.ToString()}");
@ -344,7 +349,7 @@ namespace TIAMMobileApp.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.ValidateForgottenPasswordToken}";
var parameters = new[] { userId.ToString(), token };
var response = await http.PostAsJsonAsync(url, parameters);
var response = await _http.PostAsJsonAsync(url, parameters);
result = await response.Content.ReadAsStringAsync();
_logger.Detail($"ValidateForgotPasswordToken(): {result}");
@ -359,7 +364,7 @@ namespace TIAMMobileApp.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.SetEmailConfirmed}";
var response = await http.PostAsJsonAsync(url, userId);
var response = await _http.PostAsJsonAsync(url, userId);
result = await response.Content.ReadFromJsonAsync<bool>();
_logger.Detail($"ValidateForgotPasswordToken(): {result.ToString()}");

View File

@ -11,9 +11,13 @@
@using AyCode.Interfaces.StorageHandlers;
@using System.Globalization;
@using AyCode.Core.Enums
@using AyCode.Core.Helpers
@using AyCode.Core.Loggers
@using AyCode.Services.Loggers
@using TIAM.Core.Loggers
@using TIAM.Models
@using TIAM.Services
@using TIAMWebApp.Shared.Application.Services
@inject NavigationManager NavManager
@inject IJSRuntime JSRuntime
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@ -24,6 +28,8 @@
@inject HttpClient http;
@inject IComponentUpdateService ComponentUpdateService
@inject AuthenticationStateProvider AuthStateProvider
@inject AdminSignalRClient _adminSignalRClient;
@inject SiteViewModel _siteViewModel;
@{
if (string.IsNullOrWhiteSpace(TrackingId))
@ -81,6 +87,7 @@
if(userBasicDetail!= null)
Setting.UserBasicDetails = userBasicDetail;
var isSuccess = false;
if (jsontoken?.ValidTo < DateTime.UtcNow)
{
_logger.Info("Token needs to be refreshed");
@ -91,6 +98,8 @@
await AuthStateProvider.GetAuthenticationStateAsync();
_logger.Info("Token refreshed");
isSuccess = true;
}
else
{
@ -105,11 +114,25 @@
{
_logger.Info("Valid token found");
await AuthStateProvider.GetAuthenticationStateAsync();
isSuccess = true;
}
string _userId = jsontoken.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.NameId).Value;
string _email = jsontoken.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.Email).Value;
var user = await UserDataService.IsLoggedInAsync(Guid.Parse(_userId));
if (isSuccess)
{
_adminSignalRClient.GetByIdAsync<SiteViewModel>(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage =>
{
_siteViewModel.Initialize(signalResponseMessage.ResponseData!);
_logger.Debug($"UnreadMessages: {_siteViewModel.UnreadMessages.Count}");
return Task.CompletedTask;
}, user.UserId).Forget();
}
await SaveToSessionInfo(user);
_logger.Info($"Saved user in db is: {user.DisplayName}, setting autenthicated state");

View File

@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Components;
using System.IdentityModel.Tokens.Jwt;
using System.Text.Json;
using AyCode.Core.Helpers;
using TIAMWebApp.Shared.Application.Models.ClientSide;
using TIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Interfaces;
@ -12,6 +13,8 @@ using AyCode.Services.Loggers;
using Microsoft.AspNetCore.Components.Authorization;
using TIAM.Core.Consts;
using TIAM.Entities.Users;
using TIAM.Models;
using TIAM.Services;
using TIAMWebApp.Shared.Application.Services;
using TIAMSharedUI.Shared.Components.BaseComponents;
@ -19,7 +22,9 @@ namespace TIAMSharedUI.Pages
{
public partial class Login : BasePageComponent
{
[Inject] private AdminSignalRClient _adminSignalRClient { get; set; }
[Inject] private SiteViewModel _siteViewModel { get; set; }
[Inject]
public NavigationManager navManager { get; set; }
[Inject]
@ -115,8 +120,17 @@ namespace TIAMSharedUI.Pages
//display success message via jsinterop
BrowserConsoleLogWriter.Info("Successful login");
var user = await userDataService.IsLoggedInAsync(myId);
SaveToSessionInfo(user);
user.UserType = UserType.Admin;
_adminSignalRClient.GetByIdAsync<SiteViewModel>(SignalRTags.GetSiteViewModelByUserId, signalResponseMessage =>
{
_siteViewModel.Initialize(signalResponseMessage.ResponseData!);
BrowserConsoleLogWriter.Debug($"UnreadMessages: {_siteViewModel.UnreadMessages.Count}");
return Task.CompletedTask;
}, user.UserId).Forget();
SaveToSessionInfo(user).Forget();
navManager.NavigateTo("/");
}

View File

@ -25,6 +25,7 @@
@using AyCode.Services.SignalRs
@using DevExpress.Data.Filtering
@using TIAM.Entities.Emails
@using TIAM.Models
@using TIAM.Models.PageViewModels
@using TIAMSharedUI.Shared.Components.BaseComponents
@inherits UserBasePageComponent
@ -34,7 +35,7 @@
@inject IWizardProcessor wizardProcessor
@inject ITransferDataService transferDataService
@inject ISessionService sessionService
@inject DriverManageTransfersPageModel PageModel;
@inject SiteViewModel SiteViewModel;
@inject AdminSignalRClient AdminSignalRClient;
<PageTitle>Transfers</PageTitle>
@ -75,12 +76,12 @@
<div class=" col-12">
<DxTabs CssClass="no-padding">
<DxTabPage Text="@($"Upcoming({PageModel.Upcomings.Count})")">
<DxTabPage Text="@($"Upcoming({_pageModel.Upcomings.Count})")">
<DxAccordion CssClass="no-padding" SizeMode="@SizeMode.Small" ExpandMode="ExpandMode"
ExpandCollapseAction="ExpandCollapseAction"
AnimationType="LayoutAnimationType.Slide">
<Items>
@foreach (var transfer in PageModel.Upcomings)
@foreach (var transfer in _pageModel.Upcomings)
{
<DxAccordionItem IconCssClass="@GetCustomColor(transfer.TransferStatusType)">
<HeaderTextTemplate>
@ -100,18 +101,18 @@
</DxAccordion>
</DxTabPage>
<DxTabPage Text="@($"Messages({PageModel.UnreadedMessagesCount})")">
<DxTabPage Text="@($"Messages({_pageModel.UnreadMessagesCount})")">
<div class="d-flex flex-column mb-4 pb-2">
<MessageDetailGridComponent ContextId="driverId" GetAllMessageTag="SignalRTags.GetTransfersMessagesByDriverId" IsSenderEmailVisible="false" IsMessageTextVisible="false"></MessageDetailGridComponent>
</div>
</DxTabPage>
<DxTabPage Text="@($"Problems({PageModel.Problems.Count})")">
<DxTabPage Text="@($"Problems({_pageModel.Problems.Count})")">
<DxAccordion CssClass="no-padding" SizeMode="@SizeMode.Small" ExpandMode="ExpandMode"
ExpandCollapseAction="ExpandCollapseAction"
AnimationType="LayoutAnimationType.Slide">
<Items>
@foreach (var transfer in PageModel.Problems)
@foreach (var transfer in _pageModel.Problems)
{
<DxAccordionItem IconCssClass="@GetCustomColor(transfer.TransferStatusType)">
@ -214,6 +215,7 @@
DateTime StartDate { get; set; } = DateTime.Today;
DxSchedulerDataStorage _dataStorage = new();
private DriverManageTransfersPageModel _pageModel;
public List<string> IgnoreList =
[
@ -404,6 +406,7 @@
protected override async Task OnInitializedAsync()
{
_logger = new LoggerClient<DriverManageTransfers>(LogWriters.ToArray());
_pageModel = SiteViewModel.DriverManageTransfersPageModel;
InitializePageAsync(DriverId).Forget();
@ -418,9 +421,9 @@
{
_logger.Error("response.Status == SignalResponseStatus.Error || response.ResponseData == null");
}
else PageModel.Initialize(response.ResponseData);
else _pageModel.Initialize(response.ResponseData);
InitializeAppointments(PageModel.Transfers);
InitializeAppointments(_pageModel.Transfers);
StateHasChanged();
return Task.CompletedTask;

View File

@ -125,7 +125,7 @@
<text>@System.Text.RegularExpressions.Regex.Replace((displayTextContext.Value as string)!, "<(.|\n)*?>", string.Empty)</text>
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn FieldName="IsReaded" Caption="Readed" Visible="@IsMessageTextVisible" Width="70" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" />
<DxGridDataColumn FieldName="IsReaded" Caption="Read" Visible="@IsMessageTextVisible" Width="70" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" />
</Columns>
<DetailRowTemplate>

View File

@ -21,6 +21,7 @@ using Microsoft.JSInterop;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.AspNetCore.Components.Routing;
using AyCode.Blazor.Components.Services;
using TIAM.Models;
namespace TIAMSharedUI.Shared.Components
@ -51,6 +52,7 @@ namespace TIAMSharedUI.Shared.Components
private IJSRuntime JsRuntime { get; set; }
[Inject] AuthenticationStateProvider AuthStateProvider { get; set; }
[Inject] SiteViewModel SiteViewModel { get; set; }
private bool enableLogin = true;
private bool enableEvents = false;
@ -96,6 +98,8 @@ namespace TIAMSharedUI.Shared.Components
private async Task SignOut()
{
//SiteViewModel.ClearAll();
bool serverResult;
string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
if (!string.IsNullOrEmpty(userDetailsStr))

View File

@ -13,6 +13,7 @@ using TIAMWebApp.Shared.Application.Utility;
using AyCode.Services.Loggers;
using System.Net;
using Microsoft.AspNetCore.Components.Authorization;
using TIAM.Models;
using TIAM.Models.PageViewModels;
@ -30,7 +31,7 @@ builder.Services.AddScoped<ISecureStorageHandler, SecureStorageHandler>();
builder.Services.AddBlazoredLocalStorage();
builder.Services.AddSingleton<ISessionService, SessionServiceWeb>();
builder.Services.AddSingleton<DriverManageTransfersPageModel>();
builder.Services.AddSingleton<SiteViewModel>();
builder.Services.AddSingleton<IComponentUpdateService, ComponentUpdateServiceWeb>();
builder.Services.AddScoped<IServiceProviderDataService, ServiceProviderDataService>();

View File

@ -12,28 +12,31 @@ using AyCode.Services.Loggers;
using System.Net.Http;
using AyCode.Core.Extensions;
using System.Text.Json;
using TIAM.Models;
namespace TIAMWebApp.Client.Services
{
public class UserDataServiceWeb : IUserDataService
{
private readonly HttpClient http;
private readonly ISecureStorageHandler secureStorageHandler;
private readonly HttpClient _http;
private readonly SiteViewModel _siteViewModel;
private readonly ISecureStorageHandler _secureStorageHandler;
//private readonly BrowserConsoleLogWriter _browserConsoleLogWriter;
private readonly IServiceProviderDataService serviceProviderDataService;
private readonly IServiceProviderDataService _serviceProviderDataService;
private readonly LoggerClient<UserDataServiceWeb> _logger;
public UserDataServiceWeb(HttpClient http, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
public UserDataServiceWeb(HttpClient http, SiteViewModel siteViewModel, ISecureStorageHandler secureStorageHandler, IServiceProviderDataService serviceProviderDataService, IEnumerable<IAcLogWriterClientBase> logWriters)
//public UserDataServiceWeb(HttpClient http, ISecureStorageHandler secureStorageHandler, IJSRuntime jSRuntime, IServiceProviderDataService serviceProviderDataService, HttpClientLogItemWriter logWriter)
{
this.http = http;
this.secureStorageHandler = secureStorageHandler;
_http = http;
_siteViewModel = siteViewModel;
_secureStorageHandler = secureStorageHandler;
//this._browserConsoleLogWriter = new BrowserConsoleLogWriter(jsRuntime);
this.serviceProviderDataService = serviceProviderDataService;
_serviceProviderDataService = serviceProviderDataService;
_logger = new LoggerClient<UserDataServiceWeb>(logWriters.ToArray());
//_logger = new TIAM.Core.Loggers.Logger<UserDataServiceWeb>(AppType.Web, LogLevel.Info, logWriters.ToArray());
//_logger = new TIAM.Core.Loggers.Logger<UserDataServiceWeb>(AppType.Web, LogLevel.Info, logWriter);
@ -80,7 +83,7 @@ namespace TIAMWebApp.Client.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.UserTest}";
var response = await http.PostAsJsonAsync(url, Param);
var response = await _http.PostAsJsonAsync(url, Param);
var result = await response.Content.ReadAsStringAsync();
return result;
}
@ -90,7 +93,7 @@ namespace TIAMWebApp.Client.Services
string result = string.Empty;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.AuthenticateUser}";
var response = await http.PostAsJsonAsync(url, loginModel);
var response = await _http.PostAsJsonAsync(url, loginModel);
//try
//{
@ -122,7 +125,7 @@ namespace TIAMWebApp.Client.Services
string result = string.Empty;
var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateUser}";
_logger.Info("CreateUser url: " + url);
var response = await http.PostAsJsonAsync(url, regModel);
var response = await _http.PostAsJsonAsync(url, regModel);
result = await response.Content.ReadAsStringAsync();
/*if (response.IsSuccessStatusCode)
{
@ -147,7 +150,7 @@ namespace TIAMWebApp.Client.Services
UserModelDto? user = new UserModelDto();
var url = $"{Setting.ApiBaseUrl}/{APIUrls.CreateGuestUser}";
_logger.Info("CreateGuestUser url: " + url);
var response = await http.PostAsJsonAsync(url, regModel);
var response = await _http.PostAsJsonAsync(url, regModel);
if (response.IsSuccessStatusCode)
@ -171,7 +174,7 @@ namespace TIAMWebApp.Client.Services
public async Task<List<UserModelDto>?> GetUsersAsync()
{
return await http.GetFromJsonAsync<List<UserModelDto>>(APIUrls.GetUsers);
return await _http.GetFromJsonAsync<List<UserModelDto>>(APIUrls.GetUsers);
}
public async Task<List<UserModelDtoDetail>> GetUsersWithDetailsAsync()
@ -179,7 +182,7 @@ namespace TIAMWebApp.Client.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUsersWithDetails}";
_logger.Info("GetUserByEmailAsync url: " + url + "!");
var response = await http.GetFromJsonAsync<List<UserModelDtoDetail>>(APIUrls.GetUsersWithDetails);
var response = await _http.GetFromJsonAsync<List<UserModelDtoDetail>>(APIUrls.GetUsersWithDetails);
//var result = await response.Content.ReadAsStringAsync();
//var user = JsonConvert.DeserializeObject<UserModelDto>(result);
return response ?? [];
@ -194,7 +197,7 @@ namespace TIAMWebApp.Client.Services
{
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUserByEmail}/{email}";
_logger.Info("GetUserByEmailAsync url: " + url + ", " + email);
var response = await http.GetAsync(url);
var response = await _http.GetAsync(url);
response.EnsureSuccessStatusCode();
if (response.Content != null)
@ -235,7 +238,7 @@ namespace TIAMWebApp.Client.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUserById}";
_logger.Info("GetUserByIdAsync url: " + url + ", " + id.ToString());
var response = await http.PostAsJsonAsync(url, id);
var response = await _http.PostAsJsonAsync(url, id);
var result = await response.Content.ReadAsStringAsync();
var user = JsonConvert.DeserializeObject<UserModelDto>(result);
@ -249,7 +252,7 @@ namespace TIAMWebApp.Client.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUserDetailById}";
_logger.Info("GetUserDetailByIdAsync url: " + url + ", " + id.ToString());
var response = await http.PostAsJsonAsync(url, id);
var response = await _http.PostAsJsonAsync(url, id);
//var result = await response.Content.ReadAsStringAsync();
var result = await response.Content.ReadFromJsonAsync<UserModelDtoDetail>();
//var user = JsonConvert.DeserializeObject<UserModelDtoDetail>(result);
@ -274,7 +277,7 @@ namespace TIAMWebApp.Client.Services
try
{
_logger.Info("Refreshtoken url: " + url);
var response = await http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json"));
var response = await _http.PostAsync(url, new StringContent(serializedStr, Encoding.UTF8, "application/json"));
if (response.IsSuccessStatusCode)
{
string contentStr = await response.Content.ReadAsStringAsync();
@ -286,7 +289,7 @@ namespace TIAMWebApp.Client.Services
Setting.UserBasicDetails.RefreshToken = tokenDetails.RefreshToken;
string userDetailsStr = JsonConvert.SerializeObject(Setting.UserBasicDetails);
await secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr);
await _secureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userDetailsStr);
isTokenRefreshed = true;
}
}
@ -306,9 +309,11 @@ namespace TIAMWebApp.Client.Services
{
_logger.Info("Logout() called");
_siteViewModel.ClearAll();
var url = $"{Setting.ApiBaseUrl}/{APIUrls.LogoutUser}";
bool result = false;
var response = await http.PostAsJsonAsync(url, refreshToken);
var response = await _http.PostAsJsonAsync(url, refreshToken);
if (response.IsSuccessStatusCode)
{
string resultMessage = await response.Content.ReadAsStringAsync();
@ -336,7 +341,7 @@ namespace TIAMWebApp.Client.Services
_logger.Info("SendForgottenPasswordMail() called");
var url = $"{Setting.ApiBaseUrl}/{APIUrls.SendForgottenPasswordMail}";
var response = await http.PostAsJsonAsync(url, emailAddress);
var response = await _http.PostAsJsonAsync(url, emailAddress);
var success = await response.Content.ReadFromJsonAsync<bool>();
_logger.Detail($"SendForgottenPasswordMail(): {success.ToString()}");
@ -351,7 +356,7 @@ namespace TIAMWebApp.Client.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.ValidateForgottenPasswordToken}";
var parameters = new[] { userId.ToString(), token };
var response = await http.PostAsJsonAsync(url, parameters);
var response = await _http.PostAsJsonAsync(url, parameters);
result = await response.Content.ReadAsStringAsync();
_logger.Detail($"ValidateForgotPasswordToken(): {result}");
@ -366,7 +371,7 @@ namespace TIAMWebApp.Client.Services
var url = $"{Setting.ApiBaseUrl}/{APIUrls.SetEmailConfirmed}";
var response = await http.PostAsJsonAsync(url, userId);
var response = await _http.PostAsJsonAsync(url, userId);
result = await response.Content.ReadFromJsonAsync<bool>();
_logger.Detail($"ValidateForgotPasswordToken(): {result.ToString()}");

View File

@ -34,6 +34,8 @@ using TIAM.Entities.Products;
using AyCode.Core.Enums;
using TIAM.Core.Consts;
using System.Security.Cryptography.Xml;
using TIAM.Models;
using TIAM.Models.Dtos.Users;
using TIAM.Models.PageViewModels;
namespace TIAMWebApp.Server.Controllers
@ -60,6 +62,15 @@ namespace TIAMWebApp.Server.Controllers
_userApiController = userApiController;
}
//TODO: ezt meg a Messages-eket átbuherálni a UserDal-ra... - J.
[NonAction]
[SignalR(SignalRTags.GetSiteViewModelByUserId)]
public async Task<SiteViewModel> GetSiteViewModelByUserId(Guid userId)
{
_logger.Debug("$GetSiteViewModelByUserId called; userId: {userId}");
return await _adminDal.GetSiteViewModelByUserId(userId);
}
[AllowAnonymous]

View File

@ -26,6 +26,7 @@ using TIAM.Services.Server.Logins;
using TIAMWebApp.Server.Services;
using AyCode.Core.Enums;
using AyCode.Models.Enums;
using TIAM.Models;
namespace TIAMWebApp.Server.Controllers
{