From 70105d5d9c88d5ef8fb0058a816b34a374731018 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 3 Jul 2024 10:25:42 +0200 Subject: [PATCH] driver transfers --- TIAM.Services/SignalRTags.cs | 1 + TIAMSharedUI/Pages/AppLaunchComponent.razor | 28 ++-- .../Pages/User/Drivers/DriverManageCars.razor | 134 +----------------- .../User/Drivers/DriverManageTransfers.razor | 72 +++++----- TIAMSharedUI/Shared/Users/AdminNavMenu.razor | 9 +- .../Controllers/TransferDataAPIController.cs | 12 ++ .../Interfaces/IServiceProviderDataService.cs | 1 + TIAMWebApp/Shared/Models/APIUrls.cs | 6 + .../Services/ServiceProviderDataService.cs | 8 +- 9 files changed, 93 insertions(+), 178 deletions(-) diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 88ecbbf1..d87d7f44 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -11,6 +11,7 @@ public class SignalRTags : AcSignalRTags public const int GetTransfersByDriverId = 4; public const int GetTransfersByProductId = 5; public const int GetTransfersByCompanyId = 6; + public const int GetTransfersByUserProductMappingId = 701; public const int GetTransfersByFilterText = 301; diff --git a/TIAMSharedUI/Pages/AppLaunchComponent.razor b/TIAMSharedUI/Pages/AppLaunchComponent.razor index 944fad24..96693a5e 100644 --- a/TIAMSharedUI/Pages/AppLaunchComponent.razor +++ b/TIAMSharedUI/Pages/AppLaunchComponent.razor @@ -18,6 +18,7 @@ @inject IJSRuntime JSRuntime @inject IEnumerable LogWriters @inject IUserDataService UserDataService +@inject IServiceProviderDataService ServiceProviderDataService @inject ISecureStorageHandler SecureStorageHandler @inject ISessionService sessionService; @inject HttpClient http; @@ -109,9 +110,9 @@ 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)); - SaveToSessionInfo(user); + await SaveToSessionInfo(user); _logger.Info($"Saved user in db is: {user.DisplayName}, setting autenthicated state"); - + //NavManager.NavigateTo("/"); } else @@ -123,12 +124,13 @@ } - protected void SaveToSessionInfo(UserSessionModel user) + protected async Task SaveToSessionInfo(UserSessionModel user) { sessionService.User = user; sessionService.IsAuthenticated = true; sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0; - sessionService.IsDriver = CheckIfDriver(user.UserModelDto.UserProductMappings); + _logger.Debug($"Checking driver for: {user.UserModelDto.UserProductMappings.Count} mapping"); + sessionService.IsDriver = await CheckIfDriver(user.UserModelDto.UserProductMappings); if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1]) { sessionService.IsDevAdmin = true; @@ -143,12 +145,16 @@ _logger.Debug($"Saved to session: IsAuthenticated: {sessionService.IsAuthenticated}, HasCompany: {sessionService.HasCompany}, IsDriver: {sessionService.IsDriver}, IsDevAdmin: {sessionService.IsDevAdmin}, IsSysAdmin: {sessionService.IsSysAdmin}"); } - public bool CheckIfDriver(List Permissions) + public async Task CheckIfDriver(List Permissions) { bool _isDriver = false; + foreach (UserProductMapping Permission in Permissions) { - if (IsPowerOfTwoInSum(2, Permission.Permissions)) + var permissionToCheck = await ServiceProviderDataService.GetUserProductMappingByIdAsync(Permission.Id); + _logger.Debug($"calling IsPowerOf with values: {Permission.Id}, {Permission.Permissions}, {permissionToCheck.Permissions}, {3}"); + var driverPermissionResult = IsBitSet(permissionToCheck.Permissions, 3); + if (driverPermissionResult) { _isDriver = true; sessionService.DriverPersmissionId = Permission.Id; @@ -157,10 +163,16 @@ return _isDriver; } - public static bool IsPowerOfTwoInSum(int number, int power) + public bool IsBitSet(int number, int power) { + _logger.Debug($"called IsBitSet with values: {number}, {power}"); + int powerOfTwo = 1 << power; // Calculate 2^power - return (number & powerOfTwo) != 0; // Check if the bit at position `power` is set + + _logger.Debug($"powerOfTwo: {powerOfTwo}, {power}"); + + bool result = (number & powerOfTwo) != 0; // Check if the bit at position `power` is set + return result; } public async Task<(string, string)> GetLocalSettings() diff --git a/TIAMSharedUI/Pages/User/Drivers/DriverManageCars.razor b/TIAMSharedUI/Pages/User/Drivers/DriverManageCars.razor index 6a21964d..f2e85394 100644 --- a/TIAMSharedUI/Pages/User/Drivers/DriverManageCars.razor +++ b/TIAMSharedUI/Pages/User/Drivers/DriverManageCars.razor @@ -1,5 +1,6 @@ -@page "/driver/cars/{driverId}" +@page "/driver/cars/{driverId:guid}" @using BlazorAnimation +@using TIAM.Entities.Drivers @using TIAM.Models.Dtos.Users @using TIAM.Resources @using TIAM.Services @@ -31,14 +32,9 @@
-
- -
+ - +
@@ -54,126 +50,11 @@ @code { - [Parameter] public string driverId { get; set; } + [Parameter] public Guid driverId { get; set; } private LoggerClient _logger; - //public UserModelDtoDetail UserModelDtoDetail = new(); - - - bool PopupVisible { get; set; } - - IGrid Grid { get; set; } - //object? MasterGridData { get; set; } - - public List IgnoreList = - [ - "ReceiverEmailAddress", - "ReceiverId", - "SenderEmailAddress", - "SenderId", - "ContextId" - ]; - - void Grid_CustomizeElement(GridCustomizeElementEventArgs e) - { - if (e.ElementType == GridElementType.DataRow && e.VisibleIndex % 2 == 1) - { - e.CssClass = "bg-alt"; - } - else if (e.ElementType == GridElementType.HeaderCell) - { - e.Style = "background-color: rgba(0, 0, 0, 0.08); font-style=bold"; - - } - } - - void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) - { - if (!e.IsNew) return; - - var userEditModel = (UserModelDtoDetail)e.EditModel; //TODO not valid cast - userEditModel.Id = Guid.NewGuid(); - - userEditModel.UserDto = new UserDtoDetail - { - AffiliateId = Guid.NewGuid(), - EmailAddress = "", - PhoneNumber = "" - }; - - userEditModel.ProfileDto = new TIAM.Entities.Profiles.Profile - { - Name = "New user" - }; - - userEditModel.Products = []; - userEditModel.ServiceProviders = []; - userEditModel.UserProductMappings = []; - } - - async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) - { - var userModelDtoDetail = ((UserModelDtoDetail)e.EditModel); - - if (e.IsNew) - { - //add new orderData to orderData array - var registration = new RegistrationModel(); - //TODO: Refractor to userDataService - - var random = new Random(); - const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; - var password = new string(Enumerable.Repeat(chars, 10) - .Select(s => s[random.Next(s.Length)]).ToArray()); - - registration.Email = userModelDtoDetail.UserDto.EmailAddress; - registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber; - registration.Password = password; - registration.ReferralId = null; - - await UserDataService.CreateGuestUser(registration); - _logger.Info("New user created added"); - } - else - { - _logger.Info("orderData updated at id " + userModelDtoDetail.Id); - - //await transferDataService.UpdateTransferAsync((TransferWizardModel)e.EditModel); - //modify transferData where transferData.Id == e.EditModel.Id - } - //get transfer from TransferData by Id - - // foreach (var transferToModify in (List)TransferData) - // { - // myModel = (Transfer)e.EditModel; - - // if (transferToModify.Id == myModel.Id) - // { - // //transferToModify.Driver = myModel.Driver; - // } - // } - - //TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J. - await UpdateDataAsync(); - } - - async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) - { - //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); - //remove orderData from orderData array - _logger.Info("orderData deleted"); - //await UpdateDataAsync(); - } - - async Task UpdateDataAsync() - { - //refresh grid - - _logger.Info("orderData grid refreshed"); - } - protected override async Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); @@ -181,9 +62,4 @@ base.OnInitialized(); } - void ColumnChooserButton_Click() - { - Grid.ShowColumnChooser(); - } - } diff --git a/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor b/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor index 9bbba420..b19e9847 100644 --- a/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor @@ -1,10 +1,12 @@ -@page "/driver/transfers/{driverId}" +@page "/driver/transfers/{driverId:guid}" @using BlazorAnimation @using TIAM.Core.Enums @using TIAM.Entities.Emails @using TIAM.Entities.Transfers @using TIAM.Resources +@using TIAM.Services @using TIAMSharedUI.Pages.Components +@using TIAMSharedUI.Pages.User.SysAdmins @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Models.ClientSide.UI @@ -80,22 +82,22 @@
+ Logger="_logger" + GetAllMessageTag="SignalRTags.GetTransfersByUserProductMappingId" + SignalRClient="AdminSignalRClient" + ContextIds="new object[] {driverId}" + OnDataSourceChanged="DataSourceChanged" + OnGridItemChanging="DataSourceItemChanging" + OnGridItemChanged="DataSourceItemChanged" + OnGridItemDeleting="DataItemDeleting" + OnGridEditModelSaving="DataItemSaving" + CustomizeElement="Grid_CustomizeElement" + CustomizeEditModel="Grid_CustomizeEditModel" + EditMode="GridEditMode.EditForm" + ColumnResizeMode="GridColumnResizeMode.NextColumn" + AllowSelectRowByClick="false" + PageSize="13" + ShowFilterRow="true"> @@ -196,14 +198,7 @@ - -
- -
-
+
@@ -238,14 +233,12 @@ @code { [Parameter] public Guid DriverId { get; set; } - + private Guid driverId; private LoggerClient _logger; private bool _popupVisible; private TransferGrid _gridTransfer; - private DxTagBox _filterTag; - public List IgnoreList = [ "ReceiverEmailAddress", @@ -260,14 +253,14 @@ private static readonly List Statuses = [ new(Convert.ToByte(TransferStatusType.OrderSubmitted), "Order submitted"), - new(Convert.ToByte(TransferStatusType.OrderConfirmed), "Order confirmed"), - new(Convert.ToByte(TransferStatusType.AssignedToDriver), "Assigned to driver"), - new(Convert.ToByte(TransferStatusType.DriverConfirmed), "Driver confirmed"), - new(Convert.ToByte(TransferStatusType.DriverEnRoute), "Driver enroute"), - new(Convert.ToByte(TransferStatusType.PassengerPickup), "Passenger in car"), - new(Convert.ToByte(TransferStatusType.Finished), "Finished"), - new(Convert.ToByte(TransferStatusType.UserCanceled), "User cancelled"), - new(Convert.ToByte(TransferStatusType.AdminDenied), "Admin cancelled") + new(Convert.ToByte(TransferStatusType.OrderConfirmed), "Order confirmed"), + new(Convert.ToByte(TransferStatusType.AssignedToDriver), "Assigned to driver"), + new(Convert.ToByte(TransferStatusType.DriverConfirmed), "Driver confirmed"), + new(Convert.ToByte(TransferStatusType.DriverEnRoute), "Driver enroute"), + new(Convert.ToByte(TransferStatusType.PassengerPickup), "Passenger in car"), + new(Convert.ToByte(TransferStatusType.Finished), "Finished"), + new(Convert.ToByte(TransferStatusType.UserCanceled), "User cancelled"), + new(Convert.ToByte(TransferStatusType.AdminDenied), "Admin cancelled") ]; private static List _selectedCategories = Statuses.Where(x => /* x.StatusValue != (byte)TransferStatusType.OrderSubmitted && */ x.StatusValue != (byte)TransferStatusType.Finished && x.StatusValue != (byte)TransferStatusType.UserCanceled && x.StatusValue != (byte)TransferStatusType.AdminDenied).ToList(); @@ -280,6 +273,11 @@ DateTime StartDate { get; set; } = DateTime.Today; DxSchedulerDataStorage _dataStorage = new(); + protected override Task OnParametersSetAsync() + { + driverId = DriverId; + return base.OnParametersSetAsync(); + } void SendMail(Transfer item) { @@ -325,7 +323,7 @@ return $@" -

Dear {messageModel.SenderFullName},

+

Dear {messageModel.ReceiverFullName},

{messageModel.Content}:

Best regards,
Tour I Am team

diff --git a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor index 4c323f81..14522398 100644 --- a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor +++ b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor @@ -26,10 +26,13 @@ - + + @{ - string url = $"driver/cars/{SessionService.DriverPersmissionId.ToString()}"; - + string url1 = $"driver/transfers/{SessionService.DriverPersmissionId}"; + string url2 = $"driver/cars/{SessionService.DriverPersmissionId}"; + + } diff --git a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs index 4047a33d..9a4869b5 100644 --- a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs +++ b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs @@ -556,6 +556,7 @@ namespace TIAMWebApp.Server.Controllers return result; } + [NonAction] [SignalR(SignalRTags.GetTransfersByFilterText)] public async Task> GetTransfersByFilterText(string criteriaOperatorText) { @@ -575,6 +576,17 @@ namespace TIAMWebApp.Server.Controllers return result; } + [Authorize] + [HttpGet] + [Route(APIUrls.GetTransfersByUserProductMappingIdRouteName)] + [SignalR(SignalRTags.GetTransfersByUserProductMappingId)] + public async Task GetTransfersByDriverId(Guid userProductMappingId) + { + _logger.Debug($"GetTransferByDriverId called!!!"); + var result = await _adminDal.GetTransfersByUserProductMappingIdAsync(userProductMappingId); + return result.ToJson(); + } + [AllowAnonymous] [HttpPost] diff --git a/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs b/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs index 0d44243c..44e04baf 100644 --- a/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs @@ -39,6 +39,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces //23. (IServiceProviderDataService) Get Assigned Users By ProductId public Task> GetUserProductMappingsByProductIdAsync(Guid productId); + public Task GetUserProductMappingByIdAsync(Guid productId); //24. (IServiceProviderDataService) Remove Assigned Users from Product public Task RemoveUserProductMappingsByContextIdAsync(Guid productId); diff --git a/TIAMWebApp/Shared/Models/APIUrls.cs b/TIAMWebApp/Shared/Models/APIUrls.cs index ef09de07..77c420f6 100644 --- a/TIAMWebApp/Shared/Models/APIUrls.cs +++ b/TIAMWebApp/Shared/Models/APIUrls.cs @@ -111,6 +111,12 @@ namespace TIAMWebApp.Shared.Application.Models public const string GetTransferByIdRouteName = "GetTransferById"; public const string GetTransferById = TransferDataAPI + GetTransferByIdRouteName; + public const string GetTransfersByDriverIdRouteName = "GetTransfersByDriverId"; + public const string GetTransfersByDriverId = TransferDataAPI + GetTransfersByDriverIdRouteName; + + public const string GetTransfersByUserProductMappingIdRouteName = "GetTransfersByUserProductMappingId"; + public const string GetTransfersByUserProductMappingId = TransferDataAPI + GetTransfersByUserProductMappingIdRouteName; + public const string CreateTransferRouteName = "CreateTransfer"; public const string CreateTransfer = TransferDataAPI + CreateTransferRouteName; diff --git a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs index fd0d9ede..60f06d25 100644 --- a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs @@ -109,7 +109,13 @@ namespace TIAMWebApp.Shared.Application.Services { throw new NotImplementedException(); } - + + public async Task GetUserProductMappingByIdAsync(Guid userProductMappingId) + { + var result = await _adminSignalRClient.GetByIdAsync(SignalRTags.GetUserProductMappingById, userProductMappingId); + return result; + } + //17. public Task GetPropertiesByOwnerIdAsync(Guid id, Action?> callback) {