driver transfers
This commit is contained in:
parent
d3714d491d
commit
70105d5d9c
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
@inject IJSRuntime JSRuntime
|
||||
@inject IEnumerable<IAcLogWriterClientBase> 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<UserProductMapping> Permissions)
|
||||
public async Task<bool> CheckIfDriver(List<UserProductMapping> 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()
|
||||
|
|
|
|||
|
|
@ -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 @@
|
|||
<Animation Effect="@Effect.FadeInUp" Speed="@Speed.Fast" Delay="@TimeSpan.FromMilliseconds(250)">
|
||||
<div class="card">
|
||||
<div class="d-flex flex-column mb-4 pb-2">
|
||||
<div class="align-self-end pl-2 pb-2">
|
||||
<DxButton Text="Column Chooser"
|
||||
RenderStyle="ButtonRenderStyle.Secondary"
|
||||
IconCssClass="btn-column-chooser"
|
||||
Click="ColumnChooserButton_Click" />
|
||||
</div>
|
||||
|
||||
|
||||
<CarDetailGridComponent DetailExpandButtonDisplayMode="GridDetailExpandButtonDisplayMode.Auto" ContextId="Guid.Parse(driverId)" GetAllTag="SignalRTags.GetCarsForUserProductMapping"></CarDetailGridComponent>
|
||||
<CarDetailGridComponent DetailExpandButtonDisplayMode="GridDetailExpandButtonDisplayMode.Auto" ContextId="driverId" GetAllTag="SignalRTags.GetCarsForUserProductMapping"></CarDetailGridComponent>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -54,126 +50,11 @@
|
|||
|
||||
@code {
|
||||
|
||||
[Parameter] public string driverId { get; set; }
|
||||
[Parameter] public Guid driverId { get; set; }
|
||||
|
||||
private LoggerClient<DriverManageCars> _logger;
|
||||
//public UserModelDtoDetail UserModelDtoDetail = new();
|
||||
|
||||
|
||||
bool PopupVisible { get; set; }
|
||||
|
||||
IGrid Grid { get; set; }
|
||||
//object? MasterGridData { get; set; }
|
||||
|
||||
public List<string> 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<Transfer>)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<DriverManageCars>(LogWriters.ToArray());
|
||||
|
|
@ -181,9 +62,4 @@
|
|||
base.OnInitialized();
|
||||
}
|
||||
|
||||
void ColumnChooserButton_Click()
|
||||
{
|
||||
Grid.ShowColumnChooser();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 @@
|
|||
</div>
|
||||
|
||||
<TransferDetailGrid @ref="_gridTransfer"
|
||||
Logger="_logger"
|
||||
SignalRClient="AdminSignalRClient"
|
||||
ContextIds="new object[] {DriverId}"
|
||||
FilterText="@_filterText"
|
||||
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">
|
||||
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">
|
||||
|
||||
<Columns>
|
||||
<DxGridCommandColumn NewButtonVisible="false" DeleteButtonVisible="AcDomain.IsDeveloperVersion" Width="80" MinWidth="80" FixedPosition="GridColumnFixedPosition.Left" />
|
||||
|
|
@ -196,14 +198,7 @@
|
|||
</DxFormLayout>
|
||||
</EditFormTemplate>
|
||||
|
||||
<ToolbarTemplate>
|
||||
<div>
|
||||
<DxTagBox Data="@Statuses" Values="@_selectedCategories" @ref="_filterTag"
|
||||
ValuesChanged="(IEnumerable<TransferStatusModel> values) => TagBox_ValuesChanged(values)"
|
||||
ValueFieldName="StatusValue" TextFieldName="StatusName" NullText="Select status type..."
|
||||
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" aria-label="Select status type" />
|
||||
</div>
|
||||
</ToolbarTemplate>
|
||||
|
||||
</TransferDetailGrid>
|
||||
</div>
|
||||
</DxTabPage>
|
||||
|
|
@ -238,14 +233,12 @@
|
|||
|
||||
@code {
|
||||
[Parameter] public Guid DriverId { get; set; }
|
||||
|
||||
private Guid driverId;
|
||||
private LoggerClient<DriverManageTransfers> _logger;
|
||||
|
||||
private bool _popupVisible;
|
||||
private TransferGrid _gridTransfer;
|
||||
|
||||
private DxTagBox<TransferStatusModel, TransferStatusModel> _filterTag;
|
||||
|
||||
public List<string> IgnoreList =
|
||||
[
|
||||
"ReceiverEmailAddress",
|
||||
|
|
@ -260,14 +253,14 @@
|
|||
private static readonly List<TransferStatusModel> 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<TransferStatusModel> _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 $@"
|
||||
<html>
|
||||
<body>
|
||||
<p>Dear {messageModel.SenderFullName},</p>
|
||||
<p>Dear {messageModel.ReceiverFullName},</p>
|
||||
<p>{messageModel.Content}:</p>
|
||||
<p>Best regards,<br/>Tour I Am team</p>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -26,10 +26,13 @@
|
|||
<DxMenuItem Text="Driver" Visible="@IsDriver" IconCssClass="menu-icon-products menu-icon">
|
||||
<Items>
|
||||
<DxMenuItem NavigateUrl="driver/dashboard" Text="Dashboard" />
|
||||
<DxMenuItem NavigateUrl="driver/transfers" Text="My transfers" />
|
||||
|
||||
|
||||
@{
|
||||
string url = $"driver/cars/{SessionService.DriverPersmissionId.ToString()}";
|
||||
<DxMenuItem NavigateUrl="@url" Text="My cars" />
|
||||
string url1 = $"driver/transfers/{SessionService.DriverPersmissionId}";
|
||||
string url2 = $"driver/cars/{SessionService.DriverPersmissionId}";
|
||||
<DxMenuItem NavigateUrl="@url1" Text="My transfers" />
|
||||
<DxMenuItem NavigateUrl="@url2" Text="My cars" />
|
||||
}
|
||||
|
||||
<DxMenuItem NavigateUrl="sysadmin/users" Text="Users" />
|
||||
|
|
|
|||
|
|
@ -556,6 +556,7 @@ namespace TIAMWebApp.Server.Controllers
|
|||
return result;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
[SignalR(SignalRTags.GetTransfersByFilterText)]
|
||||
public async Task<List<Transfer>> GetTransfersByFilterText(string criteriaOperatorText)
|
||||
{
|
||||
|
|
@ -575,6 +576,17 @@ namespace TIAMWebApp.Server.Controllers
|
|||
return result;
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpGet]
|
||||
[Route(APIUrls.GetTransfersByUserProductMappingIdRouteName)]
|
||||
[SignalR(SignalRTags.GetTransfersByUserProductMappingId)]
|
||||
public async Task<string> GetTransfersByDriverId(Guid userProductMappingId)
|
||||
{
|
||||
_logger.Debug($"GetTransferByDriverId called!!!");
|
||||
var result = await _adminDal.GetTransfersByUserProductMappingIdAsync(userProductMappingId);
|
||||
return result.ToJson();
|
||||
}
|
||||
|
||||
|
||||
[AllowAnonymous]
|
||||
[HttpPost]
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces
|
|||
|
||||
//23. (IServiceProviderDataService) Get Assigned Users By ProductId
|
||||
public Task<List<UserProductMapping>> GetUserProductMappingsByProductIdAsync(Guid productId);
|
||||
public Task<UserProductMapping> GetUserProductMappingByIdAsync(Guid productId);
|
||||
|
||||
//24. (IServiceProviderDataService) Remove Assigned Users from Product
|
||||
public Task RemoveUserProductMappingsByContextIdAsync(Guid productId);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -109,7 +109,13 @@ namespace TIAMWebApp.Shared.Application.Services
|
|||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
|
||||
public async Task<UserProductMapping> GetUserProductMappingByIdAsync(Guid userProductMappingId)
|
||||
{
|
||||
var result = await _adminSignalRClient.GetByIdAsync<UserProductMapping>(SignalRTags.GetUserProductMappingById, userProductMappingId);
|
||||
return result;
|
||||
}
|
||||
|
||||
//17.
|
||||
public Task GetPropertiesByOwnerIdAsync(Guid id, Action<Dictionary<Guid, string>?> callback)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue