This commit is contained in:
jozsef.b@aycode.com 2023-11-08 09:49:27 +01:00
commit 7faa9f266b
37 changed files with 1517 additions and 632 deletions

View File

@ -8,4 +8,4 @@ build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = TIAMDLL.Common
build_property.ProjectDir = C:\MANGOWEB\TourIAmProject\TIAMDLL.Common\
build_property.ProjectDir = C:\Users\Ádám\Source\Repos\TourIAm\TIAMDLL.Common\

View File

@ -0,0 +1 @@
0aa444ae556d2df6dc138f149eb702065af2ab69

View File

@ -0,0 +1,106 @@
@page "/hotel"
@using TIAMSharedUI.Shared
@inject NavigationManager navManager
<div class="container-fluid">
<section class="py-5">
<div class="row gx-4 gx-lg-5 align-items-center">
<div class="col-md-6">
<!--Slider here-->
<style>
.owl-stage-outer {
border-radius: 15px;
}
</style>
<div style="position: relative; width:100%; height: 100%">
<div style="position:absolute; top: 10px; left: 10px; z-index:999; ">
<h3 style="backdrop-filter: blur(5px); border-radius: 5px; color: white; padding: 3px; background-color: rgba(0,0,0,.2);">
10% DISCOUNT COUPON
</h3>
</div>
<div id="owl-restaurant" class="owl-carousel owl-theme">
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_1.jpg" class="my-auto" alt="The Last of us">
</div>
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_2.jpg" class="my-auto" alt="GTA V">
</div>
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_3.jpg" class="my-auto" alt="Mirror Edge">
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="small mb-1">Authentic</div>
<h1 class="display-5 fw-bolder">Mandragóra Restaurant</h1>
<div class="fs-5 mb-5">
<!--span class="text-decoration-line-through">$45.00</span-->
<span>$10.00</span>
</div>
<p class="lead">A nice Hungarian restaurant that offers a delightful culinary journey with traditional dishes like goulash, stuffed peppers, and chimney cake, in a cozy, welcoming atmosphere.</p>
<div class="d-flex">
<button class="btn btn-primary" @onclick="next">Book a transfer now</button>
</div>
</div>
<div class="col-md-12">
<div class="embed-responsive">
<h3> Location: </h3>
<p>Kacsa u. 13, Budapest</p>
@{
var aKey = "AIzaSyAyEYJkpt2KDa3SJ34UNWO4-dNOJKmUtF8";
var gUrl = "https://www.google.com/maps/embed/v1/place?key=" + aKey + "&q=Space+Needle,Budapest+HU";
}
<iframe class="embed-responsive-item"
loading="lazy"
width="100%"
style="height: 30vh; border-radius: 15px;"
referrerpolicy="no-referrer-when-downgrade"
src=@gUrl>
</iframe>
</div>
</div>
</div>
</section>
<!-- Related items section-->
<FeaturedItems ItemType="1"></FeaturedItems>
</div>
<script>
$(document).ready(function () {
$("#owl-restaurant").owlCarousel({
navigation: true, // Show next and prev buttons
slideSpeed: 300,
paginationSpeed: 400,
items: 1,
itemsDesktop: false,
itemsDesktopSmall: false,
itemsTablet: false,
itemsMobile: false
});
});
</script>
@code {
public void next() => navManager.NavigateTo("/transfer");
}

View File

@ -3,7 +3,7 @@
<PageTitle>Index</PageTitle>
<TopRow></TopRow>
<HeroSlider></HeroSlider>
<div class="container-fluid" style="align-content: center;">

View File

@ -1,5 +1,8 @@
@page "/login"
@using TIAMWebApp.Shared.Application.Interfaces;
@using TIAMWebApp.Shared.Application.Models;
@inject NavigationManager navManager
@inject IUserDataService userDataService
<PageTitle>Login</PageTitle>
<div class="wrapper">
@ -19,26 +22,38 @@
<input type="password" name="password" id="pwd" placeholder="Password">
</div>
<div class="form-field d-flex align-items-center">
<select class="custom-select" title="Destination is required ">
<option value="Select" selected disabled="disabled">(Choose Destination)</option>
<option value="0" selected>Option1</option>
<option value="1" selected>Option2</option>
<option value="2" selected>Option3</option>
<select style="width:100%" @bind="CurrentValue" class="custom-select" title="Destination is required ">
<option value="0" selected disabled="disabled">(Choose account type)</option>
<option value="1" selected>Hotel</option>
<option value="2" selected>Transfer</option>
<option value="3" selected>Guide</option>
<option value="4" selected>Admin</option>
<option value="5" selected>User</option>
<option value="6" selected>Driver</option>
</select>
</div>
<!--button class="btn btn-primary mt-3" @onclick="next">Login</button-->
<a class="btn btn-primary mt-3" @onclick="next">Login</a>
</form>
<p>@isUserLoggedIn</p><p>@CurrentValue</p>
<div class="text-center fs-6">
<a href="#">Forget password?</a> or <a href="register">Sign up</a>
</div>
</div>
@code {
public void next()
bool isUserLoggedIn;
int CurrentValue = 0;
public async Task next()
{
var user = await userDataService.IsLoggedInAsync();
user.IsLoggedIn = true;
isUserLoggedIn = user.IsLoggedIn;
user.UserType = (UserType)CurrentValue;
navManager.NavigateTo("home");
}
}

View File

@ -1,3 +1,7 @@
.wrapper{
max-width:400px;
}
select :focus-visible {
border-color: transparent !important;
}

View File

