user edit fix, driver pages
This commit is contained in:
parent
7a6fe38b9f
commit
7d4106c47f
|
|
@ -1,6 +1,9 @@
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using TIAM.Core.Consts;
|
||||||
|
using TIAM.Entities.Users;
|
||||||
using TIAMWebApp.Shared.Application.Interfaces;
|
using TIAMWebApp.Shared.Application.Interfaces;
|
||||||
using TIAMWebApp.Shared.Application.Models;
|
using TIAMWebApp.Shared.Application.Models;
|
||||||
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
|
|
||||||
namespace TIAMMobileApp.Services
|
namespace TIAMMobileApp.Services
|
||||||
{
|
{
|
||||||
|
|
@ -14,5 +17,7 @@ namespace TIAMMobileApp.Services
|
||||||
public bool IsDriver { get; set; } = false;
|
public bool IsDriver { get; set; } = false;
|
||||||
public bool IsDevAdmin { get; set; } = false;
|
public bool IsDevAdmin { get; set; } = false;
|
||||||
public bool IsSysAdmin { get; set; } = false;
|
public bool IsSysAdmin { get; set; } = false;
|
||||||
|
public Guid DriverPersmissionId { get; set; } = Guid.Empty;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
@* @page "/"; *@
|
@* @page "/"; *@
|
||||||
@using Microsoft.AspNetCore.Components.Authorization
|
@using Microsoft.AspNetCore.Components.Authorization
|
||||||
@using TIAM.Core.Consts
|
@using TIAM.Core.Consts
|
||||||
|
@using TIAM.Entities.Users
|
||||||
@using TIAMWebApp.Shared.Application.Interfaces
|
@using TIAMWebApp.Shared.Application.Interfaces
|
||||||
@using TIAMWebApp.Shared.Application.Models
|
@using TIAMWebApp.Shared.Application.Models
|
||||||
@using TIAMWebApp.Shared.Application.Utility
|
@using TIAMWebApp.Shared.Application.Utility
|
||||||
|
|
@ -127,10 +128,7 @@
|
||||||
sessionService.User = user;
|
sessionService.User = user;
|
||||||
sessionService.IsAuthenticated = true;
|
sessionService.IsAuthenticated = true;
|
||||||
sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0;
|
sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0;
|
||||||
if (user.UserModelDto.UserProductMappings.Any(x => x.ProductId == TiamConstClient.TransferProductId))
|
sessionService.IsDriver = CheckIfDriver(user.UserModelDto.UserProductMappings);
|
||||||
{
|
|
||||||
sessionService.IsDriver = true;
|
|
||||||
}
|
|
||||||
if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1])
|
if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1])
|
||||||
{
|
{
|
||||||
sessionService.IsDevAdmin = true;
|
sessionService.IsDevAdmin = true;
|
||||||
|
|
@ -145,6 +143,26 @@
|
||||||
_logger.Debug($"Saved to session: IsAuthenticated: {sessionService.IsAuthenticated}, HasCompany: {sessionService.HasCompany}, IsDriver: {sessionService.IsDriver}, IsDevAdmin: {sessionService.IsDevAdmin}, IsSysAdmin: {sessionService.IsSysAdmin}");
|
_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)
|
||||||
|
{
|
||||||
|
bool _isDriver = false;
|
||||||
|
foreach (UserProductMapping Permission in Permissions)
|
||||||
|
{
|
||||||
|
if (IsPowerOfTwoInSum(2, Permission.Permissions))
|
||||||
|
{
|
||||||
|
_isDriver = true;
|
||||||
|
sessionService.DriverPersmissionId = Permission.Id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _isDriver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsPowerOfTwoInSum(int number, int power)
|
||||||
|
{
|
||||||
|
int powerOfTwo = 1 << power; // Calculate 2^power
|
||||||
|
return (number & powerOfTwo) != 0; // Check if the bit at position `power` is set
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<(string, string)> GetLocalSettings()
|
public async Task<(string, string)> GetLocalSettings()
|
||||||
{
|
{
|
||||||
string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
|
string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ using Microsoft.Extensions.Localization;
|
||||||
using AyCode.Services.Loggers;
|
using AyCode.Services.Loggers;
|
||||||
using Microsoft.AspNetCore.Components.Authorization;
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
using TIAM.Core.Consts;
|
using TIAM.Core.Consts;
|
||||||
|
using TIAM.Entities.Users;
|
||||||
|
|
||||||
namespace TIAMSharedUI.Pages
|
namespace TIAMSharedUI.Pages
|
||||||
{
|
{
|
||||||
|
|
@ -161,10 +162,7 @@ namespace TIAMSharedUI.Pages
|
||||||
sessionService.User = user;
|
sessionService.User = user;
|
||||||
sessionService.IsAuthenticated = true;
|
sessionService.IsAuthenticated = true;
|
||||||
sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0;
|
sessionService.HasCompany = user.UserModelDto.UserProductMappings.Count > 0;
|
||||||
if(user.UserModelDto.UserProductMappings.Any(x=>x.ProductId==TiamConstClient.TransferProductId))
|
sessionService.IsDriver = CheckIfDriver(user.UserModelDto.UserProductMappings);
|
||||||
{
|
|
||||||
sessionService.IsDriver = true;
|
|
||||||
}
|
|
||||||
if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1])
|
if (user.UserModelDto.Id == TiamConstClient.DevAdminIds[0] || user.UserModelDto.Id == TiamConstClient.DevAdminIds[1])
|
||||||
{
|
{
|
||||||
sessionService.IsDevAdmin = true;
|
sessionService.IsDevAdmin = true;
|
||||||
|
|
@ -178,5 +176,25 @@ namespace TIAMSharedUI.Pages
|
||||||
}
|
}
|
||||||
BrowserConsoleLogWriter.Debug($"Saved to session: IsAuthenticated: {sessionService.IsAuthenticated}, HasCompany: {sessionService.HasCompany}, IsDriver: {sessionService.IsDriver}, IsDevAdmin: {sessionService.IsDevAdmin}, IsSysAdmin: {sessionService.IsSysAdmin}");
|
BrowserConsoleLogWriter.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)
|
||||||
|
{
|
||||||
|
bool _isDriver = false;
|
||||||
|
foreach (UserProductMapping Permission in Permissions)
|
||||||
|
{
|
||||||
|
if (IsPowerOfTwoInSum(2, Permission.Permissions))
|
||||||
|
{
|
||||||
|
_isDriver = true;
|
||||||
|
sessionService.DriverPersmissionId = Permission.Id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _isDriver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsPowerOfTwoInSum(int number, int power)
|
||||||
|
{
|
||||||
|
int powerOfTwo = 1 << power; // Calculate 2^power
|
||||||
|
return (number & powerOfTwo) != 0; // Check if the bit at position `power` is set
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,189 @@
|
||||||
|
@page "/driver/cars/{driverId}"
|
||||||
|
@using BlazorAnimation
|
||||||
|
@using TIAM.Models.Dtos.Users
|
||||||
|
@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.WizardModels
|
||||||
|
@using TIAMWebApp.Shared.Application.Models.PageModels
|
||||||
|
@using TIAMWebApp.Shared.Application.Utility
|
||||||
|
@using AyCode.Services.Loggers
|
||||||
|
@layout AdminLayout
|
||||||
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
|
@inject IStringLocalizer<TIAMResources> Localizer
|
||||||
|
@inject ISessionService SessionService
|
||||||
|
@inject IWizardProcessor WizardProcessor
|
||||||
|
@inject IUserDataService UserDataService
|
||||||
|
<PageTitle>Car list</PageTitle>
|
||||||
|
|
||||||
|
<div class="text-center m-5">
|
||||||
|
<h1>Car list</h1>
|
||||||
|
<h2 style="font-size:small">Manage cars here!</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class=" col-12">
|
||||||
|
<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>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</Animation>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" col-12 col-xl-6">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
|
||||||
|
[Parameter] public string 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());
|
||||||
|
|
||||||
|
base.OnInitialized();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColumnChooserButton_Click()
|
||||||
|
{
|
||||||
|
Grid.ShowColumnChooser();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,520 @@
|
||||||
|
@page "/driver/transfers/{driverId}"
|
||||||
|
@using BlazorAnimation
|
||||||
|
@using TIAM.Core.Enums
|
||||||
|
@using TIAM.Entities.Emails
|
||||||
|
@using TIAM.Entities.Transfers
|
||||||
|
@using TIAM.Resources
|
||||||
|
@using TIAMSharedUI.Pages.Components
|
||||||
|
@using TIAMSharedUI.Shared
|
||||||
|
@using TIAMWebApp.Shared.Application.Interfaces
|
||||||
|
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI
|
||||||
|
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
|
||||||
|
@using TIAMWebApp.Shared.Application.Models.PageModels
|
||||||
|
@using TIAMWebApp.Shared.Application.Utility
|
||||||
|
@using AyCode.Services.Loggers
|
||||||
|
@using TIAMWebApp.Shared.Application.Services
|
||||||
|
@using TIAMSharedUI.Shared.Components.Grids
|
||||||
|
@using AyCode.Core.Enums
|
||||||
|
@using AyCode.Core.Extensions
|
||||||
|
@using AyCode.Core.Consts
|
||||||
|
@using AyCode.Core
|
||||||
|
@using AyCode.Core.Helpers
|
||||||
|
@using DevExpress.Data.Filtering
|
||||||
|
@using TIAM.Entities.Emails
|
||||||
|
@layout AdminLayout
|
||||||
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
|
@inject IStringLocalizer<TIAMResources> localizer
|
||||||
|
@inject IWizardProcessor wizardProcessor
|
||||||
|
@inject ITransferDataService transferDataService
|
||||||
|
@inject ISessionService sessionService
|
||||||
|
@inject AdminSignalRClient AdminSignalRClient;
|
||||||
|
<PageTitle>Transfers</PageTitle>
|
||||||
|
|
||||||
|
<div class="text-center m-5">
|
||||||
|
<h1>Transfer management</h1>
|
||||||
|
<h2 style="font-size:small">Manage transfers here!</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<DxPopup CssClass="popup-demo-events"
|
||||||
|
@bind-Visible="@_popupVisible"
|
||||||
|
ShowFooter="true"
|
||||||
|
CloseOnEscape="true"
|
||||||
|
CloseOnOutsideClick="false"
|
||||||
|
ShowCloseButton="false"
|
||||||
|
HeaderText="MessageBox"
|
||||||
|
Closing="EulaPopupClosing"
|
||||||
|
Closed="EulaPopupClosed">
|
||||||
|
<BodyContentTemplate>
|
||||||
|
<InputWizard Data=@_messageWizardModel
|
||||||
|
OnSubmit="SubmitForm"
|
||||||
|
IgnoreReflection=@IgnoreList
|
||||||
|
TitleResourceString="NewMessage"
|
||||||
|
SubtitleResourceString="NewMessageSubtitle"
|
||||||
|
SubmitButtonText="@localizer.GetString("ButtonSend")"></InputWizard>
|
||||||
|
</BodyContentTemplate>
|
||||||
|
<FooterContentTemplate Context="Context">
|
||||||
|
<div class="popup-demo-events-footer">
|
||||||
|
<!--DxCheckBox CssClass="popup-demo-events-checkbox" @bind-Checked="@EulaAccepted">I accept the terms of the EULA</!--DxCheckBox-->
|
||||||
|
<!--DxButton CssClass="popup-demo-events-button ms-2" RenderStyle="ButtonRenderStyle.Primary" Text="OK" Click="Context.CloseCallback" /-->
|
||||||
|
<DxButton CssClass="popup-demo-events-button ms-2" RenderStyle="ButtonRenderStyle.Secondary" Text="Cancel" Click="CancelCreateClick" />
|
||||||
|
</div>
|
||||||
|
</FooterContentTemplate>
|
||||||
|
</DxPopup>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class=" col-12">
|
||||||
|
<Animation Effect="@Effect.Pulse" Speed="@Speed.Fast" Delay="@TimeSpan.FromMilliseconds(500)">
|
||||||
|
<div class="card">
|
||||||
|
|
||||||
|
<DxTabs>
|
||||||
|
|
||||||
|
<DxTabPage Text="DataGrid">
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<TransferDetailGrid @ref="_gridTransfer"
|
||||||
|
Logger="_logger"
|
||||||
|
SignalRClient="AdminSignalRClient"
|
||||||
|
ContextIds="new Guid[1] {Guid.Parse(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">
|
||||||
|
|
||||||
|
<Columns>
|
||||||
|
<DxGridCommandColumn NewButtonVisible="false" DeleteButtonVisible="AcDomain.IsDeveloperVersion" Width="80" MinWidth="80" FixedPosition="GridColumnFixedPosition.Left" />
|
||||||
|
<DxGridDataColumn FieldName="Id" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
|
||||||
|
<DxGridDataColumn FieldName="OrderId" Caption="Order" SortIndex="1" SortOrder="GridColumnSortOrder.Descending" Width="70">
|
||||||
|
<CellDisplayTemplate>
|
||||||
|
@{
|
||||||
|
var idKeyField = ((Transfer)context.DataItem).Id.ToString("N");
|
||||||
|
var editUri = $"mytransfers/{idKeyField}";
|
||||||
|
<NavLink href="@editUri">
|
||||||
|
<text>@context.Value</text>
|
||||||
|
</NavLink>
|
||||||
|
}
|
||||||
|
</CellDisplayTemplate>
|
||||||
|
</DxGridDataColumn>
|
||||||
|
<DxGridDataColumn FieldName="FromAddress" />
|
||||||
|
<DxGridDataColumn FieldName="ToAddress" />
|
||||||
|
<DxGridDataColumn FieldName="Appointment" DisplayFormat="g" Width="125" />
|
||||||
|
<DxGridDataColumn FieldName="PassengerCount" Caption="Passengers" Width="90" TextAlignment="GridTextAlignment.Center" CaptionAlignment="GridTextAlignment.Center" />
|
||||||
|
<DxGridDataColumn FieldName="LuggageCount" Caption="Luggages" Width="80" TextAlignment="GridTextAlignment.Center" CaptionAlignment="GridTextAlignment.Center" />
|
||||||
|
<DxGridDataColumn FieldName="FlightNumber" Caption="FlightNum" Width="95" TextAlignment="GridTextAlignment.Center" CaptionAlignment="GridTextAlignment.Center" />
|
||||||
|
<DxGridDataColumn FieldName="Price" Caption="Price" Width="70" CaptionAlignment="GridTextAlignment.Center" />
|
||||||
|
<DxGridDataColumn FieldName="FullName" />
|
||||||
|
<DxGridDataColumn FieldName="ContactPhone" Width="120" />
|
||||||
|
<DxGridDataColumn FieldName="ContactEmail" Width="120">
|
||||||
|
<CellDisplayTemplate>
|
||||||
|
@{
|
||||||
|
var keyField = context.Value;
|
||||||
|
var keyItem = (Transfer)context.DataItem;
|
||||||
|
string buttonText = "Contact";
|
||||||
|
<DxButton Click="() => SendMail(keyItem)" Text="@buttonText" RenderStyle="ButtonRenderStyle.Primary" />
|
||||||
|
}
|
||||||
|
</CellDisplayTemplate>
|
||||||
|
</DxGridDataColumn>
|
||||||
|
<DxGridDataColumn FieldName="PaymentId" DisplayFormat="N" Visible="false" />
|
||||||
|
<DxGridDataColumn Caption="Paid" FieldName="Paid" Width="75" TextAlignment="GridTextAlignment.Center" CaptionAlignment="GridTextAlignment.Center" />
|
||||||
|
<DxGridDataColumn FieldName="TransferStatusType" Caption="Status" SortIndex="0" Width="120" SortOrder="GridColumnSortOrder.Ascending" SortMode="GridColumnSortMode.Value">
|
||||||
|
<CellDisplayTemplate>
|
||||||
|
@{
|
||||||
|
|
||||||
|
TransferStatusModel keyField = Statuses.FirstOrDefault(x => x.StatusValue == (byte)context.Value)!;
|
||||||
|
string transferStatusText = keyField.StatusName;
|
||||||
|
<text>@transferStatusText</text>
|
||||||
|
}
|
||||||
|
</CellDisplayTemplate>
|
||||||
|
</DxGridDataColumn>
|
||||||
|
<DxGridDataColumn FieldName="ReferralId" DisplayFormat="N" Visible="false" />
|
||||||
|
<DxGridDataColumn FieldName="Comment" Caption="Comment" />
|
||||||
|
<DxGridDataColumn FieldName="Created" DisplayFormat="g" Width="125" Visible="false" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" />
|
||||||
|
</Columns>
|
||||||
|
<DetailRowTemplate>
|
||||||
|
<DxTabs>
|
||||||
|
<DxTabPage Text="Messages">
|
||||||
|
<MessageDetailGridComponent ContextId="((Transfer)context.DataItem).Id" />
|
||||||
|
</DxTabPage>
|
||||||
|
<DxTabPage Text="Driver">
|
||||||
|
<TransferToDriverGridComponent ContextId="((Transfer)context.DataItem).Id" ParentData="(Transfer)context.DataItem" />
|
||||||
|
</DxTabPage>
|
||||||
|
</DxTabs>
|
||||||
|
</DetailRowTemplate>
|
||||||
|
<EditFormTemplate Context="editFormContext">
|
||||||
|
@{
|
||||||
|
var transfer2 = (Transfer)editFormContext.EditModel;
|
||||||
|
}
|
||||||
|
<DxFormLayout CssClass="w-100">
|
||||||
|
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.FirstName) ColSpanMd="6">
|
||||||
|
@editFormContext.GetEditor("FirstName")
|
||||||
|
</DxFormLayoutItem>
|
||||||
|
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="6">
|
||||||
|
@editFormContext.GetEditor("LastName")
|
||||||
|
</DxFormLayoutItem>
|
||||||
|
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.DestinationAddress) ColSpanMd="6">
|
||||||
|
@editFormContext.GetEditor("ToAddress")
|
||||||
|
</DxFormLayoutItem>
|
||||||
|
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.PickupAddress) ColSpanMd="6">
|
||||||
|
@editFormContext.GetEditor("FromAddress")
|
||||||
|
</DxFormLayoutItem>
|
||||||
|
<DxFormLayoutItem Caption="Trip date:" ColSpanMd="6">
|
||||||
|
|
||||||
|
<DxDateEdit @bind-Date="@transfer2.Appointment"
|
||||||
|
TimeSectionVisible="true"
|
||||||
|
TimeSectionScrollPickerFormat="tt h m">
|
||||||
|
</DxDateEdit>
|
||||||
|
|
||||||
|
</DxFormLayoutItem>
|
||||||
|
<DxFormLayoutItem Caption="Passengers:" ColSpanMd="6">
|
||||||
|
@editFormContext.GetEditor("PassengerCount")
|
||||||
|
</DxFormLayoutItem>
|
||||||
|
|
||||||
|
<DxFormLayoutItem Caption="Paid:" ColSpanMd="6">
|
||||||
|
@editFormContext.GetEditor("Payed")
|
||||||
|
</DxFormLayoutItem>
|
||||||
|
|
||||||
|
<DxFormLayoutItem Caption="Status:" ColSpanMd="6">
|
||||||
|
@editFormContext.GetEditor("TransferStatusType")
|
||||||
|
</DxFormLayoutItem>
|
||||||
|
|
||||||
|
</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>
|
||||||
|
|
||||||
|
<DxTabPage Text="Calendar">
|
||||||
|
<div class="d-flex flex-column mb-4 pb-2">
|
||||||
|
<DxScheduler @bind-StartDate="@StartDate"
|
||||||
|
DataStorage="@_dataStorage"
|
||||||
|
CssClass="w-100">
|
||||||
|
<DxSchedulerTimelineView Duration="@TimeSpan.FromHours(48)" CellMinWidth="80">
|
||||||
|
<Scales>
|
||||||
|
<DxSchedulerTimeScale Unit="@SchedulerTimeScaleUnit.Day" UnitCount="1"></DxSchedulerTimeScale>
|
||||||
|
<DxSchedulerTimeScale Unit="@SchedulerTimeScaleUnit.Hour" UnitCount="2"></DxSchedulerTimeScale>
|
||||||
|
</Scales>
|
||||||
|
</DxSchedulerTimelineView>
|
||||||
|
<DxSchedulerWeekView ShowWorkTimeOnly="false"></DxSchedulerWeekView>
|
||||||
|
<DxSchedulerDayView DayCount="1" ShowWorkTimeOnly="false"></DxSchedulerDayView>
|
||||||
|
</DxScheduler>
|
||||||
|
</div>
|
||||||
|
</DxTabPage>
|
||||||
|
</DxTabs>
|
||||||
|
</div>
|
||||||
|
</Animation>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" col-12 col-xl-6">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter] public string driverId { get; set; }
|
||||||
|
|
||||||
|
private LoggerClient<DriverManageTransfers> _logger;
|
||||||
|
|
||||||
|
private bool _popupVisible;
|
||||||
|
private TransferGrid _gridTransfer;
|
||||||
|
|
||||||
|
private DxTagBox<TransferStatusModel, TransferStatusModel> _filterTag;
|
||||||
|
|
||||||
|
public List<string> IgnoreList =
|
||||||
|
[
|
||||||
|
"ReceiverEmailAddress",
|
||||||
|
"ReceiverFullName",
|
||||||
|
"ReceiverId",
|
||||||
|
"SenderEmailAddress",
|
||||||
|
"SenderFullName",
|
||||||
|
"SenderId",
|
||||||
|
"ContextId",
|
||||||
|
];
|
||||||
|
|
||||||
|
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")
|
||||||
|
];
|
||||||
|
|
||||||
|
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();
|
||||||
|
private string _filterText = GetFilterText(_selectedCategories.Select(x => (TransferStatusType)x.StatusValue).ToList());
|
||||||
|
|
||||||
|
private MessageWizardModel _messageWizardModel = new();
|
||||||
|
|
||||||
|
public List<AppointmentModel> AppointmentModels { get; set; } = null!;
|
||||||
|
|
||||||
|
DateTime StartDate { get; set; } = DateTime.Today;
|
||||||
|
DxSchedulerDataStorage _dataStorage = new();
|
||||||
|
|
||||||
|
|
||||||
|
void SendMail(Transfer item)
|
||||||
|
{
|
||||||
|
_logger.Info($"Sending mail to {item.ContactEmail}, {item.Id}");
|
||||||
|
|
||||||
|
_messageWizardModel.ReceiverId = item.UserId;
|
||||||
|
_messageWizardModel.ContextId = item.Id;
|
||||||
|
_messageWizardModel.SenderEmailAddress = "info@touriam.com";
|
||||||
|
_messageWizardModel.ReceiverEmailAddress = item.ContactEmail;
|
||||||
|
_messageWizardModel.ReceiverFullName = item.FullName;
|
||||||
|
_popupVisible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CancelCreateClick()
|
||||||
|
{
|
||||||
|
|
||||||
|
_popupVisible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EulaPopupClosed()
|
||||||
|
{
|
||||||
|
//cancel clicked
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void EulaPopupClosing(PopupClosingEventArgs args)
|
||||||
|
{
|
||||||
|
//myModel = new TransferWizardModel();
|
||||||
|
_messageWizardModel = new MessageWizardModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
public async Task SubmitForm(object result)
|
||||||
|
{
|
||||||
|
var messageModel = (result as MessageWizardModel)!;
|
||||||
|
messageModel.ContextId = _messageWizardModel.ContextId;
|
||||||
|
//messageModel.SenderId = sessionService.User.UserId;
|
||||||
|
|
||||||
|
string FormatEmailContent()
|
||||||
|
{
|
||||||
|
return $@"
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<p>Dear {messageModel.SenderFullName},</p>
|
||||||
|
<p>{messageModel.Content}:</p>
|
||||||
|
<p>Best regards,<br/>Tour I Am team</p>
|
||||||
|
</body>
|
||||||
|
</html>";
|
||||||
|
}
|
||||||
|
|
||||||
|
messageModel.Content = FormatEmailContent();
|
||||||
|
|
||||||
|
_logger.Info(messageModel.Content);
|
||||||
|
var email = await wizardProcessor.ProcessWizardAsync<MessageWizardModel>(result.GetType(), messageModel);
|
||||||
|
|
||||||
|
_logger.Info($"Submitted nested form: {result.GetType().FullName}");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (e.ElementType == GridElementType.HeaderCell)
|
||||||
|
{
|
||||||
|
e.Style = "background-color: rgba(0, 0, 0, 0.08)";
|
||||||
|
e.CssClass = "header-bold";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.ElementType != GridElementType.DataRow) return;
|
||||||
|
|
||||||
|
var transferStatus = e.Grid?.GetRowValue(e.VisibleIndex, "TransferStatusType");
|
||||||
|
if (transferStatus == null) return;
|
||||||
|
|
||||||
|
var transferStatusByte = (byte)transferStatus;
|
||||||
|
|
||||||
|
switch (transferStatusByte)
|
||||||
|
{
|
||||||
|
case 5:
|
||||||
|
e.CssClass = "bg-important";
|
||||||
|
break;
|
||||||
|
case > 5 and < 35:
|
||||||
|
e.CssClass = "bg-attention";
|
||||||
|
break;
|
||||||
|
case 35:
|
||||||
|
e.CssClass = "bg-finished";
|
||||||
|
break;
|
||||||
|
case > 35:
|
||||||
|
e.CssClass = "bg-cancel";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.Error($"Grid_CustomizeElement; {ex.Message}", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
|
||||||
|
{
|
||||||
|
if (!e.IsNew) return;
|
||||||
|
|
||||||
|
var transferEditModel = (Transfer)e.EditModel; //TODO not valid cast
|
||||||
|
transferEditModel.Id = Guid.NewGuid();
|
||||||
|
transferEditModel.ToAddress = "Where to?";
|
||||||
|
transferEditModel.FromAddress = "From where?";
|
||||||
|
transferEditModel.Appointment = DateTime.UtcNow.AddDays(3);
|
||||||
|
transferEditModel.PassengerCount = 1;
|
||||||
|
transferEditModel.FirstName = "John";
|
||||||
|
transferEditModel.LastName = "Doe";
|
||||||
|
transferEditModel.ContactPhone = "+00000000000";
|
||||||
|
transferEditModel.ContactEmail = "your@email.address";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetFilterText(ICollection<TransferStatusType> selectedTransferStatuses)
|
||||||
|
=> selectedTransferStatuses.Count == 0 ? string.Empty : CriteriaOperator.FromLambda<Transfer>(t => selectedTransferStatuses.Contains(t.TransferStatusType)).ToString();
|
||||||
|
|
||||||
|
void TagBox_ValuesChanged(IEnumerable<TransferStatusModel> newSelectedCategories)
|
||||||
|
{
|
||||||
|
var filterText = string.Empty;
|
||||||
|
InOperator? filterCriteria = null;
|
||||||
|
|
||||||
|
_selectedCategories = newSelectedCategories.ToList();
|
||||||
|
|
||||||
|
if (_selectedCategories.Count > 0)
|
||||||
|
{
|
||||||
|
filterCriteria = new InOperator("TransferStatusType", _selectedCategories.Select(c => c.StatusValue));
|
||||||
|
filterText = GetFilterText(_selectedCategories.Select(x => (TransferStatusType)x.StatusValue).ToList());
|
||||||
|
}
|
||||||
|
|
||||||
|
_filterText = filterText;
|
||||||
|
_gridTransfer.SetFieldFilterCriteria("TransferStatusType", filterCriteria);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataSourceChanged(IList<Transfer> transfers)
|
||||||
|
{
|
||||||
|
_logger.Info("DataSourceChanged called");
|
||||||
|
|
||||||
|
InitializeAppointments(transfers);
|
||||||
|
|
||||||
|
if (_selectedCategories.Count > 0)
|
||||||
|
TagBox_ValuesChanged(_selectedCategories);
|
||||||
|
|
||||||
|
// if(!SelectedCategories.Any())
|
||||||
|
// SelectedCategories = [Statuses.FirstOrDefault(x => x.StatusValue == (byte)TransferStatusType.Finished)!];
|
||||||
|
|
||||||
|
// var filterTransferStatusType = Statuses.FirstOrDefault(x => x.StatusValue == (byte)TransferStatusType.Finished)!;
|
||||||
|
|
||||||
|
// if (SelectedCategories.All(x => x.StatusValue != filterTransferStatusType.StatusValue))
|
||||||
|
// SelectedCategories.Add(filterTransferStatusType);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataSourceItemChanging(GridDataItemChangingEventArgs<Transfer> args)
|
||||||
|
{
|
||||||
|
_logger.Info("DataSourceItemChanging called");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataSourceItemChanged(GridDataItemChangedEventArgs<Transfer> args)
|
||||||
|
{
|
||||||
|
_logger.Info("DataSourceItemChanged called");
|
||||||
|
|
||||||
|
AppointmentModels.UpdateCollection(CreateAppointmentModel(args.DataItem), args.TrackingState == TrackingState.Remove);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataItemSaving(GridEditModelSavingEventArgs e)
|
||||||
|
{
|
||||||
|
_logger.Info("DataItemSaving called");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataItemDeleting(GridDataItemDeletingEventArgs e)
|
||||||
|
{
|
||||||
|
_logger.Info($"DataItemDeleting OnItemDeleting");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
_logger = new LoggerClient<DriverManageTransfers>(LogWriters.ToArray());
|
||||||
|
|
||||||
|
return base.OnInitializedAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeAppointments(ICollection<Transfer> transferDataList)
|
||||||
|
{
|
||||||
|
_logger.Info("InitializeAppointments called");
|
||||||
|
|
||||||
|
AppointmentModels = new List<AppointmentModel>(transferDataList.Count);
|
||||||
|
|
||||||
|
foreach (var transfer in transferDataList)
|
||||||
|
{
|
||||||
|
// var bnm = DataStorage.CreateAppointmentItem();
|
||||||
|
// bnm.Start = transfer.Appointment;
|
||||||
|
// bnm.Description = $"{transfer.FullName}, {transfer.ToAddress}";
|
||||||
|
// bnm.Location = transfer.FromAddress;
|
||||||
|
// bnm.Subject = "Simple transfer";
|
||||||
|
|
||||||
|
AppointmentModels.Add(CreateAppointmentModel(transfer));
|
||||||
|
}
|
||||||
|
|
||||||
|
_dataStorage = new DxSchedulerDataStorage
|
||||||
|
{
|
||||||
|
AppointmentMappings = new DxSchedulerAppointmentMappings()
|
||||||
|
{
|
||||||
|
Type = "AppointmentType",
|
||||||
|
Start = "StartDate",
|
||||||
|
End = "EndDate",
|
||||||
|
Subject = "Caption",
|
||||||
|
AllDay = "AllDay",
|
||||||
|
Location = "Location",
|
||||||
|
Description = "Description",
|
||||||
|
LabelId = "Label",
|
||||||
|
StatusId = "Status",
|
||||||
|
RecurrenceInfo = "Recurrence"
|
||||||
|
},
|
||||||
|
|
||||||
|
AppointmentsSource = AppointmentModels
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public AppointmentModel CreateAppointmentModel(Transfer transfer)
|
||||||
|
{
|
||||||
|
return new AppointmentModel { Id = transfer.Id, StartDate = transfer.Appointment, EndDate = transfer.Appointment.AddMinutes(30), Description = $"{transfer.FullName}, {transfer.ToAddress}", Location = transfer.FromAddress, Caption = "Simple transfer" };
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColumnChooserButton_Click()
|
||||||
|
{
|
||||||
|
_gridTransfer.ShowColumnChooser();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected override void OnAfterRender(bool firstRender)
|
||||||
|
{
|
||||||
|
if (firstRender)
|
||||||
|
{
|
||||||
|
//_gridTransfer.ExpandDetailRow(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -53,7 +53,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private LoggerClient<ManageUserProductMappings> _logger;
|
private LoggerClient<ManageDrivers> _logger;
|
||||||
//public UserModelDtoDetail UserModelDtoDetail = new();
|
//public UserModelDtoDetail UserModelDtoDetail = new();
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
_logger = new LoggerClient<ManageUserProductMappings>(LogWriters.ToArray());
|
_logger = new LoggerClient<ManageDrivers>(LogWriters.ToArray());
|
||||||
|
|
||||||
base.OnInitialized();
|
base.OnInitialized();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@
|
||||||
@{
|
@{
|
||||||
var transfer2 = (UserModelDtoDetail)EditFormContext.EditModel;
|
var transfer2 = (UserModelDtoDetail)EditFormContext.EditModel;
|
||||||
}
|
}
|
||||||
<DxFormLayout CssClass="w-100">
|
<DxFormLayout CssClass="w-100 form-control">
|
||||||
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.EmailAddress) ColSpanMd="4">
|
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.EmailAddress) ColSpanMd="4">
|
||||||
@EditFormContext.GetEditor("UserDto.EmailAddress")
|
@EditFormContext.GetEditor("UserDto.EmailAddress")
|
||||||
</DxFormLayoutItem>
|
</DxFormLayoutItem>
|
||||||
|
|
@ -133,14 +133,7 @@
|
||||||
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.PhoneNumber) ColSpanMd="4">
|
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.PhoneNumber) ColSpanMd="4">
|
||||||
@EditFormContext.GetEditor("UserDto.PhoneNumber")
|
@EditFormContext.GetEditor("UserDto.PhoneNumber")
|
||||||
</DxFormLayoutItem>
|
</DxFormLayoutItem>
|
||||||
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.FirstName) ColSpanMd="4">
|
|
||||||
@EditFormContext.GetEditor("Profile.FirstName")
|
|
||||||
</DxFormLayoutItem>
|
|
||||||
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.LastName) ColSpanMd="4">
|
|
||||||
@EditFormContext.GetEditor("Profile.LastName")
|
|
||||||
</DxFormLayoutItem>
|
|
||||||
|
|
||||||
|
|
||||||
</DxFormLayout>
|
</DxFormLayout>
|
||||||
</EditFormTemplate>
|
</EditFormTemplate>
|
||||||
|
|
||||||
|
|
@ -241,26 +234,35 @@
|
||||||
|
|
||||||
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
|
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
|
||||||
{
|
{
|
||||||
if (!e.IsNew) return;
|
if (!e.IsNew)
|
||||||
|
|
||||||
var userEditModel = (UserModelDtoDetail)e.EditModel; //TODO not valid cast
|
|
||||||
userEditModel.Id = Guid.NewGuid();
|
|
||||||
|
|
||||||
userEditModel.UserDto = new UserDtoDetail
|
|
||||||
{
|
{
|
||||||
AffiliateId = Guid.NewGuid(),
|
//var result = (UserModelDtoDetail)e.DataItem;
|
||||||
EmailAddress = "",
|
e.EditModel = e.DataItem;
|
||||||
PhoneNumber = ""
|
_logger.Debug($"kfldsfjklkj {((UserModelDtoDetail)e.EditModel).Id.ToString()}");
|
||||||
};
|
}
|
||||||
|
else
|
||||||
userEditModel.ProfileDto = new TIAM.Entities.Profiles.Profile
|
|
||||||
{
|
{
|
||||||
Name = "New user"
|
var userEditModel = (UserModelDtoDetail)e.EditModel; //TODO not valid cast
|
||||||
};
|
userEditModel.Id = Guid.NewGuid();
|
||||||
|
|
||||||
userEditModel.Products = [];
|
userEditModel.UserDto = new UserDtoDetail
|
||||||
userEditModel.ServiceProviders = [];
|
{
|
||||||
userEditModel.UserProductMappings = [];
|
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)
|
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,20 @@
|
||||||
<DxMenuItem NavigateUrl="user/properties" Text="My companies" IconCssClass="menu-icon-home menu-icon" />
|
<DxMenuItem NavigateUrl="user/properties" Text="My companies" IconCssClass="menu-icon-home menu-icon" />
|
||||||
<DxMenuItem NavigateUrl="user/media" Text="Media" IconCssClass="menu-icon-home menu-icon" />
|
<DxMenuItem NavigateUrl="user/media" Text="Media" IconCssClass="menu-icon-home menu-icon" />
|
||||||
<DxMenuItem NavigateUrl="user/messages" Text="Media" IconCssClass="menu-icon-home menu-icon" />
|
<DxMenuItem NavigateUrl="user/messages" Text="Media" IconCssClass="menu-icon-home menu-icon" />
|
||||||
|
|
||||||
|
<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" />
|
||||||
|
}
|
||||||
|
|
||||||
|
<DxMenuItem NavigateUrl="sysadmin/users" Text="Users" />
|
||||||
|
</Items>
|
||||||
|
</DxMenuItem>
|
||||||
|
|
||||||
<DxMenuItem Text="SysAdmin" Visible="@IsSysAdmin" IconCssClass="menu-icon-products menu-icon">
|
<DxMenuItem Text="SysAdmin" Visible="@IsSysAdmin" IconCssClass="menu-icon-products menu-icon">
|
||||||
<Items>
|
<Items>
|
||||||
<DxMenuItem NavigateUrl="user/sysadmin" Text="Dashboard" />
|
<DxMenuItem NavigateUrl="user/sysadmin" Text="Dashboard" />
|
||||||
|
|
|
||||||
|
|
@ -71,10 +71,12 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Pages\User\Guides\" />
|
<Folder Include="Pages\User\Guides\" />
|
||||||
<Folder Include="Pages\User\Drivers\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Content Update="Pages\User\Drivers\DriverManageCars.razor">
|
||||||
|
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||||
|
</Content>
|
||||||
<Content Update="Pages\User\SysAdmins\AddressDetailGridComponent.razor">
|
<Content Update="Pages\User\SysAdmins\AddressDetailGridComponent.razor">
|
||||||
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
|
||||||
|
|
@ -14,5 +14,7 @@ namespace TIAMWebApp.Client.Services
|
||||||
public bool IsDriver { get; set; } = false;
|
public bool IsDriver { get; set; } = false;
|
||||||
public bool IsDevAdmin { get; set; } = false;
|
public bool IsDevAdmin { get; set; } = false;
|
||||||
public bool IsSysAdmin { get; set; } = false;
|
public bool IsSysAdmin { get; set; } = false;
|
||||||
|
|
||||||
|
public Guid DriverPersmissionId { get; set; } = Guid.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,10 @@ namespace TIAMWebApp.Shared.Application.Interfaces
|
||||||
public UserSessionModel? User { get; set; }
|
public UserSessionModel? User { get; set; }
|
||||||
public IPAddress? IPAddress { get; set; }
|
public IPAddress? IPAddress { get; set; }
|
||||||
public bool IsAuthenticated { get; set; }
|
public bool IsAuthenticated { get; set; }
|
||||||
|
|
||||||
public bool HasCompany { get; set; }
|
public bool HasCompany { get; set; }
|
||||||
public bool IsDriver { get; set; }
|
public bool IsDriver { get; set; }
|
||||||
|
|
||||||
public bool IsDevAdmin { get; set; }
|
public bool IsDevAdmin { get; set; }
|
||||||
|
|
||||||
public bool IsSysAdmin { get; set; }
|
public bool IsSysAdmin { get; set; }
|
||||||
|
public Guid DriverPersmissionId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue