@page "/public/transfer/{referralId:guid}/{productId:guid}" @using AyCode.Core.Consts @using AyCode.Core.Helpers @using TIAM.Entities.Products @using TIAM.Entities.ServiceProviders @using TIAM.Entities.Transfers @using TIAM.Services @using TIAMSharedUI.Pages.Components.EditComponents @using TIAMSharedUI.Shared @using AyCode.Services.Loggers @using TIAMWebApp.Shared.Application.Interfaces; @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels @using TIAMWebApp.Shared.Application.Models.PageModels @using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Utility @using AyCode.Core.Extensions @layout AdminLayout @inject IPopulationStructureDataProvider DataProvider @inject ISessionService SessionService @inject IUserDataService UserDataService @inject IEnumerable LogWriters @inject AdminSignalRClient _adminSignalRClient @inject NavigationManager navManager Create transfer

Create transfer

Order a new transfer here!

Partner:

@SelectedHotel

Reload
@code { [Parameter] public Guid referralId { get; set; } [Parameter] public Guid productId { get; set; } private LoggerClient _logger; private TransferWizardModel Data = new(); private Product SelectedHotel; public List TransferIgnorList = new List { nameof(TransferWizardModel.Id), nameof(TransferWizardModel.UserId), nameof(TransferWizardModel.ProductId), nameof(TransferWizardModel.FirstName), nameof(TransferWizardModel.LastName), nameof(TransferWizardModel.UserProductMappingId), nameof(TransferWizardModel.UserProductToCarId), nameof(TransferWizardModel.ReferralId), nameof(TransferWizardModel.Price) }; private bool isReloadVisible = false; protected override void OnInitialized() { _logger = new LoggerClient(LogWriters.ToArray()); Data = new TransferWizardModel(); base.OnInitialized(); } protected override async Task OnParametersSetAsync() { if(!productId.IsNullOrEmpty()) { var result = await _adminSignalRClient.GetByIdAsync(SignalRTags.GetProductById, productId); _logger.Debug($"Current product: {result.Name}"); if (result != null) { SelectedHotel = result; } else { SelectedHotel = null; } } _logger.Debug($"OnParameterSet, going forward"); if (!referralId.IsNullOrEmpty()) { //check if storage has some other referralId already TODO //if not, store referralId in device for 30 days (?) //check if user is logged in if (SessionService.IsAuthenticated) { if (SessionService.User != null) { if(SessionService.User.UserModelDto.UserDto.RefferalId == null) { //update user referralId } } } } await base.OnParametersSetAsync(); } public async Task SubmitForm(object result) { var valami = ((TransferWizardModel)result).CopyToTransfer(); valami.Id = Guid.NewGuid(); valami.ProductId = SelectedHotel.Id; var user = await UserDataService.GetUserByEmailAsync(valami.ContactEmail); if (user != null && user.Id != Guid.Empty) { //user exists already var userDetail = await UserDataService.GetUserDetailByIdAsync(user.Id); valami.ReferralId = userDetail.UserDto.RefferalId; valami.UserId = userDetail.Id; } else { //create a guest user and set referralId var registration = new RegistrationModel(); //TODO: Refractor to userDataService // var random = new Random(); // const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; // var password = new string(Enumerable.Repeat(chars, 10) // .Select(s => s[random.Next(s.Length)]).ToArray()); var password = AcCharsGenerator.NewPassword(AcConst.MinPasswordLength, 16); registration.Email = valami.ContactEmail; registration.PhoneNumber = valami.ContactPhone; registration.Password = password; //get list with one member! var productOwner = await _adminSignalRClient.GetByIdAsync>(SignalRTags.GetCompaniesById, SelectedHotel.ServiceProviderId); registration.ReferralId = productOwner[0].AffiliateId; var createResult = await UserDataService.CreateGuestUser(registration); if(createResult.isSuccess) { if (createResult.user != null) { valami.UserId = createResult.user.Id; } } _logger.Info("New user created added"); } //valami.ProductId = SessionService.User.UserId; //TODO ProductID! // await WizardProcessor.ProcessWizardAsync(result.GetType(), result); var saveResult = await _adminSignalRClient.PostDataAsync(SignalRTags.AddTransfer, valami); _logger.Info($"Submitted form: {result.GetType().FullName}, {valami.ToAddress}, {valami.FromAddress}, {valami.ProductId}"); isReloadVisible = true; } public void Reload() { Data = new TransferWizardModel(); isReloadVisible = false; StateHasChanged(); } }