@ -1,38 +1,48 @@
@page "/restaurant"
@using TIAMSharedUI.Shared
@inject NavigationManager navManager
<div class="container-fluid">
<section class="py-5">
<section class="py-5">
<div class="container px-4 px-lg-5 my-5">
<div class="row gx-4 gx-lg-5 align-items-center">
<div class="col-md-6">
<!--Slider here-->
<div style="position: relative; width:100%; height: 100%">
<div style="position:absolute; top: 10px; left: 10px; z-index:999;">
<h3>10% DISCOUNT COUPON</h3>
</div>
<div id="owl-restaurant" class="owl-carousel owl-theme">
<div class="col-md-6 my-3">
<!--Slider here-->
<style>
.owl-stage-outer {
border-radius: 15px;
}
</style>
<div style="position: relative; width:100%; height: 100%">
<div style="position:absolute; top: 10px; left: 10px; z-index:999; ">
<h3 style="backdrop-filter: blur(5px); border-radius: 5px; color: white; padding: 3px; background-color: rgba(0,0,0,.2);">
10% DISCOUNT COUPON
</h3>
</div>
<div id="owl-restaurant" class="owl-carousel owl-theme">
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_1.jpg" class="my-auto" alt="The Last of us">
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_1.jpg" class="my-auto" alt="The Last of us">
</div>
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_2.jpg" class="my-auto" alt="GTA V">
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_2.jpg" class="my-auto" alt="GTA V">
</div>
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_3.jpg" class="my-auto" alt="Mirror Edge">
<div class="item d-flex align-items-center">
<img src="_content/TIAMSharedUI/images/restaurant_3.jpg" class="my-auto" alt="Mirror Edge">
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="col-md-6 my-3">
<div class="small mb-1">Authentic</div>
<h1 class="display-5 fw-bolder">Mandragóra Restaurant</h1>
<div class="fs-5 mb-5">
@ -41,19 +51,40 @@
</div>
<p class="lead">A nice Hungarian restaurant that offers a delightful culinary journey with traditional dishes like goulash, stuffed peppers, and chimney cake, in a cozy, welcoming atmosphere.</p>
<div class="d-flex">
<input class="form-control text-center me-3" id="inputQuantity" type="num" value="1" style="max-width: 3rem" />
<button class="btn btn-primary flex-shrink-0" type="button">
<i class="bi-cart-fill me-1"></i>
Add to cart
</button>
<button class="btn btn-primary" @onclick="next">Book a transfer now</button>
</div>
</div>
<div class="col-md-6 my-3">
<h3> Offer: </h3>
<p>Traditional Hungarian cuisine</p>
<embed class="bg-light" src="https://newyorkrestaurant.co.za/new-york-menu.pdf" style="width:100%; height:45vh;"/>
</div>
<div class="col-md-6 my-3">
<h3> Location: </h3>
<p>Kacsa u. 13, Budapest</p>
<div class="embed-responsive">
@{
var aKey = "AIzaSyAyEYJkpt2KDa3SJ34UNWO4-dNOJKmUtF8";
var gUrl = "https://www.google.com/maps/embed/v1/place?key=" + aKey + "&q=Space+Needle,Kacsa+utca+13,Budapest+HU";
}
<iframe class="embed-responsive-item"
loading="lazy"
width="100%"
style="height: 45vh; border-radius: 15px;"
referrerpolicy="no-referrer-when-downgrade"
src=@gUrl>
</iframe>
</div>
</div>
</div>
</div>
</section>
<!-- Related items section-->
<FeaturedItems ItemType="1"></FeaturedItems>
</section>
<!-- Related items section-->
<FeaturedItems ItemType="2"></FeaturedItems>
</div>
<script>
$(document).ready(function () {
@ -76,5 +107,8 @@
</script>
@code {
public void next() => navManager.NavigateTo("/transfer");
}

View File

@ -0,0 +1,80 @@
@page "/tourferdetails"
<PageTitle>Tour order details</PageTitle>
<div class="text-center m-5">
<h1>Transfer details</h1>
</div>
<section>
<div class="container py-1">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col-md-10 col-lg-8 col-xl-6">
<div class="card card-admin card-stepper" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">ID: 1222528743</span>
<p class="text-muted">12,March 2019</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All orders</a> </h6>
</div>
</div>
</div>
<div class="card-body p-4">
<div class="d-flex flex-row mb-4 pb-2">
<div class="flex-fill">
<h5 class="bold">Passenger: +1 123 12345678</h5>
<p class="text-muted"> Budapest, Dózsa György út 35, 1146</p>
<h4>27th November, 2023</h4>
<h4 class="mb-3 text-muted"> 10:00 AM</h4>
<hr />
<h3>POX-382</h3>
<p class="text-muted"> Silver, Toyota, Prius</p>
<hr />
<p class="text-muted">Status on: <span class="text-body">11:30pm, Today</span></p>
</div>
<div>
<!--img class="align-self-center img-fluid"
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
</div>
</div>
<ul id="progressbar-1" class="mx-0 mt-0 mb-5 px-0 pt-0 pb-4">
<li class="step0 active" id="step1">
<span style="margin-left: 22px; margin-top: 12px;">PLACED</span>
</li>
<li class="step0 active text-center" id="step2"><span>WAITING FOR PICK UP</span></li>
<li class="step0 text-muted text-end" id="step3">
<span style="margin-right: 22px;">FINISHED</span>
</li>
</ul>
<div class="d-flex flex-row mb-4 pb-2">
<h4> $ 35 <span class="small text-muted"> via (COD) </span></h4>
</div>
</div>
<div class="card-footer p-4">
<div class="d-flex justify-content-between">
<h5 class="fw-normal mb-0"><a href="#!">Contact driver</a></h5>
<div class="border-start h-100"></div>
<h5 class="fw-normal mb-0"><a href="#!">Cancel</a></h5>
<div class="border-start h-100"></div>
<h5 class="fw-normal mb-0"><a href="#!">Modify</a></h5>
<div class="border-start h-100"></div>
<h5 class="fw-normal mb-0"><a href="#!">Pay</a></h5>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
@code {
}

View File

@ -1,26 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components;
using TIAM.Entities.TransferDestinations;
using TIAMWebApp.Shared.Application.Models;
namespace EmployeePortal.Client.Components
{
public partial class Transfer : ComponentBase
{
public string DestinationId
{
get;
set;
}
protected TransferDestination TDestinations
{
get;
set;
}
}
}

View File

@ -1,8 +1,6 @@
@page "/transfer"
@using TIAMSharedUI.Shared
@using TIAMWebApp.Shared.Application.Interfaces
@inject ITransferDataService transferDataService
@inject NavigationManager navManager
<PageTitle>Transfer</PageTitle>
<div class="text-center m-5">
@ -11,15 +9,17 @@
</div>
<SliderItemSelector @ref="slider" OnSliderChanged=@DisplaySlideData></SliderItemSelector>
<SliderItemSelector @ref="slider" OnSliderChanged=@DisplaySlideData TextChanged="@changeDest"></SliderItemSelector>
<div class="wrapper">
<div class="text-center name">
@message
</div>
<form class="p-3 mt-2">
<div class="form-field d-flex align-items-center">
<input type="tel" name="phone" id="phone" placeholder="Pick up address">
<input value=@message2 type="text" name="DestinationAddress" id="destinationAddress" placeholder="Destination" disabled>
</div>
<div class="form-field d-flex align-items-center">
<input type="tel" name="phone" id="phone" placeholder="Phone number">
</div>
<div class="form-field d-flex align-items-center">
<input type="text" name="address" id="address" placeholder="Pick up address">
@ -43,11 +43,17 @@
@code {
SliderItemSelector slider;
public string message;
public string message;
public string message2;
public List<string> destinations = new List<string>() {"Liszt Ferenc Airport", "Buda Castle", "Chain Bridge"};
void DisplaySlideData()
{
message = " Target destination is " + slider.SliderElementId.ToString();
if(slider.SliderElementId != 0)
{
message2 = destinations[slider.SliderElementId-1];
}
}
/*protected override void OnAfterRender(bool isFirst)
@ -55,16 +61,13 @@
message = " Target destination is " + slider.SliderElementId.ToString();
}*/
public void next()
void changeDest(string dest)
{
message2 = dest;
}
protected override async Task OnInitializedAsync()
{
var suppliers = await transferDataService.GetDestinationsAsync();
Console.WriteLine(string.Join("; ", suppliers.Select(x => x.Name)));
}
public void next() => navManager.NavigateTo("/transfer2");
}

View File

@ -175,8 +175,8 @@
height: 40px;
/*background-color: #03A9F4;*/
color: #fff;
border-radius: 25px;
box-shadow: 3px 3px 3px #b1b1b1, -3px -3px 3px #fff;
border-radius: 15px;
/*box-shadow: 3px 3px 3px #b1b1b1, -3px -3px 3px #fff;*/
letter-spacing: 1.3px;
}

View File

@ -0,0 +1,72 @@
@page "/transfer2"
<PageTitle>Transferdetails</PageTitle>
@inject NavigationManager navManager
<div class="text-center m-5">
<h1>Transfer summary</h1>
<h2 style="font-size:small">Please review your transfer!</h2>
</div>
<section>
<div class="container py-1">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col-md-10 col-lg-8 col-xl-6">
<div class="card card-admin card-stepper" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<h4>27th November, 2023, 10:00 AM</h4>
</div>
</div>
</div>
<div class="card-body p-4">
<div class="d-flex flex-row mb-4 pb-2">
<div class="flex-fill">
<p class="text-muted"> Passenger info</p>
<h5 class="bold"> +1 123 12345678</h5>
<hr/>
<p class="text-muted">Destination</p>
<h5 class="bold">Liszt Ferenc Airport</h5>
<hr />
<p class="text-muted"> Pick up address</p>
<h5> Budapest, Dózsa György út 35, 1146</h5>
<hr />
<h5>3 persons</h5>
<p class="text-muted"> Silver, Toyota, Prius</p>
</div>
<div>
<!--img class="align-self-center img-fluid"
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
</div>
</div>
<div class="d-flex flex-row mb-4 pb-2">
<h4> $ 35 <span class="small text-muted"> via (COD) </span></h4>
</div>
</div>
<div class="card-footer p-4">
<div class="d-flex justify-content-between">
<a class="btn btn-danger" href="#!">Cancel</a>
<div class="border-start h-100"></div>
<a class="btn btn-warning" @onclick="previous">Modify</a>
<div class="border-start h-100"></div>
<a class="btn btn-success" href="#!">Finalize</a>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
@code {
public void next() => navManager.NavigateTo("/transfer");
public void previous() => navManager.NavigateTo("/transfer3");
}

View File

@ -4,36 +4,35 @@
<div class="text-center m-5">
<h1>Transfer details</h1>
<h2 style="font-size:small">Swipe to select your destination!</h2>
</div>
<section>
<div class="container py-1">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col-md-10 col-lg-8 col-xl-6">
<div class="card card-stepper" style="border-radius: 16px;">
<div class="card-header p-4">
<div class="card card-admin card-stepper" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<p class="text-muted mb-2"> Order ID <span class="fw-bold text-body">1222528743</span></p>
<p class="text-muted mb-0"> Place On <span class="fw-bold text-body">12,March 2019</span> </p>
<span class="fw-bold text-body">ID: 1222528743</span>
<p class="text-muted">12,March 2019</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">View Details</a> </h6>
<h6 class="mb-0"> <a href="#">All orders</a> </h6>
</div>
</div>
</div>
<div class="card-body p-4">
<div class="d-flex flex-row mb-4 pb-2">
<div class="flex-fill">
<h5 class="bold">Museum of Ethnography</h5>
<h5 class="bold">Passenger: +1 123 12345678</h5>
<p class="text-muted"> Budapest, Dózsa György út 35, 1146</p>
<h4>27th November, 2023</h4>
<h4 class="mb-3 text-muted"> 10:00 AM</h4>
<hr class="solid mb-3">
<hr />
<h3>POX-382</h3>
<p class="text-muted"> Silver, Toyota, Prius</p>
<hr class="solid mb-3">
<hr />
<p class="text-muted">Status on: <span class="text-body">11:30pm, Today</span></p>
</div>
<div>

View File

@ -5,6 +5,7 @@
@layout AdminLayout
@inject IPopulationStructureDataProvider DataProvider
@inject ISupplierService SupplierService
@inject IUserDataService UserDataService
<PageTitle>Transfer</PageTitle>
<div class="text-center m-5">
@ -13,520 +14,573 @@
</div>
<div class="container-fluid">
<!--App admin-->
<div class="row py-3">
<div class=" col-12 col-xl-3 col-lg-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Transfers</span>
<p class="text-muted mb-0">Summary</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<h5>New</h5>
<p>12</p>
<h5>Scheduled</h5>
<p>182</p>
<h5>Finished</h5>
<p>15665</p>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Manage transgfers</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3 col-lg-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Service providers</span>
<p class="text-muted mb-0">Summary</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<h5>Guides</h5>
<p>32</p>
<h5>Hotels</h5>
<p>82</p>
<h5>Restaurants</h5>
<p>15</p>
<h5>Transfer company</h5>
<p>1</p>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Manage service providers</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3 col-lg-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Finances</span>
<p class="text-muted mb-0">Summary</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<h5>Income</h5>
<p>$32 456</p>
<h5>Comission to be paid</h5>
<p>$5 345</p>
<h5>Service fees to be paid</h5>
<p>$23 871</p>
<h5>Revenue</h5>
<p>$3 240</p>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Manage service providers</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3 col-lg-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Affiliates</span>
<p class="text-muted mb-0">Summary</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<h5>Top affiliate</h5>
<p>Hotel Bambara</p>
<h5>Comission Earned</h5>
<p>$1 315</p>
<hr />
<h5>Top referred item</h5>
<p>Buda castle tour</p>
<hr />
<h5>Level 1 affiliates</h5>
<p>132</p>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Manage affiliates</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row py-3">
<div class="col-12 col-xl-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Hotel details</span>
</div>
<div>
<h6 class="mb-0"> <a href="#">All settings</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<DxGrid Data="@AffiliateData">
<Columns>
<DxGridDataColumn FieldName="AffiliateId" Width="5%" />
<DxGridDataColumn FieldName="IncomeThisMonth" Width="15%" />
<DxGridDataColumn FieldName="IncomeAlltime" Width="15%" />
<DxGridDataColumn FieldName="CompanyName" />
<DxGridDataColumn FieldName="Status" Width="10%" />
</Columns>
</DxGrid>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class="col-12 col-xl-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Population Data</span>
<p class="text-muted mb-0">12,March 2020 </p>
</div>
<div>
<h6 class="mb-0"> <a href="#">View source</a> </h6>
</div>
</div>
</div>
<div class="card-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<DxChart T="PopulationAgeStructureItem"
Data="@ChartsData"
Width="100%" Height="300px">
<DxChartTitle Text="Population: Age Structure">
<DxChartSubTitle Text="Data Estimate for 2020" />
</DxChartTitle>
<DxChartBarSeries Name="0-14 years"
T="PopulationAgeStructureItem"
TArgument="string"
TValue="int"
ArgumentField="pasi => pasi.Country"
ValueField="pasi => pasi.Population"
SummaryMethod="Enumerable.Sum"
Filter='pasi => pasi.AgeGroup == "0-14 years"' />
<DxChartBarSeries Name="15-64 years"
T="PopulationAgeStructureItem"
TArgument="string"
TValue="int"
ArgumentField="pasi => pasi.Country"
ValueField="pasi => pasi.Population"
SummaryMethod="Enumerable.Sum"
Filter='pasi => pasi.AgeGroup == "15-64 years"' />
<DxChartBarSeries Name="65 years and older"
T="PopulationAgeStructureItem"
TArgument="string"
TValue="int"
ArgumentField="pasi => pasi.Country"
ValueField="pasi => pasi.Population"
SummaryMethod="Enumerable.Sum"
Filter='pasi => pasi.AgeGroup == "65 years and older"' />
<DxChartLegend Position="RelativePosition.Outside"
HorizontalAlignment="HorizontalAlignment.Center"
VerticalAlignment="VerticalEdge.Bottom" />
<DxChartTooltip Enabled="true"
Position="RelativePosition.Outside">
<div style="margin: 0.75rem">
<div class="fw-bold">@context.Point.Argument</div>
<div>Age Group: @context.Point.SeriesName</div>
<div>Population: @($"{context.Point.Value:N0}")</div>
</div>
</DxChartTooltip>
</DxChart>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
</div>
<!-- App admin end-->
<!-- Hotel admin-->
<div class="row py-3">
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Hotel details</span>
</div>
<div>
<h6 class="mb-0"> <a href="#">All settings</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<div class="flex-fill">
<h5 class="bold">Your QR code</h5>
<p class="text-muted"> Use this in printed material, to gain referrals</p>
</div>
<div>
<img class="align-self-center img-fluid"
src="_content/TIAMSharedUI/images/myqr.png" width="128">
</div>
</div>
<div class="d-flex flex-row mb-4 pb-2">
<h4> Some <span class="small text-muted"> conclusion </span></h4>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">My orders</span>
</div>
<div>
<h6 class="mb-0"> <a href="#">All settings</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<DxGrid Data="@OrderData">
<Columns>
<DxGridDataColumn FieldName="Date" DisplayFormat="D" MinWidth="100" />
<DxGridDataColumn FieldName="Income" Width="15%" />
<DxGridDataColumn FieldName="TransactionId" Width="15%" />
<DxGridDataColumn FieldName="Status" Width="10%" />
</Columns>
</DxGrid>
</div>
<div class="d-flex flex-row mb-4 pb-2">
<h4> Some <span class="small text-muted"> conclusion </span></h4>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Hotel details</span>
</div>
<div>
<h6 class="mb-0"> <a href="#">All settings</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Panel title</span>
<p class="text-muted mb-0">Subtitle</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<div class="flex-fill">
<h5 class="bold">Some info</h5>
<p class="text-muted"> Budapest, Dózsa György út 35, 1146</p>
</div>
<div>
<!--img class="align-self-center img-fluid"
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
</div>
</div>
<ul id="progressbar-1" class="mx-0 mt-0 mb-5 px-0 pt-0 pb-4">
<li class="step0 active" id="step1">
<span style="margin-left: 22px; margin-top: 12px;">PLACED</span>
</li>
<li class="step0 active text-center" id="step2"><span>WAITING FOR PICK UP</span></li>
<li class="step0 text-muted text-end" id="step3">
<span style="margin-right: 22px;">FINISHED</span>
</li>
</ul>
<div class="d-flex flex-row mb-4 pb-2">
<h4> Some <span class="small text-muted"> conclusion </span></h4>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
</div>
<!-- Hotel admin end-->
@{
if(userType == 4)
{
<!--App admin-->
<div class="row py-3">
<div class=" col-12 col-xl-3 col-lg-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Transfers</span>
<p class="text-muted mb-0">Summary</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<h5>New</h5>
<p>12</p>
<h5>Scheduled</h5>
<p>182</p>
<h5>Finished</h5>
<p>15665</p>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Manage transgfers</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3 col-lg-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Service providers</span>
<p class="text-muted mb-0">Summary</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<h5>Guides</h5>
<p>32</p>
<h5>Hotels</h5>
<p>82</p>
<h5>Restaurants</h5>
<p>15</p>
<h5>Transfer company</h5>
<p>1</p>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Manage service providers</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3 col-lg-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Finances</span>
<p class="text-muted mb-0">Summary</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<h5>Income</h5>
<p>$32 456</p>
<h5>Comission to be paid</h5>
<p>$5 345</p>
<h5>Service fees to be paid</h5>
<p>$23 871</p>
<h5>Revenue</h5>
<p>$3 240</p>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Manage service providers</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3 col-lg-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Affiliates</span>
<p class="text-muted mb-0">Summary</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<h5>Top affiliate</h5>
<p>Hotel Bambara</p>
<h5>Comission Earned</h5>
<p>$1 315</p>
<hr />
<h5>Top referred item</h5>
<p>Buda castle tour</p>
<hr />
<h5>Level 1 affiliates</h5>
<p>132</p>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Manage affiliates</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class="col-12 col-xl-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Hotel details</span>
</div>
<div>
<h6 class="mb-0"> <a href="#">All settings</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<DxGrid Data="@AffiliateData">
<Columns>
<DxGridDataColumn FieldName="AffiliateId" Width="5%" />
<DxGridDataColumn FieldName="IncomeThisMonth" Width="15%" />
<DxGridDataColumn FieldName="IncomeAlltime" Width="15%" />
<DxGridDataColumn FieldName="CompanyName" />
<DxGridDataColumn FieldName="Status" Width="10%" />
</Columns>
</DxGrid>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class="col-12 col-xl-6">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Population Data</span>
<p class="text-muted mb-0">12,March 2020 </p>
</div>
<div>
<h6 class="mb-0"> <a href="#">View source</a> </h6>
</div>
</div>
</div>
<div class="card-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<DxChart T="PopulationAgeStructureItem"
Data="@ChartsData"
Width="100%" Height="300px">
<DxChartTitle Text="Population: Age Structure">
<DxChartSubTitle Text="Data Estimate for 2020" />
</DxChartTitle>
<DxChartBarSeries Name="0-14 years"
T="PopulationAgeStructureItem"
TArgument="string"
TValue="int"
ArgumentField="pasi => pasi.Country"
ValueField="pasi => pasi.Population"
SummaryMethod="Enumerable.Sum"
Filter='pasi => pasi.AgeGroup == "0-14 years"' />
<DxChartBarSeries Name="15-64 years"
T="PopulationAgeStructureItem"
TArgument="string"
TValue="int"
ArgumentField="pasi => pasi.Country"
ValueField="pasi => pasi.Population"
SummaryMethod="Enumerable.Sum"
Filter='pasi => pasi.AgeGroup == "15-64 years"' />
<DxChartBarSeries Name="65 years and older"
T="PopulationAgeStructureItem"
TArgument="string"
TValue="int"
ArgumentField="pasi => pasi.Country"
ValueField="pasi => pasi.Population"
SummaryMethod="Enumerable.Sum"
Filter='pasi => pasi.AgeGroup == "65 years and older"' />
<DxChartLegend Position="RelativePosition.Outside"
HorizontalAlignment="HorizontalAlignment.Center"
VerticalAlignment="VerticalEdge.Bottom" />
<DxChartTooltip Enabled="true"
Position="RelativePosition.Outside">
<div style="margin: 0.75rem">
<div class="fw-bold">@context.Point.Argument</div>
<div>Age Group: @context.Point.SeriesName</div>
<div>Population: @($"{context.Point.Value:N0}")</div>
</div>
</DxChartTooltip>
</DxChart>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Affiliates</span>
<p class="text-muted mb-0">Details</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<style>
.dxbl-grid {
--dxbl-grid-font-family: inherit;
--dxbl-grid-font-size: 0.75rem;
--dxbl-grid-line-height: 1.4285;
--dxbl-grid-min-width: 240px;
--dxbl-grid-bg: #e7e6f7;
--dxbl-grid-color: #58457b;
}
</style>
<DxGrid Data="@Data">
<Columns>
<DxGridDataColumn FieldName="CompanyName" AllowSort="true" />
<DxGridDataColumn FieldName="ContactName" />
<DxGridDataColumn FieldName="ContactTitle" Width="3%" />
<DxGridDataColumn FieldName="Country" Width="10%" />
<DxGridDataColumn FieldName="City" Width="10%" />
<DxGridDataColumn FieldName="Address" />
<DxGridDataColumn FieldName="Phone" Width="10%" />
</Columns>
</DxGrid>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
</div>
<!-- App admin end-->
<!-- Hotel admin-->
}
else if(userType == 1)
{
<div class="row py-3">
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Hotel details</span>
</div>
<div>
<h6 class="mb-0"> <a href="#">All settings</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<div class="flex-fill">
<h5 class="bold">Your QR code</h5>
<p class="text-muted"> Use this in printed material, to gain referrals</p>
</div>
<div>
<img class="align-self-center img-fluid"
src="_content/TIAMSharedUI/images/myqr.png" width="128">
</div>
</div>
<div class="d-flex flex-row mb-4 pb-2">
<h4> Some <span class="small text-muted"> conclusion </span></h4>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">My orders</span>
</div>
<div>
<h6 class="mb-0"> <a href="#">All settings</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<DxGrid Data="@OrderData">
<Columns>
<DxGridDataColumn FieldName="Date" DisplayFormat="D" MinWidth="100">
<CellDisplayTemplate>
<a class="d-block text-left" href="transferdetails">@context.Value</a>
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn FieldName="Income" Width="15%" />
<DxGridDataColumn FieldName="TransactionId" Width="15%" />
<DxGridDataColumn FieldName="Status" Width="10%" />
</Columns>
</DxGrid>
</div>
<div class="d-flex flex-row mb-4 pb-2">
<h4> Some <span class="small text-muted"> conclusion </span></h4>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Hotel details</span>
</div>
<div>
<h6 class="mb-0"> <a href="#">All settings</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Panel title</span>
<p class="text-muted mb-0">Subtitle</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<div class="d-flex flex-row mb-4 pb-2">
<div class="flex-fill">
<h5 class="bold">Some info</h5>
<p class="text-muted"> Budapest, Dózsa György út 35, 1146</p>
</div>
<div>
<!--img class="align-self-center img-fluid"
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
</div>
</div>
<ul id="progressbar-1" class="mx-0 mt-0 mb-5 px-0 pt-0 pb-4">
<li class="step0 active" id="step1">
<span style="margin-left: 22px; margin-top: 12px;">PLACED</span>
</li>
<li class="step0 active text-center" id="step2"><span>WAITING FOR PICK UP</span></li>
<li class="step0 text-muted text-end" id="step3">
<span style="margin-right: 22px;">FINISHED</span>
</li>
</ul>
<div class="d-flex flex-row mb-4 pb-2">
<h4> Some <span class="small text-muted"> conclusion </span></h4>
</div>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
<div class=" col-12">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Affiliates</span>
<p class="text-muted mb-0">Details</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<style>
.dxbl-grid {
--dxbl-grid-font-family: inherit;
--dxbl-grid-font-size: 0.75rem;
--dxbl-grid-line-height: 1.4285;
--dxbl-grid-min-width: 240px;
--dxbl-grid-bg: #e7e6f7;
--dxbl-grid-color: #58457b;
}
</style>
<DxGrid Data="@Data">
<Columns>
<DxGridDataColumn FieldName="CompanyName" AllowSort="true" />
<DxGridDataColumn FieldName="ContactName" />
<DxGridDataColumn FieldName="ContactTitle" Width="3%" />
<DxGridDataColumn FieldName="Country" Width="10%" />
<DxGridDataColumn FieldName="City" Width="10%" />
<DxGridDataColumn FieldName="Address" />
<DxGridDataColumn FieldName="Phone" Width="10%" />
</Columns>
</DxGrid>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
</div>
<!-- Hotel admin end-->
}
}
<!-- Stats admin-->
<div class="row py-3">
<div class=" col-12">
<div class="card card-admin" style="border-radius: 16px;">
<div class="card-header py-2 px-4">
<div class="d-flex justify-content-between align-items-center">
<div>
<span class="fw-bold text-body">Affiliates</span>
<p class="text-muted mb-0">Details</p>
</div>
<div>
<h6 class="mb-0"> <a href="#">All details</a> </h6>
</div>
</div>
</div>
<div class="card-body card-admin-body py-2 px-4">
<style>
.dxbl-grid {
--dxbl-grid-font-family: inherit;
--dxbl-grid-font-size: 0.75rem;
--dxbl-grid-line-height: 1.4285;
--dxbl-grid-min-width: 240px;
--dxbl-grid-bg: #e7e6f7;
--dxbl-grid-color: #58457b;
}
</style>
<DxGrid Data="@Data">
<Columns>
<DxGridDataColumn FieldName="CompanyName" AllowSort="true" />
<DxGridDataColumn FieldName="ContactName" />
<DxGridDataColumn FieldName="ContactTitle" Width="3%"/>
<DxGridDataColumn FieldName="Country" Width="10%" />
<DxGridDataColumn FieldName="City" Width="10%" />
<DxGridDataColumn FieldName="Address" />
<DxGridDataColumn FieldName="Phone" Width="10%" />
</Columns>
</DxGrid>
</div>
<div class="card-footer py-2 px-4">
<div class="d-flex justify-content-between">
<a href="#!">Modify</a>
<div class="border-start h-100"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row py-3">
<div class=" col-12 col-xl-3">
<div class="card card-admin" style="border-radius: 16px;">
@ -549,7 +603,7 @@
</div>
<div>
<!--img class="align-self-center img-fluid"
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
</div>
</div>
@ -599,7 +653,7 @@
</div>
<div>
<!--img class="align-self-center img-fluid"
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
</div>
</div>
@ -649,7 +703,7 @@
</div>
<div>
<!--img class="align-self-center img-fluid"
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
src="https://mdbcdn.b-cdn.net/img/Photos/Horizontal/E-commerce/Products/6.webp" width="250"-->
</div>
</div>
@ -679,7 +733,7 @@
</div>
</div>
<div class=" col-12 col-xl-3">
</div>
</div>
@ -696,10 +750,19 @@
object? Data { get; set; }
bool isUserLoggedIn;
int userType = 0;
protected override async Task OnInitializedAsync()
{
base.OnInitialized();
var user = await UserDataService.IsLoggedInAsync();
isUserLoggedIn = user.IsLoggedIn;
userType = (int)user.UserType;
OrderData = new object[]
{

View File

@ -1,8 +1,12 @@
@inherits LayoutComponentBase
@using TIAMSharedUI.Shared.User
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Models;
@inject NavigationManager NavigationManager
@inject IUserDataService userDataService
<div class="page">
<div class="my-sidebar">
<AdminNavMenu />
</div>
@ -10,7 +14,30 @@
<article class="content">
@{
if (isUserLoggedIn)
{
<TopRow></TopRow>
}
}
@Body
</article>
</main>
</div>
@code {
bool isUserLoggedIn;
int userType = 0;
protected override async Task OnInitializedAsync()
{
var user = await userDataService.IsLoggedInAsync();
isUserLoggedIn = user.IsLoggedIn;
if (!isUserLoggedIn)
{
NavigationManager.NavigateTo("/login");
}
}
}

View File

@ -1,4 +1,7 @@
@inherits LayoutComponentBase
@using TIAMWebApp.Shared.Application.Interfaces
@inject IUserDataService UserDataService;
@inject IJSRuntime jsRuntime
<div class="page">
<div class="my-sidebar">
@ -9,7 +12,47 @@
<article class="content">
@{
if(isUserLoggedIn)
{
<TopRow></TopRow>
}
}
@Body
</article>
</main>
</div>
@code {
bool isUserLoggedIn;
int userType = 0;
int currentUserRole = 249;
//add a new dictionary for the role types
protected override async Task OnInitializedAsync()
{
var user = await UserDataService.IsLoggedInAsync();
isUserLoggedIn = user.IsLoggedIn;
}
protected override void OnAfterRender(bool isFirst)
{
LogToBrowserConsole("0 ");
}
public void LogToBrowserConsole(string message)
{
jsRuntime.InvokeVoidAsync("console.log", message);
}
}

View File

@ -44,7 +44,7 @@
.nav-item ::deep a {
color: #58457b;
border-radius: 25px;
border-radius: 15px;
height: 3rem;
display: flex;
align-items: center;

View File

@ -1,5 +1,41 @@

<div id="owl-selector" class="owl-carousel owl-theme" style="padding-left: 20px; padding-right:20px;">
<style>
.underlineInput{
padding-left: 10px;
margin-bottom: 20px;
border-bottom: 1px solid;
}
.underlineInput > input {
padding-left: 10px;
border-bottom: 1px solid;
}
</style>
<div id="owl-selector" class="owl-carousel owl-theme" style="padding-left: 20px; padding-right:20px; border-radius: 15px;">
<div class="item" id="0" style="background-color: rgba(0,0,0,0.1)">
<div class="item-desc text-center pt-3">
<h3>Please type an address or swipe to select from preset destinations!</h3>
<div class="wrapper" style="max-width: 800px; margin:0 auto">
<DxTextBox
TextChanged="@((newValue) => OnTextChanged(newValue))"
BindValueMode="@BindValueMode"
InputDelay="@InputDelay"
NullText="Type text..."
CssClass="cw-320 form-field underlineInput" />
</div>
<p class="demo-text cw-320 mt-2">
Text: <b>@TextValue</b>
</p>
</div>
</div>
<div class="item" id="1" style="background-image: url(https://images.unsplash.com/photo-1551867633-194f125bddfa?auto=format&fit=crop&q=80&w=2070&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D); background-position: center;">
<div class="item-desc text-center pt-3">
<h3>Liszt Ferenc Airport</h3>
@ -20,12 +56,6 @@
</div>
</div>
<form>
</form>
<script>
@ -51,20 +81,20 @@
owl.owlCarousel({
navigation: true, // Show next and prev buttons
loop: true,
slideSpeed: 300,
paginationSpeed: 400,
items: 1,
itemsDesktop: false,
itemsDesktopSmall: false,
itemsTablet: false,
itemsMobile: false
itemsMobile: false
});
owl.trigger("to.owl.carousel", owl.maximum)
});
function CStoJSCall(dotNetObjRef) {
@ -94,11 +124,19 @@
@code {
public string TextValue { get; set; } = null;
int? InputDelay { get; set; } = 3500;
BindValueMode BindValueMode { get; set; } = BindValueMode.OnInput;
bool BindDelayEnabled { get { return BindValueMode == BindValueMode.OnDelayedInput; } }
[Parameter]
public EventCallback<string> TextChanged { get; set; }
public int SliderElementId = 0;
string content = "";
[Parameter]
public EventCallback<int> OnSliderChanged { get; set; }
[Inject]
public IJSRuntime JSRuntime { get; set; }
@ -121,7 +159,13 @@
SliderElementId = Convert.ToInt32(itemId);
OnSliderChanged.InvokeAsync(Convert.ToInt32(itemId));
StateHasChanged();
/*StateHasChanged();*/
}
void OnTextChanged(string newValue)
{
TextValue = newValue;
TextChanged.InvokeAsync(newValue);
}
}

View File

@ -43,7 +43,7 @@
.nav-item ::deep a {
color: #58457b;
border-radius: 25px;
border-radius: 15px;
height: 3rem;
display: flex;
align-items: center;

View File

@ -0,0 +1,39 @@
using DevExpress.Blazor;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Rendering;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TIAMSharedUI.Shared.User
{
public class TiamGrid<T> : ComponentBase
{
[Parameter]
public IEnumerable<T> Data { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public Dictionary<string, object> Settings { get; set; }
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.OpenComponent<DxGrid>(0);
builder.AddAttribute(1, "Data", (object)Data);
builder.AddAttribute(2, "Columns", ChildContent);
if (Settings != null)
{
builder.AddMultipleAttributes(3, Settings);
//OR
//int seq = 3;
//foreach (var item in Settings) {
// builder.AddAttribute(seq++, item.Key, item.Value);
//}
}
builder.CloseComponent();
}
}
}

View File

@ -0,0 +1,30 @@
@page "/dev/tiamgridexample"
@using TIAMWebApp.Shared.Application.Interfaces;
@using TIAMWebApp.Shared.Application.Models;
@inject IWeatherForecastService WeatherForecastService;
<TiamGrid Data="Forecasts" Settings="InputAttributes">
<DxGridCommandColumn Width="150px" />
<DxGridDataColumn FieldName="@nameof(WeatherForecast.Date)"></DxGridDataColumn>
<DxGridDataColumn FieldName="@nameof(WeatherForecast.TemperatureC)"></DxGridDataColumn>
<DxGridDataColumn FieldName="@nameof(WeatherForecast.TemperatureF)"></DxGridDataColumn>
<DxGridDataColumn FieldName="@nameof(WeatherForecast.Summary)"></DxGridDataColumn>
</TiamGrid>
@code {
public List<WeatherForecast>? Forecasts { get; set; }
public Dictionary<string, object> InputAttributes { get; set; } =
new Dictionary<string, object>() {
{ "PageSize", 5 },
{ "ShowFilterRow", false },
{ "PagerVisible" , false },
{ "ShowGroupPanel", true }
};
protected override async Task OnInitializedAsync() {
base.OnInitialized();
WeatherForecast[]? data = await WeatherForecastService.GetWeatherForecastAsync();
Forecasts = data.ToList();
}
}

View File

@ -30,11 +30,17 @@ body {
}
.btn-primary {
background-color: #475bd6;
background-color: #475bd6;
border-radius: 15px;
}
.btn-success, .btn-warning, .btn-danger {
border-radius: 15px;
}
.btn-secondary {
background-color: #f7279f;
border-radius: 15px;
}
.btn-outline .btn-outline-dark {
@ -68,18 +74,28 @@ select {
.dxbl-text-edit {
background-color: transparent;
border-color: transparent;
padding-left: 10px;
/*padding-left: 10px;
margin-bottom: 20px;
border-radius: 20px;
box-shadow: inset 3px 3px 3px #cbced1, inset -3px -3px 3px #fff;
box-shadow: inset 3px 3px 3px #cbced1, inset -3px -3px 3px #fff;*/
color: #666;
}
.dxbl-text-edit:focus, .dxbl-text-edit:focus-within {
border-color: transparent;
box-shadow: none;
}
.dxbl-text-edit-input {
background-color: transparent;
margin:10px;
color: #666;
}
.dxbl-text-edit-input:focus, .dxbl-text-edit-input:focus-within {
border-color: transparent;
box-shadow: none;
}
/*my blazor overrides end*/
.custom-select {
padding: 10px 15px 10px 10px !important;
@ -253,7 +269,7 @@ select:focus-visible {
height: 40px;
/*background-color: #03A9F4;*/
color: #fff;
border-radius: 25px;
border-radius: 15px;
/*box-shadow: 3px 3px 3px #b1b1b1, -3px -3px 3px #fff;*/
letter-spacing: 1.3px;
}
@ -324,6 +340,8 @@ select:focus-visible {
border-radius: 15px;*/
}
/*End Hero Carousel*/
/*Admin*/

View File

@ -13,6 +13,7 @@ builder.Services.AddScoped<IWeatherForecastService, WeatherForecastService>();
builder.Services.AddScoped<ITransferDataService, TransferDataService>();
builder.Services.AddScoped<IPopulationStructureDataProvider, PopulationStructureDataProvider>();
builder.Services.AddScoped<ISupplierService, SupplierService>();
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddSingleton<IUserDataService, UserDataService>();
builder.Services.AddSingleton(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddDevExpressBlazor(configure => configure.BootstrapVersion = BootstrapVersion.v5);
await builder.Build().RunAsync();

View File

@ -0,0 +1,85 @@
using System.Net.Http.Json;
using TIAMWebApp.Shared.Application.Interfaces;
using TIAMWebApp.Shared.Application.Models;
using static TIAMSharedUI.Shared.MainLayout;
namespace TIAMWebApp.Client.Services
{
public class UserDataService : IUserDataService
{
private readonly HttpClient http;
public User? User { get; set; } = new User();
public Dictionary<int, string> userRoleTypes { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public UserDataService(HttpClient http)
{
this.http = http;
}
public List<RoleType> roleTypes = new List<RoleType>
{
new RoleType { Id = 1, RoleName = "Login" },
new RoleType { Id = 2, RoleName = "Member" },
new RoleType { Id = 4, RoleName = "Vip" },
new RoleType { Id = 8, RoleName = "Uvip" },
new RoleType { Id = 16, RoleName = "Volunteer" },
new RoleType { Id = 32, RoleName = "Guide" },
new RoleType { Id = 64, RoleName = "Protector" },
new RoleType { Id = 128, RoleName = "Admin" },
new RoleType { Id = 256, RoleName = "SuperAdmin" },
new RoleType { Id = 512, RoleName = "God" }
};
public async Task<User> IsLoggedInAsync()
{
if (User == null)
{
User = new User();
User.IsLoggedIn = false;
User.UserType = UserType.User;
return User;
}
else
{
return User;
}
}
public async Task<User> AuthorizeUserAsync(int userType)
{
if (User == null)
{
User = new User();
}
//simply return true for now
User.IsLoggedIn = true;
User.UserType = (UserType)userType;
return User;
}
public Task<Dictionary<int, string>> GetUserRolesAsync(User user)
{
//get the user's roles
int role = User.UserRoles;
foreach (var roleType in roleTypes)
{
if ((role & roleType.Id) == roleType.Id)
{
//add the role to the dictionary
userRoleTypes.Add(roleType.Id, roleType.RoleName);
}
}
return Task.FromResult(userRoleTypes);
}
}
}

View File

@ -15,7 +15,8 @@
<link href="_content/TIAMSharedUI/css/app.css" rel="stylesheet" />
<link href="_content/TIAMSharedUI/css/TourIAm.css" rel="stylesheet" />
<link rel="icon" type="image/png" href="_content/TIAMSharedUI/favicon.png" />
<link href="TIAMWebApp.Client.styles.css" rel="stylesheet" />
<link href="TIAMWebApp.Client.styles.css" rel="stylesheet" />
</head>
<body>
@ -33,6 +34,7 @@
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.webassembly.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/cesiumjs/1.105/Build/Cesium/Cesium.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
</body>

View File

@ -0,0 +1,138 @@
using System;
using System.Threading.Tasks;
using GoogleApi.Entities.Common;
using GoogleApi.Entities.Common.Enums;
using GoogleApi.Entities.Maps.Common;
using GoogleApi.Entities.Maps.Common.Enums;
using GoogleApi.Entities.Maps.DistanceMatrix.Request;
using Microsoft.AspNetCore.Mvc;
using System.Reflection.Metadata;
using TIAMWebApp.Shared.Application.Models;
using static DevExpress.XtraPrinting.Native.ExportOptionsPropertiesNames;
using System.Net;
using GoogleApi.Entities.Maps.DistanceMatrix.Response;
namespace TIAMWebApp.Server.Controllers
{
[ApiController]
[Route("[controller]")]
public class GoogleAPIController : ControllerBase
{
private static readonly TripInfo[] Trips = new TripInfo[]
{
new TripInfo(47.511887f, 19.031920f, 47.510769f, 19.081422f ),
};
private readonly ILogger<SupplierAPIController> _logger;
public GoogleAPIController(ILogger<SupplierAPIController> logger)
{
_logger = logger;
}
[HttpGet]
[Route("GetAddressForCoordinates")]
public string GetAddressForCoordinates(TripInfo myTrip)
{
var latitude = Trips[0].StartLatitude; // Example latitude
var longitude = Trips[0].StartLongitude; // Example longitude
Console.WriteLine(latitude);
Console.WriteLine(longitude);
try
{
/*var address = locationService.GetAddressFromLatLang(latitude, longitude);
Console.WriteLine(address.Address);
string myaddress = address.Address;
return "myaddress: " + myaddress;*/
return "";
}
catch (System.Net.WebException ex)
{
Console.WriteLine("Google Maps API Error {0}", ex.Message);
return "Google Maps API Error {0}" + ex.Message;
}
}
[HttpGet]
[Route("GetTravelTime")]
//public string GetTravelTime(TripInfo)
public async Task<string> GetTravelTimeWithGoogleMatrix()
{
var latitude1 = Trips[0].StartLatitude; // Example latitude
var longitude1 = Trips[0].StartLongitude; // Example longitude
var latitude2 = Trips[0].EndLatitude; // Example latitude
var longitude2 = Trips[0].EndLongitude; // Example longitude
Console.WriteLine(latitude1);
Console.WriteLine(longitude1);
Console.WriteLine(latitude2);
Console.WriteLine(longitude2);
try
{
var origin1 = new Address("Margit utca 35, Budapest, Budapest, Magyarország");
var origin2 = new Address("Nefelejcs utca 18, Budapest, Budapest, Magyarország");
var destination1 = new Address("Százados utca 30/a, Budapest, Budapest, Magyarország");
var destination2 = new Address("Novoszadek utca 53, Pilisszántó, Pest, Magyarország");
DistanceMatrixResponse? response = null;
//var response = await GoogleMaps.DistanceMatrix.QueryAsync(request);
try
{
var request = new DistanceMatrixRequest
{
Key = "AIzaSyAyEYJkpt2KDa3SJ34UNWO4-dNOJKmUtF8",
Origins = new[]
{
new LocationEx(origin1),
new LocationEx(origin2)
},
Destinations = new[]
{
new LocationEx(destination1),
new LocationEx(destination2)
},
TravelMode = TravelMode.Driving,
};
response = await GoogleApi.GoogleMaps.DistanceMatrix.QueryAsync(request);
return response.RawJson;
}
catch (Exception e)
{
Console.Write("Errorcode: {0}", (int)response.Status);
}
return "";
}
catch (WebException ex)
{
Console.WriteLine("Google Maps API Error {0}", ex.Message);
return "Google Maps API Error {0}" + ex.Message;
}
}
}
}

View File

@ -10,7 +10,7 @@ namespace TIAMWebApp.Server.Controllers
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Kurvahideg", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
};
private readonly ILogger<WeatherForecastAPIController> _logger;

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<DeleteExistingFiles>false</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>C:\REPOS\AYCODE\Publish\Server</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
</PropertyGroup>
</Project>

View File

@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="GoogleApi" Version="5.2.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="7.0.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.13" />
</ItemGroup>

View File

@ -2,6 +2,6 @@
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ActiveDebugProfile>https</ActiveDebugProfile>
<NameOfLastUsedPublishProfile>C:\MANGOWEB\TourIAmProject\TIAMWebApp\Server\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
<NameOfLastUsedPublishProfile>C:\REPOS\AYCODE\source\TourIAm\TIAMWebApp\Server\Properties\PublishProfiles\FolderProfile1.pubxml</NameOfLastUsedPublishProfile>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TIAMWebApp.Shared.Application.Models;
namespace TIAMWebApp.Shared.Application.Interfaces
{
public interface IUserDataService
{
public User? User { get; set; }
public Dictionary<int, string> userRoleTypes { get; set; }
public Task<User> IsLoggedInAsync();
public Task<User> AuthorizeUserAsync(int userType);
public Task<Dictionary<int, string>> GetUserRolesAsync(User user);
}
}

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TIAMWebApp.Shared.Application.Models
{
public class RoleType
{
public int Id { get; set; }
public string? RoleName { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TIAMWebApp.Shared.Application.Models
{
public class TripInfo
{
public float StartLatitude { get; set; }
public float StartLongitude { get; set; }
public float EndLatitude { get; set; }
public float EndLongitude { get; set; }
public TripInfo(float startLatitude, float startLongitude, float endLatitude, float endLongitude )
{
StartLatitude = startLatitude;
StartLongitude = startLongitude;
EndLatitude = endLatitude;
EndLongitude = endLongitude;
}
}
}

View File

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TIAMWebApp.Shared.Application.Models
{
public class User
{
public bool IsLoggedIn { get; set; }
public UserType UserType { get; set; }
public int UserRoles { get; set; }
public Dictionary<int, string> UserRolesDictionary { get; set; }
}
public enum UserType
{
Hotel = 1,
Transfer = 2,
Guide = 3,
Admin = 4,
User = 5,
Driver= 6
}
}