diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 7453cb7d..afa66892 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -35,6 +35,9 @@ namespace TIAM.Database.DataLayers.Admins #endregion Car #region Transfer + + public Task> GetTransfersAsync() => SessionAsync(ctx => ctx.GetTransfers().ToList()); + public Task GetTransfersJsonAsync() => SessionAsync(ctx => ctx.GetTransfers().ToJson()); public Transfer? GetTransferById(Guid transferId) => Session(ctx => ctx.GetTransferById(transferId)); public string? GetTransferJsonById(Guid transferId) => Session(ctx => ctx.GetTransferById(transferId)?.ToJson()); @@ -87,6 +90,10 @@ namespace TIAM.Database.DataLayers.Admins public User? GetUserById(Guid userId, bool autoInclude = false) => Session(ctx => ctx.GetUserById(userId, autoInclude)); public User? GetUserByEmail(string email, bool autoInclude = false) => Session(ctx => ctx.GetUserByEmail(email, autoInclude)); + public UserModelDtoDetail? GetUserModelDtoDetailById(Guid userId) => Session(ctx => ctx.GetUserModelDtoDetailById(userId)); + public Task GetUserModelDtoDetailByIdAsync(Guid userId) => SessionAsync(ctx => ctx.GetUserModelDtoDetailById(userId)); + public UserModelDtoDetail? GetUserModelDtoDetailByEmail(string email) => Session(ctx => ctx.GetUserModelDtoDetailByEmail(email)); + public UserModelDto? GetUserModelDtoById(Guid userId) => Session(ctx => ctx.GetUserModelDtoById(userId)); public Task GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(ctx => ctx.GetUserModelDtoById(userId)); public UserModelDto? GetUserModelDtoByEmail(string email) => Session(ctx => ctx.GetUserModelDtoByEmail(email)); diff --git a/TIAM.Database/DataLayers/Users/UserDal.cs b/TIAM.Database/DataLayers/Users/UserDal.cs index 8f9dcdcc..57f9b025 100644 --- a/TIAM.Database/DataLayers/Users/UserDal.cs +++ b/TIAM.Database/DataLayers/Users/UserDal.cs @@ -29,6 +29,10 @@ namespace TIAM.Database.DataLayers.Users { } + public UserModelDtoDetail? GetUserModelDtoDetailById(Guid userId) => Session(ctx => ctx.GetUserModelDtoDetailById(userId)); + public Task GetUserModelDtoDetailByIdAsync(Guid userId) => SessionAsync(ctx => ctx.GetUserModelDtoDetailById(userId)); + public UserModelDtoDetail? GetUserModelDtoDetailByEmail(string email) => Session(ctx => ctx.GetUserModelDtoDetailByEmail(email)); + public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId)); public Task GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId)); public Task GetUserModelDtoByEmailAsync(string email) => SessionAsync(x => x.GetUserModelDtoByEmail(email)); diff --git a/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs b/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs index 90d4f7f1..21c0581d 100644 --- a/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs +++ b/TIAM.Database/DbSets/Users/UserDbSetExtensions.cs @@ -30,4 +30,13 @@ public static class UserDbSetExtensions public static IQueryable GetAllUsersModelDto(this IUserDbSet ctx) => ctx.Users.Select(user => new UserModelDto(user)); + public static UserModelDtoDetail? GetUserModelDtoDetailById(this IUserDbSet ctx, Guid userId) + => ctx.GetUsersById(userId).Select(user => new UserModelDtoDetail(user)).FirstOrDefault(); + + public static UserModelDtoDetail? GetUserModelDtoDetailByEmail(this IUserDbSet ctx, string email) + => ctx.GetUsersByEmail(email).Select(user => new UserModelDtoDetail(user)).FirstOrDefault(); + + public static IQueryable GetAllUsersModelDetailDto(this IUserDbSet ctx) + => ctx.Users.Select(user => new UserModelDtoDetail(user)); + } \ No newline at end of file diff --git a/TIAM.Entities/Transfers/Transfer.cs b/TIAM.Entities/Transfers/Transfer.cs index 33e21de5..58d113cd 100644 --- a/TIAM.Entities/Transfers/Transfer.cs +++ b/TIAM.Entities/Transfers/Transfer.cs @@ -16,7 +16,7 @@ public class Transfer: IEntityGuid, ITimeStampInfo, IProductForeignKey, IUserFor public Guid Id { get; set; } [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int OrderId { get; private set; } + public int OrderId { get; set; } public Guid UserId { get; set; } public Guid ProductId { get; set; } diff --git a/TIAM.Entities/Users/IUserDtoDetail.cs b/TIAM.Entities/Users/IUserDtoDetail.cs new file mode 100644 index 00000000..6435bbc0 --- /dev/null +++ b/TIAM.Entities/Users/IUserDtoDetail.cs @@ -0,0 +1,16 @@ +using AyCode.Interfaces.Users.Dtos; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TIAM.Entities.Addresses; +using TIAM.Entities.Profiles; +using TIAM.Entities.ServiceProviders; + +namespace TIAM.Entities.Users +{ + public interface IUserDtoDetail : IAcUserDtoDetailBase + { + } +} diff --git a/TIAM.Models/Dtos/Users/UserDtoDetail.cs b/TIAM.Models/Dtos/Users/UserDtoDetail.cs new file mode 100644 index 00000000..15e49616 --- /dev/null +++ b/TIAM.Models/Dtos/Users/UserDtoDetail.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TIAM.Entities.Users; + +namespace TIAM.Models.Dtos.Users +{ + public class UserDtoDetail : UserDto, IUserDtoDetail + { + public string PhoneNumber { get; set; } + public string? RefreshToken { get; set; } + public Guid? RefferalId { get; set; } + public string EmailAddress { get; set; } + public bool EmailConfirmed { get; set; } + public string Password { get; set; } + public DateTime Created { get; set; } + public DateTime Modified { get; set; } + } +} diff --git a/TIAM.Models/Dtos/Users/UserModelDtoDetail.cs b/TIAM.Models/Dtos/Users/UserModelDtoDetail.cs new file mode 100644 index 00000000..582ff448 --- /dev/null +++ b/TIAM.Models/Dtos/Users/UserModelDtoDetail.cs @@ -0,0 +1,45 @@ +using AyCode.Models.Users; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TIAM.Entities.Addresses; +using TIAM.Entities.Products; +using TIAM.Entities.Profiles; +using TIAM.Entities.ServiceProviders; +using TIAM.Entities.Users; +using TIAM.Models.Dtos.Profiles; + +namespace TIAM.Models.Dtos.Users +{ + public class UserModelDtoDetail : AcUserModelDtoDetailBase, IProductsRelation + { + public List UserProductMappings { get; set; } + public List Products { get; set; } + + public UserModelDtoDetail() { } + public UserModelDtoDetail(User user) : base(user) + { + if (user.Products.Count == 0) return; + + //így proxy error lesz... - J. + //Products = new List(user.Products); + //UserProductMappings = new List(user.UserProductMappings); + + Products = new List(user.Products.Count); + UserProductMappings = new List(user.UserProductMappings.Count); + + foreach (var product in user.Products) + { + Products.Add(new Product(product.Id, product.ServiceProviderId, product.ProductType, product.Name, product.Description, product.Price, product.JsonDetails)); + } + + foreach (var userProduct in user.UserProductMappings) + { + UserProductMappings.Add(new UserProductMapping(userProduct.Id, userProduct.UserId, userProduct.ProductId)); + } + } + + } +} diff --git a/TIAMMobileApp/Services/UserDataServiceMobile.cs b/TIAMMobileApp/Services/UserDataServiceMobile.cs index b2875955..67c15f46 100644 --- a/TIAMMobileApp/Services/UserDataServiceMobile.cs +++ b/TIAMMobileApp/Services/UserDataServiceMobile.cs @@ -8,6 +8,7 @@ using TIAMWebApp.Shared.Application.Interfaces; using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models.ClientSide; using TIAMWebApp.Shared.Application.Models.PageModels; +using TIAMWebApp.Shared.Application.Utility; namespace TIAMMobileApp.Services { @@ -201,6 +202,18 @@ namespace TIAMMobileApp.Services return Task.FromResult(userRoleTypes); } + + public async Task GetUserDetailByIdAsync(Guid id) + { + var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetUserDetailById}"; + + + var response = await http.PostAsJsonAsync(url, id); + var result = await response.Content.ReadAsStringAsync(); + var user = JsonConvert.DeserializeObject(result); + + return user; + } } } diff --git a/TIAMMobileApp/wwwroot/index.html b/TIAMMobileApp/wwwroot/index.html index aac7bce8..393fd2cd 100644 --- a/TIAMMobileApp/wwwroot/index.html +++ b/TIAMMobileApp/wwwroot/index.html @@ -32,11 +32,11 @@ Reload 🗙 - - + + diff --git a/TIAMSharedUI/Pages/AppLaunch.razor b/TIAMSharedUI/Pages/AppLaunchComponent.razor similarity index 94% rename from TIAMSharedUI/Pages/AppLaunch.razor rename to TIAMSharedUI/Pages/AppLaunchComponent.razor index 9bfd818d..68ba4ded 100644 --- a/TIAMSharedUI/Pages/AppLaunch.razor +++ b/TIAMSharedUI/Pages/AppLaunchComponent.razor @@ -1,4 +1,4 @@ -@page "/"; +@* @page "/"; *@ @using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Models @using TIAMWebApp.Shared.Application.Utility @@ -14,6 +14,7 @@ @inject ISecureStorageHandler SecureStorageHandler @inject ISessionService sessionService; @inject HttpClient http; +@inject IComponentUpdateService ComponentUpdateService @{ if (string.IsNullOrWhiteSpace(TrackingId)) @@ -30,6 +31,8 @@ @code { + + [Parameter] public string TrackingId { get; set; } @@ -56,7 +59,7 @@ logToBrowserConsole = new LogToBrowserConsole(JSRuntime); //wait for 5 seconds //await Task.Delay(1000); - + if (!string.IsNullOrWhiteSpace(userDetailsStr)) { logToBrowserConsole.LogToBC(userDetailsStr); @@ -76,17 +79,15 @@ if (isTokenRefreshed) { logToBrowserConsole.LogToBC("Token refreshed"); - } else { logToBrowserConsole.LogToBC("Couldn't refresh token"); SignOut(); - NavManager.NavigateTo("/index"); + //NavManager.NavigateTo("/"); return; } - } else { @@ -100,13 +101,14 @@ sessionService.User = user; logToBrowserConsole.LogToBC($"Saved user in db is: {user.DisplayName}, setting autenthicated state"); sessionService.IsAuthenticated = true; - NavManager.NavigateTo("/index"); + //NavManager.NavigateTo("/"); } else { logToBrowserConsole.LogToBC("No token stored yet"); - NavManager.NavigateTo("/index"); + NavManager.NavigateTo("/"); } + ComponentUpdateService.CallRequestRefresh(); } diff --git a/TIAMSharedUI/Pages/Components/AuthComponent.razor.cs b/TIAMSharedUI/Pages/Components/AuthComponent.razor.cs index 9b1452c3..f710c0ff 100644 --- a/TIAMSharedUI/Pages/Components/AuthComponent.razor.cs +++ b/TIAMSharedUI/Pages/Components/AuthComponent.razor.cs @@ -24,9 +24,15 @@ namespace TIAMSharedUI.Pages.Components protected override async Task OnInitializedAsync() { - await base.OnInitializedAsync(); + IsLoggedIn = sessionService.IsAuthenticated; - //await PopupMessageBox.ShowAsync("AuthComponent", "Initialized", null, null, null, PopupMessageBox.ButtonOk); + if(IsLoggedIn) + { + + string sessionMessage = sessionService.User.UserModelDto.Products.FirstOrDefault().Name; + + await PopupMessageBox.ShowAsync("Session info", sessionMessage, null, null, null, PopupMessageBox.ButtonOk); + } //if (await PopupMessageBox.Show("Cancel", "Cancel this stuff", //PopupMessageBox.ButtonNo, PopupMessageBox.ButtonYes) == PopupMessageBox.ButtonNo) diff --git a/TIAMSharedUI/Pages/Components/CallToActionComponent.razor b/TIAMSharedUI/Pages/Components/CallToActionComponent.razor new file mode 100644 index 00000000..4c7a0b9b --- /dev/null +++ b/TIAMSharedUI/Pages/Components/CallToActionComponent.razor @@ -0,0 +1,13 @@ +
+
+
+
+

