TourIAm/TIAMSharedUI/Shared/Users/AdminNavMenu.razor

271 lines
10 KiB
Plaintext

@using AyCode.Services.Loggers
@using Microsoft.AspNetCore.Components.Authorization
@using Newtonsoft.Json
@using TIAM.Core.Loggers
@using TIAMWebApp.Shared.Application.Interfaces
@using AyCode.Interfaces.StorageHandlers;
@using TIAMWebApp.Shared.Application.Utility
@inject ISecureStorageHandler SecureStorageHandler
@inject ISessionService SessionService
@inject IUserDataService UserDataService
@inject AuthenticationStateProvider AuthStateProvider
@inject NavigationManager NavigationManager
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
<div class="w-100" style="height:40px; position:fixed;">
<DxMenu Title="Tour I Am" ItemsPosition="ItemPosition.End" CollapseItemsToHamburgerMenu="true"
Orientation="Orientation"
DisplayMode="DisplayMode">
<Items>
<DxMenuItem NavigateUrl="/" Text="Home" 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/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" />
@{
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" />
</Items>
</DxMenuItem>
<DxMenuItem Text="SysAdmin" Visible="@IsSysAdmin" IconCssClass="menu-icon-products menu-icon">
<Items>
<DxMenuItem NavigateUrl="user/sysadmin" Text="Dashboard" />
<DxMenuItem NavigateUrl="sysadmin/transfers" Text="Transfers" />
<DxMenuItem NavigateUrl="sysadmin/destinations" Text="Destinations" />
<DxMenuItem NavigateUrl="sysadmin/companies" Text="Companies" />
<DxMenuItem NavigateUrl="sysadmin/prices" Text="Partner prices" />
<DxMenuItem NavigateUrl="sysadmin/products" Text="Services" />
<DxMenuItem NavigateUrl="sysadmin/drivers" Text="Drivers" />
<DxMenuItem NavigateUrl="sysadmin/cars" Text="Cars" />
<DxMenuItem NavigateUrl="sysadmin/userproductmappings" Text="Permissions" />
<DxMenuItem NavigateUrl="sysadmin/users" Text="Users" />
</Items>
</DxMenuItem>
<DxMenuItem Text="DevAdmin" Visible="@IsDevAdmin" IconCssClass="menu-icon-products menu-icon">
<Items>
<DxMenuItem NavigateUrl="sysadmin/logs" Text="Logs" />
</Items>
</DxMenuItem>
<DxMenuItem Text="HotelAdmin" IconCssClass="menu-icon-support menu-icon">
<Items>
<DxMenuItem NavigateUrl="user/hoteladmin" Text="Dashboard" />
<DxMenuItem NavigateUrl="user/createAndManageTransfer" Text="Transfers" />
<DxMenuItem NavigateUrl="user/serviceprovider/5453-a87f77787d-khj899" Text="Manage hotel" />
</Items>
</DxMenuItem>
</Items>
</DxMenu>
</div>
@* <div class="top-row ps-3 navbar navbar-light">
<div class="container-fluid">
<a class="navbar-brand my-navbar-brand" href=""></a>
<button title="Navigation menu" class="navbar-toggler my-navbar-toggler" @onclick="ToggleNavMenu">
<img src="_content/TIAMSharedUI/images/navbar-toggler.png" width="40" />
</button>
</div>
</div>
<div class="@NavMenuCssClass nav-scrollable" @onclick="ToggleNavMenu">
<div style="display: flex; align-content: center; justify-content:center" class="my-navbar-hero">
<a class="navbar-brand my-navbar-brand" href=""><img src="_content/TIAMSharedUI/images/logo_wide.png" alt="TourIam Logo" title="TourIAm Logo" /></a>
</div>
<nav class="flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="">
Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/properties">
My companies
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/products">
Services
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/media">
Media
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" @onclick="()=>expandSysAdminNav = !expandSysAdminNav">
<span class="oi oi-list-rich" aria-hidden="true"></span> System Admin
</NavLink>
</div>
@if (expandSysAdminNav)
{
<hr />
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/sysadmin">
Dashboard
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/transfers">
Transfers
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/companies">
Partners
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/users">
Users
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/destinations">
Destinations
</NavLink>
</div>
<hr />
}
<div class="nav-item px-3">
<NavLink class="nav-link" @onclick="()=>expandHotelAdminNav = !expandHotelAdminNav">
<span class="oi oi-list-rich" aria-hidden="true"></span> Hotel Admin
</NavLink>
</div>
@if (expandHotelAdminNav)
{
<hr />
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/hoteladmin">
Hotel Dashboard
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/createAndManageTransfer">
Transfer
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/serviceprovider/5453-a87f77787d-khj899">
Manage
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="serviceprovider">
Public profile
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="counter">
My earnings
</NavLink>
</div>
<hr />
}
<div class="nav-item px-3">
<NavLink class="nav-link" href="user/profile">
Profile
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="#" @onclick="SignOut">
Signout
</NavLink>
</div>
</nav>
</div> *@
@code {
private bool collapseNavMenu = true;
private bool expandSysAdminNav = false;
private bool expandHotelAdminNav = false;
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
private bool IsDevAdmin;
private bool IsSysAdmin;
private bool IsDriver;
private ILogger _logger;
MenuDisplayMode DisplayMode { get; set; } = MenuDisplayMode.Auto;
Orientation Orientation { get; set; } = Orientation.Horizontal;
protected override void OnInitialized()
{
_logger = new LoggerClient<AdminNavMenu>(LogWriters.ToArray());
_logger.Debug($"UserId: {SessionService.User.UserModelDto.Id}");
IsDevAdmin = SessionService.IsDevAdmin;
_logger.Debug($"UserId: {SessionService.IsDevAdmin}");
IsSysAdmin = SessionService.IsSysAdmin;
_logger.Debug($"UserId: {SessionService.IsSysAdmin}");
IsDriver = SessionService.IsDriver;
_logger.Debug($"UserId: {SessionService.IsDriver}");
base.OnInitialized();
}
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
private void NavigateBack()
{
}
private async Task SignOut()
{
bool serverResult;
string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
if (!string.IsNullOrEmpty(userDetailsStr))
{
var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
serverResult = await UserDataService.Logout(userBasicDetail.RefreshToken);
}
await SecureStorageHandler.ClearAllSecureStorageAsync();
var result = await AuthStateProvider.GetAuthenticationStateAsync();
SessionService.User = null;
SessionService.IsAuthenticated = false;
NavigationManager.NavigateTo("/");
}
}