TourIAm/TIAMSharedUI/Pages/Index.razor

147 lines
4.9 KiB
Plaintext

@page "/"
@using AyCode.Interfaces.StorageHandlers;
@using Newtonsoft.Json;
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Models.ClientSide;
@using AyCode.Blazor.Components;
@using TIAMWebApp.Shared.Application.Models;
@using TIAMWebApp.Shared.Application.Utility;
@using System.IdentityModel.Tokens.Jwt;
@inject NavigationManager NavManager
@inject IUserDataService UserDataService;
@inject IJSRuntime jsRuntime;
@inject ISecureStorageHandler SecureStorageHandler
@inject ISessionService sessionService;
@using TIAMSharedUI.Shared
<PageTitle>Index</PageTitle>
<HeroSlider></HeroSlider>
<div class="container-fluid" style="align-content: center;">
<div class="text-center">
<h1>Welcome</h1>
<h2>Please select!</h2>
</div>
<div class="row">
<NavLink class="nav-link col-md-6 col-lg-4 col-12" href="transfer">
<div class="card my-3 my-card text-white">
<img class="card-img" src="_content/TIAMSharedUI/images/m_transfer.jpg" alt="Card image">
<div class="card-img-overlay">
<h3 class="card-title">Transfer</h3>
<p class="card-text">Do you need a lift? Book a transfer now!</p>
</div>
</div>
</NavLink>
<NavLink class="nav-link col-md-6 col-lg-4 col-12" href="tours">
<div class="card my-3 my-card text-white">
<img class="card-img" src="_content/TIAMSharedUI/images/m_tour.jpg" alt="Card image">
<div class="card-img-overlay">
<h3 class="card-title">Tours</h3>
<p class="card-text">Are you curious about the wonderful sights of Budapest or Hungary? Book a guided tour now!</p>
</div>
</div>
</NavLink>
<NavLink class="nav-link col-md-6 col-lg-4 col-12" href="clubcards">
<div class="card my-3 my-card text-white">
<img class="card-img" src="_content/TIAMSharedUI/images/m_restaurant.jpg" alt="Card image">
<div class="card-img-overlay">
<h3 class="card-title">Clubcards</h3>
<p class="card-text">Join the club, and enjoy great offers during your stay!</p>
</div>
</div>
</NavLink>
</div>
</div>
@code {
bool isUserLoggedIn;
int userType = 0;
int currentUserRole = 249;
public UserSessionModel MyUser;
//add a new dictionary for the role types
protected async override Task OnInitializedAsync()
{
//old
var logToBrowserConsole = new LogToBrowserConsole(jsRuntime);
//wait for 5 seconds
//await Task.Delay(5000);
string userDetailsStr = await SecureStorageHandler.GetFromSecureStorageAsync(nameof(Setting.UserBasicDetails));
logToBrowserConsole.LogToBC(userDetailsStr);
if (!string.IsNullOrWhiteSpace(userDetailsStr))
{
var userBasicDetail = JsonConvert.DeserializeObject<UserBasicDetails>(userDetailsStr);
var handler = new JwtSecurityTokenHandler();
var jsontoken = handler.ReadToken(userBasicDetail?.AccessToken) as JwtSecurityToken;
if (userBasicDetail != null)
Setting.UserBasicDetails = userBasicDetail;
if (jsontoken?.ValidTo < DateTime.UtcNow)
{
logToBrowserConsole.LogToBC("Token needs to be refreshed");
bool isTokenRefreshed = await UserDataService.RefreshToken();
if (isTokenRefreshed)
{
logToBrowserConsole.LogToBC("Token refreshed");
var myId = Guid.Parse(jsontoken.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.NameId).Value);
//UserDataService.User.Email = jsontoken.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.Email).Value;
MyUser = await UserDataService.IsLoggedInAsync(myId);
logToBrowserConsole.LogToBC(MyUser.UserId.ToString());
}
else
{
logToBrowserConsole.LogToBC("Couldn't refresh token");
}
}
else
{
logToBrowserConsole.LogToBC("Valid token found");
var myId = Guid.Parse(jsontoken.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.NameId).Value);
logToBrowserConsole.LogToBC(myId.ToString());
//UserDataService.User.Email = jsontoken.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.Email).Value;
MyUser = await UserDataService.IsLoggedInAsync(myId);
logToBrowserConsole.LogToBC(MyUser.UserId.ToString());
sessionService.User = MyUser;
logToBrowserConsole.LogToBC($"{sessionService.User.UserId.ToString()}, {sessionService.User.Email}.");
}
}
else
{
logToBrowserConsole.LogToBC("No token stored yet");
}
}
}