Your reliable partner in transfer

+
+
+
+
+ +@code { + +} diff --git a/TIAMSharedUI/Pages/Components/InputWizard.razor.cs b/TIAMSharedUI/Pages/Components/InputWizard.razor.cs index d2276d12..19dd5446 100644 --- a/TIAMSharedUI/Pages/Components/InputWizard.razor.cs +++ b/TIAMSharedUI/Pages/Components/InputWizard.razor.cs @@ -29,6 +29,9 @@ namespace TIAMSharedUI.Pages.Components [Inject] IStringLocalizer localizer { get; set; } + [Inject] + public ISessionService sessionService { get; set; } + public Dictionary FormSteps { get; set; } = new Dictionary(); public int CurrentStep { get; set; } = 0; @@ -53,6 +56,9 @@ namespace TIAMSharedUI.Pages.Components [Parameter] public List IgnoreReflection { get; set; } + [Parameter] + public string CssClass { get; set; } = ""; + string _formSubmitResult = ""; @@ -146,7 +152,7 @@ namespace TIAMSharedUI.Pages.Components layoutItemBuilder.OpenElement(i++, "div");//open div layoutItemBuilder.AddAttribute(i++, "id", _stepID.ToString()); - layoutItemBuilder.AddAttribute(i++, "class", "disply-flex align-items-center "); + layoutItemBuilder.AddAttribute(i++, "class", "disply-flex align-items-center "+CssClass); layoutItemBuilder.AddAttribute(i++, "style", "width: 100%;"); if (k != CurrentStep) { diff --git a/TIAMSharedUI/Pages/Events.razor b/TIAMSharedUI/Pages/Events.razor index 9770e251..1e1f1a78 100644 --- a/TIAMSharedUI/Pages/Events.razor +++ b/TIAMSharedUI/Pages/Events.razor @@ -1,8 +1,9 @@ @page "/events" @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Models +@using TIAMWebApp.Shared.Application.Models.ClientSide.UI - +
@@ -67,6 +68,26 @@ @code { + + public List SliderItems = new List + { + new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://images.unsplash.com/photo-1514525253161-7a46d19cd819?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" + }, + new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://images.unsplash.com/photo-1501527459-2d5409f8cf9f?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" + }, + new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://images.unsplash.com/photo-1526907858462-4b1c6b0a0dcc?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" + } + }; + public List MockEvents = new List { new Event("HONEYBEAST", "A Honeybeast egyedisége abban rejlik, hogy a popzenét rengeteg különféle irányból közelítik meg - hol vidám, hol szomorú, hol pörgős, hogy lassú, koncertjükön az érzelmek széles skáláját élhetjük át együtt.", "2024.05.03", "Budapest Park", "https://tixa.hu/kepek/0027/320/27870-1_20231214141702.jpg"), diff --git a/TIAMSharedUI/Pages/Formula1.razor b/TIAMSharedUI/Pages/Formula1.razor new file mode 100644 index 00000000..f080f5c4 --- /dev/null +++ b/TIAMSharedUI/Pages/Formula1.razor @@ -0,0 +1,458 @@ +@page "/formulaone" +@using AyCode.Interfaces.StorageHandlers; +@using BlazorAnimation +@using Newtonsoft.Json; +@using TIAMSharedUI.Shared.Components +@using TIAMWebApp.Shared.Application.Interfaces +@using TIAMWebApp.Shared.Application.Models.ClientSide; +@using AyCode.Blazor.Components; +@using TIAMWebApp.Shared.Application.Models; +@using TIAMWebApp.Shared.Application.Models.ClientSide.UI +@using TIAMWebApp.Shared.Application.Utility; +@using System.IdentityModel.Tokens.Jwt; +@using TIAMSharedUI.Pages.Components; +@using TIAMSharedUI.Shared +@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels +@inject NavigationManager NavManager +@inject IUserDataService UserDataService; +@inject IJSRuntime jsRuntime; +@inject ISecureStorageHandler SecureStorageHandler +@inject ISessionService sessionService; +@inject IStringLocalizer localizer; +@inject NavigationManager navManager +@inject LogToBrowserConsole logToBrowserConsole + +@inject ITransferDataService transferDataService + +Index + + + + +
+
+
+ + @{ + if (!showWizard) + { + + + + +
+

BUDAPEST - HUNGARORING

+ +
+
+
+ +
Early bird sale
+ +
+
+

Friday

+

round trip

+ + Budapest Hungaroring +
+ +
+
+
+
+
+ +
Early bird sale
+ +
+
+

Saturday

+

round trip

+ + Budapest Hungaroring +
+ +
+
+
+
+
+ +
Early bird sale
+ +
+
+

Sunday

+

round trip

+ + Budapest Hungaroring +
+ +
+
+
+
+
+ +
Early bird sale
+ +
+
+

3 days

+

round trip

+ + Budapest Hungaroring +
+ +
+
+
+
+ +
+

AIRPORT - HUNGARORING

+ +
+
+
+

One way transfer

+
+ +
+
+
+
+
+

One way transfer

+
+ +
+
+
+
+
+

One way transfer

+
+ +
+
+ +
+
+ +
+

FROM LOCATION OUTSIDE OF BUDAPEST

+ +
+
+
+

Friday round trip

+ +
+ +
+
+
+
+
+

Saturday round trip

+ +
+ +
+
+
+
+
+

Sunday round trip

+ +
+ +
+
+
+
+
+

3 days round trip bundle

+ +
+ +
+
+
+
+ + +
+ + //six cards for the six available services + + + + } + else + { +
+
+
+
+ +
+
+
+
+
Early bird sale
+ +
+
+ + + +
+
+ +
+
+ +
+ + + +
+
+
+ + } + } + +
+
+ +
+ + +@code { + + [CascadingParameter] + private PopupMessageBox PopupMessageBox { get; set; } = default!; + + public bool showWizard = false; + + public string _location1 = "Budapest"; + public string _location2 = "Airport"; + public string _location3 = "Other"; + + public int[] OrderDates; + public bool OrderIsReturn; + public string OrderLocation; + + + public List sliders = new List + { + new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://cdn.discordapp.com/attachments/1009417752978661446/1223738909545201734/adam_the_walking_dad_on_the_racetrack_in_epic_scene_with_sunset_949f618b-40f6-460c-80c8-b1acb1dd609e.png?ex=661af2ac&is=66087dac&hm=a65227652da3b9c165b197f58d031cbdbbea392290a1bca53fc8c768d732b53e&" + }, + new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://cdn.discordapp.com/attachments/1009417752978661446/1223720528544792687/adam_the_walking_dad_a_formula_1_race_track_with_a_formula_1_ra_f9ca52cb-6e1a-4458-929d-99d08bce7c1f.png?ex=661ae18d&is=66086c8d&hm=aa9ef7d602f1f9e42884469b0c556886540400c0a46131d9b06e855e85523140&" + }, +new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://cdn.discordapp.com/attachments/1009417752978661446/1223734873504616580/adam_the_walking_dad_a_formula_1_race_track_with_a_formula_1_ra_09b9f360-9660-41bc-840a-5b0b7a189ef7.png?ex=661aeee9&is=660879e9&hm=6e07a2da7d6de8767f56b4d62e5a268975b62d417e96cd5ed723dcb88f299d65&" + }, + }; + + public TransferWizardModel myModel = new TransferWizardModel(); + + public List TransferIgnorList = new List + { + "Id", + "UserId", + "Destination", + "PickupAddress", + "ProductId", + "TripDate", + "UserProductMappingId", + "UserProductToCarId", + "ReferralId", + "Price", + "Driver", + "Comment" + }; + + /*protected override void OnAfterRender(bool isFirst) + { + message = " Target destination is " + slider.SliderElementId.ToString(); + }*/ + + public async Task SubmitForm(object result) + { + var orderModel = result as TransferWizardModel; + List TransferList = new List(); + foreach (var date in OrderDates) + { + + TransferWizardModel transfer = orderModel.Clone(); + transfer.TripDate = new DateTime(2024, 07, date); + //Basic settings + if (sessionService.IsAuthenticated) + { + transfer.UserId = sessionService.User.UserModelDto.Id; + transfer.ProductId = sessionService.User.UserModelDto.Products.FirstOrDefault().Id; + } + transfer.Price = null; + + // Outbound trip + transfer.PickupAddress = OrderLocation; + transfer.Destination = "Hungaroring"; + TransferList.Add(transfer); + + // Return trip + transfer = orderModel.Clone(); + transfer.TripDate = new DateTime(2024, 07, date); + transfer.PickupAddress = "Hungaroring"; + transfer.Destination = OrderLocation; + TransferList.Add(transfer); + } + + var transferResult = await transferDataService.CreateTransfers(TransferList); + logToBrowserConsole.LogToBC($"Submitted nested form: {transferResult.GetType().FullName}, {transferResult.Count}"); + } + + protected override void OnInitialized() + { + bool IsLoggedIn = sessionService.IsAuthenticated; + if (IsLoggedIn) + { + + logToBrowserConsole.LogToBC("logged in" + sessionService.User.UserModelDto.Products.FirstOrDefault().Id); + + } + } + + public void Book(int[] dates, bool isReturn, string location) + { + myModel.TripDate = new DateTime(2024, 07, dates[0]); + myModel.Destination = "Hungaroring"; + myModel.PickupAddress = location; + OrderDates = dates; + OrderIsReturn = isReturn; + OrderLocation = location; + showWizard = true; + } +} + + + + + diff --git a/TIAMSharedUI/Pages/Index.razor b/TIAMSharedUI/Pages/Index.razor index 66667f38..4d92efa7 100644 --- a/TIAMSharedUI/Pages/Index.razor +++ b/TIAMSharedUI/Pages/Index.razor @@ -1,4 +1,4 @@ -@page "/index" +@page "/" @using AyCode.Interfaces.StorageHandlers; @using BlazorAnimation @using Newtonsoft.Json; @@ -6,6 +6,7 @@ @using TIAMWebApp.Shared.Application.Models.ClientSide; @using AyCode.Blazor.Components; @using TIAMWebApp.Shared.Application.Models; +@using TIAMWebApp.Shared.Application.Models.ClientSide.UI @using TIAMWebApp.Shared.Application.Utility; @using System.IdentityModel.Tokens.Jwt; @using TIAMSharedUI.Pages.Components; @@ -25,7 +26,7 @@ - +
@@ -101,13 +102,38 @@ @code { + public List sliders = new List + { + new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://images.unsplash.com/photo-1551867633-194f125bddfa?auto=format&fit=crop&q=80&w=2070&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" + }, + new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://images.unsplash.com/photo-1549877452-9c387954fbc2?auto=format&fit=crop&q=80&w=2070&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" + }, + new HeroSliderItem + { + Title = "Welcome to TIAM", + ImageUrl = "https://images.unsplash.com/photo-1507622560124-621e26755fb8?auto=format&fit=crop&q=80&w=2070&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" + } + }; + public TransferWizardModel myModel = new TransferWizardModel(); public List TransferIgnorList = new List { "Id", + "UserId", + "ProductId", + "UserProductMappingId", + "UserProductToCarId", + "ReferralId", "Price", - "Driver" + "Driver", + "Comment" }; /*protected override void OnAfterRender(bool isFirst) @@ -117,9 +143,14 @@ public async Task SubmitForm(object Result) { - - - var transfer = await WizardProcessor.ProcessWizardAsync(Result.GetType(), Result); + TransferWizardModel transferWizardModel = Result as TransferWizardModel; + if(sessionService.IsAuthenticated) + { + transferWizardModel.UserId = sessionService.User.UserModelDto.Id; + transferWizardModel.ProductId = sessionService.User.UserModelDto.Products.FirstOrDefault().Id; + } + transferWizardModel.Price = null; + var transfer = await WizardProcessor.ProcessWizardAsync(transferWizardModel.GetType(), transferWizardModel); logToBrowserConsole.LogToBC($"Submitted nested form: {Result.GetType().FullName}"); navManager.NavigateTo("/transfer2/" + transfer.Id); } diff --git a/TIAMSharedUI/Pages/Transfer.razor b/TIAMSharedUI/Pages/TransferPage.razor similarity index 100% rename from TIAMSharedUI/Pages/Transfer.razor rename to TIAMSharedUI/Pages/TransferPage.razor diff --git a/TIAMSharedUI/Pages/Transfer.razor.css b/TIAMSharedUI/Pages/TransferPage.razor.css similarity index 100% rename from TIAMSharedUI/Pages/Transfer.razor.css rename to TIAMSharedUI/Pages/TransferPage.razor.css diff --git a/TIAMSharedUI/Pages/User/SysAdmins/Grid_MasterDetail_NestedGrid_DetailContent.razor b/TIAMSharedUI/Pages/User/SysAdmins/Grid_MasterDetail_NestedGrid_DetailContent.razor new file mode 100644 index 00000000..677472de --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/Grid_MasterDetail_NestedGrid_DetailContent.razor @@ -0,0 +1,98 @@ +@using TIAM.Entities.Transfers +@using TIAM.Entities.Drivers +@using TIAM.Models.Dtos.Users +@using TIAMWebApp.Shared.Application.Interfaces +@using TIAMWebApp.Shared.Application.Utility +@inject IUserDataService NwindDataService +@inject LogToBrowserConsole logToBrowserConsole + +
+ Contact Phone: @PhoneNumber +
+
+ Contact Phone: @EmailAddress +
+ + + + + + + + +@code { + [Parameter] + public bool KeyboardNavigationEnabled { get; set; } + [Parameter] + public TIAM.Entities.Transfers.Transfer Customer { get; set; } + + List DetailGridData { get; set; } + + public UserModelDtoDetail UserInfo; + public string PhoneNumber = ""; + public string EmailAddress = ""; + + protected override async Task OnInitializedAsync() + { + UserInfo = await NwindDataService.GetUserDetailByIdAsync(Customer.UserId); + PhoneNumber = UserInfo.UserDto.PhoneNumber; + EmailAddress = UserInfo.UserDto.EmailAddress; + DetailGridData = Customer.TransferToDrivers; + logToBrowserConsole.LogToBC($"DetailGridData: {DetailGridData.Count}"); + } + + void CustomizeEditModel(GridCustomizeEditModelEventArgs e) + { + if (e.IsNew) + { + var newDriver = (TransferToDriver)e.EditModel; + newDriver.Id = Guid.NewGuid(); + newDriver.CarId = Guid.Empty; + newDriver.LicencePlate = ""; + newDriver.Car = new Car(); + newDriver.Price = 0; + newDriver.TransferId = Customer.Id; + + + } + } + + async Task EditModelSaving(GridEditModelSavingEventArgs e) + { + if (e.IsNew) + //add new orderData to orderData array + logToBrowserConsole.LogToBC("New orderData added"); + //await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel); + else + logToBrowserConsole.LogToBC("orderData updated"); + + //await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel); + + await UpdateDataAsync(); + } + async Task DataItemDeleting(GridDataItemDeletingEventArgs e) + { + //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); + //remove orderData from orderData array + logToBrowserConsole.LogToBC("orderData deleted"); + //await UpdateDataAsync(); + } + async Task UpdateDataAsync() + { + //DataSource = await NwindDataService.GetEmployeesEditableAsync(); + //refresh grid + logToBrowserConsole.LogToBC("orderData grid refreshed"); + } + +} \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/TransferManagement.razor b/TIAMSharedUI/Pages/User/SysAdmins/TransferManagement.razor index 020ecb73..361d8676 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/TransferManagement.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/TransferManagement.razor @@ -1,12 +1,16 @@ @page "/user/transfers" @using AyCode.Models.Messages @using BlazorAnimation +@using TIAM.Core.Enums @using TIAM.Entities.ServiceProviders +@using TIAM.Entities.Transfers +@using TIAM.Models.Dtos.Users @using TIAM.Resources @using TIAMSharedUI.Pages.Components @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Models +@using TIAMWebApp.Shared.Application.Models.ClientSide.UI @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels @using TIAMWebApp.Shared.Application.Models.ClientSide.Messages @using TIAMWebApp.Shared.Application.Utility @@ -14,6 +18,7 @@ @inject LogToBrowserConsole logToBrowserConsole @inject IStringLocalizer localizer @inject IWizardProcessor wizardProcessor +@inject ITransferDataService transferDataService Transfers
@@ -26,32 +31,72 @@
+
+ + + + + + + + + + + + + + @{ + + TransferStatusModel keyField = Statuses.FirstOrDefault(x => x.StatusValue == Convert.ToInt16(context.Value)); + string driverText = keyField.StatusName; +

@driverText

+ } +
+
+
+ + + + + @{ + var transfer2 = (Transfer)EditFormContext.EditModel; + } + + + @EditFormContext.GetEditor("ToAddress") + + + @EditFormContext.GetEditor("FromAddress") + + + @EditFormContext.GetEditor("Appointment") + + + @EditFormContext.GetEditor("PassengerCount") + + + + @EditFormContext.GetEditor("TransferStatusType") + + + + + + +
+ +
- - - - - - - -
@@ -60,6 +105,10 @@ IconCssClass="btn-column-chooser" Click="ColumnChooserButton_Click" />
+ + + + - - + + @{ var keyField = context.Value; @@ -84,30 +133,30 @@ } - - - - - + + + + @* *@ + @* - - @{ - var keyField = context.Value; - var keyItem = (TransferWizardModel)context.DataItem; - string buttonText = "Contact"; - - } - - - - - @{ - DriverModel keyField = (DriverModel)context.Value; - string driverText = keyField.Name; -

@driverText

- } -
-
+ + @{ + var keyField = context.Value; + var keyItem = (TransferWizardModel)context.DataItem; + string buttonText = "Contact"; + + } + +
*@ + @* + + @{ + DriverModel keyField = (DriverModel)context.Value; + string driverText = keyField.Name; +

@driverText

+ } +
+
*@ @@ -117,39 +166,39 @@ } - @EditFormContext.GetEditor("Destination") + @EditFormContext.GetEditor("ToAddress") - @EditFormContext.GetEditor("PickupAddress") + @EditFormContext.GetEditor("FromAddress") - @EditFormContext.GetEditor("TripDate") + @EditFormContext.GetEditor("Appointment") - @EditFormContext.GetEditor("NumberOfPassengers") + @EditFormContext.GetEditor("PassengerCount") - - @EditFormContext.GetEditor("FullName") + @* + @EditFormContext.GetEditor("FullName") - @EditFormContext.GetEditor("PhoneNumber") + @EditFormContext.GetEditor("PhoneNumber") - @EditFormContext.GetEditor("EmailAddress") - - - - - + @EditFormContext.GetEditor("EmailAddress") + *@ + @* + + + *@ @@ -180,6 +229,8 @@ public TransferWizardModel myModel = new TransferWizardModel(); + public List TransferData { get; set; } + bool PopupVisible { get; set; } public List ignoreList = new List { @@ -190,28 +241,12 @@ "ContextId" }; - public MessageWizardModel messageWizardModel = new MessageWizardModel(); + public List Statuses { get; set; } + public MessageWizardModel messageWizardModel = new MessageWizardModel(); //IEnumerable drivers { get; set; } - IEnumerable drivers { get; set; } = new DriverModel[] { - new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "John Doe"), - new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "Jane Doe"), - new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "James Doe") - }; - - object? TransferData = new TransferWizardModel[] - { - new TransferWizardModel(Guid.NewGuid(), "1087, Budapest, Százados út 30/a", "Nyugati Pályaudvar", DateTime.UtcNow.AddDays(3), 3, "John Malkovich", "+13021234567", "john.malkovich@stars.com", new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "John Doe")), - new TransferWizardModel(Guid.NewGuid(), "1027, Budapest, Batthyányi tér 3", "Budapest, Koós Károly sétány 21", DateTime.UtcNow.AddDays(6), 3, "John Malkovich", "+13021234567", "john.malkovich@stars.com", new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "Jane Doe")), - new TransferWizardModel(Guid.NewGuid(), "1087, Budapest, Százados út 30/a", "Nyugati Pályaudvar", DateTime.UtcNow.AddDays(2), 3, "John Malkovich", "+13021234567", "john.malkovich@stars.com", new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "James Doe")), - new TransferWizardModel(Guid.NewGuid(), "1087, Budapest, Százados út 30/a", "Nyugati Pályaudvar", DateTime.UtcNow.AddDays(4).AddHours(-6), 3, "John Malkovich", "+13021234567", "john.malkovich@stars.com", new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "James Doe")), - new TransferWizardModel(Guid.NewGuid(), "1087, Budapest, Százados út 30/a", "Nyugati Pályaudvar", DateTime.UtcNow.AddDays(7), 3, "John Malkovich", "+13021234567", "john.malkovich@stars.com", new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "Joan Doe")), - new TransferWizardModel(Guid.NewGuid(), "1087, Budapest, Százados út 30/a", "Nyugati Pályaudvar", DateTime.UtcNow.AddDays(1), 3, "John Malkovich", "+13021234567", "john.malkovich@stars.com", new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "James Doe")), - new TransferWizardModel(Guid.NewGuid(), "1087, Budapest, Százados út 30/a", "Nyugati Pályaudvar", DateTime.UtcNow.AddDays(6).AddHours(3), 3, "John Malkovich", "+13021234567", "john.malkovich@stars.com", new DriverModel(Guid.NewGuid(), Guid.NewGuid(), "John Doe")) - - }; void SendMail(TransferWizardModel Item) { @@ -222,7 +257,6 @@ void CancelCreateClick() { - PopupVisible = false; } void EulaPopupClosed() @@ -266,7 +300,6 @@ newEmployee.FullName = "ghjgkg hkgh ghjkghgkjgh"; newEmployee.PhoneNumber = "+13021234567"; newEmployee.EmailAddress = "ghjgkg hkgh ghjkghgkjgh"; - newEmployee.Driver = drivers.FirstOrDefault(); } } @@ -281,20 +314,17 @@ //modify transferData where transferData.Id == e.EditModel.Id //get transfer from TransferData by Id - foreach (var transferToModify in (TransferWizardModel[])TransferData) + foreach (var transferToModify in (List)TransferData) { myModel = (TransferWizardModel)e.EditModel; if (transferToModify.Id == myModel.Id) { - transferToModify.Driver = myModel.Driver; + //transferToModify.Driver = myModel.Driver; } } - - //await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel); - await UpdateDataAsync(); } async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) @@ -311,18 +341,53 @@ logToBrowserConsole.LogToBC("orderData grid refreshed"); } - protected override void OnInitialized() + protected override async Task OnInitializedAsync() { + Statuses = new List + { + new TransferStatusModel(Convert.ToInt16(TransferStatusType.OrderSubmitted), "Order submitted"), + new TransferStatusModel(Convert.ToInt16(TransferStatusType.OrderConfirmed), "Order confirmed"), + new TransferStatusModel(Convert.ToInt16(TransferStatusType.AssignedToDriver), "Assigned to driver"), + new TransferStatusModel(Convert.ToInt16(TransferStatusType.DriverConfirmed), "Driver confirmed"), + new TransferStatusModel(Convert.ToInt16(TransferStatusType.DriverEnRoute), "Driver enroute"), + new TransferStatusModel(Convert.ToInt16(TransferStatusType.PassengerPickup), "Passenger in car"), + new TransferStatusModel(Convert.ToInt16(TransferStatusType.Finished), "Finished"), + new TransferStatusModel(Convert.ToInt16(TransferStatusType.UserCanceled), "User cancelled"), + new TransferStatusModel(Convert.ToInt16(TransferStatusType.AdminDenied), "Admin cancelled") + }; + TransferData = (await transferDataService.GetTransfersAsync()).OrderBy(x => x.TransferStatusType).ThenByDescending(x => x.OrderId).ToList(); base.OnInitialized(); - - - } void ColumnChooserButton_Click() { - Grid.ShowColumnChooser(); + Grid2.ShowColumnChooser(); } + IGrid Grid2 { get; set; } + object MasterGridData { get; set; } + bool AutoCollapseDetailRow { get; set; } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + Grid2.ExpandDetailRow(0); + } + } + void AutoCollapseDetailRow_Changed(bool newValue) + { + AutoCollapseDetailRow = newValue; + if (newValue) + { + Grid2.BeginUpdate(); + Grid2.CollapseAllDetailRows(); + Grid2.ExpandDetailRow(0); + Grid2.EndUpdate(); + } + } } + + + diff --git a/TIAMSharedUI/Resources/MyResources.Designer.cs b/TIAMSharedUI/Resources/MyResources.Designer.cs index 08e6429b..6812fb29 100644 --- a/TIAMSharedUI/Resources/MyResources.Designer.cs +++ b/TIAMSharedUI/Resources/MyResources.Designer.cs @@ -186,6 +186,15 @@ namespace TIAMSharedUI.Resources { } } + /// + /// Looks up a localized string similar to FormulaOne. + /// + public static string NavMenu_FormulaOne { + get { + return ResourceManager.GetString("NavMenu.FormulaOne", resourceCulture); + } + } + /// /// Looks up a localized string similar to Home. /// diff --git a/TIAMSharedUI/Resources/MyResources.hu.resx b/TIAMSharedUI/Resources/MyResources.hu.resx index f6f9f667..b9c75866 100644 --- a/TIAMSharedUI/Resources/MyResources.hu.resx +++ b/TIAMSharedUI/Resources/MyResources.hu.resx @@ -159,6 +159,9 @@ Események + + Forma1 + Főoldal diff --git a/TIAMSharedUI/Resources/MyResources.resx b/TIAMSharedUI/Resources/MyResources.resx index 86c56661..966fdb1b 100644 --- a/TIAMSharedUI/Resources/MyResources.resx +++ b/TIAMSharedUI/Resources/MyResources.resx @@ -159,6 +159,9 @@ Events + + FormulaOne + Home diff --git a/TIAMSharedUI/Shared/Components/Navbar.razor b/TIAMSharedUI/Shared/Components/Navbar.razor index 3c33e035..eb225ada 100644 --- a/TIAMSharedUI/Shared/Components/Navbar.razor +++ b/TIAMSharedUI/Shared/Components/Navbar.razor @@ -5,8 +5,11 @@