191 lines
6.4 KiB
Plaintext
191 lines
6.4 KiB
Plaintext
@page "/user/createAndManageTransfer"
|
|
@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 TIAM.Core.Enums
|
|
@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 TIAMSharedUI.Shared.Components.BaseComponents
|
|
@inherits BasePageComponent
|
|
@layout AdminLayout
|
|
@inject IPopulationStructureDataProvider DataProvider
|
|
@inject IUserDataService UserDataService
|
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
|
@inject AdminSignalRClient _adminSignalRClient
|
|
@inject NavigationManager navManager
|
|
|
|
<PageTitle>Create transfer</PageTitle>
|
|
|
|
<div class="text-center m-5">
|
|
<h1>Create transfer</h1>
|
|
<h2 style="font-size:small">Order a new transfer here!</h2>
|
|
</div>
|
|
|
|
<!--We need to check if the user is owner of a swerviceprovider-->
|
|
|
|
<div class="container-fluid">
|
|
|
|
<div class="row d-flex justify-content-center">
|
|
<div class="col-12 col-md-6">
|
|
|
|
|
|
<h3>Selected Hotel:</h3>
|
|
<DxComboBox Data="@_hotels"
|
|
@bind-Value="@SelectedHotel"
|
|
SearchMode="@ListSearchMode.AutoSearch"
|
|
SearchFilterCondition="@ListSearchFilterCondition.Contains"
|
|
ListRenderMode="ListRenderMode.Virtual"
|
|
TextFieldName="Name"
|
|
CssClass="form-field"
|
|
SizeMode="SizeMode.Small">
|
|
</DxComboBox>
|
|
|
|
<div class="row py-3">
|
|
|
|
<DynamicEditForm Data="_data" CurrentProduct="@SelectedHotel" isEditing="true" IgnoreReflection="TransferIgnorList" OnSubmit="SubmitForm"></DynamicEditForm>
|
|
</div>
|
|
|
|
<div class="row py-3">
|
|
|
|
<DxButton RenderStyle="ButtonRenderStyle.Primary" Click="@Reload" Visible="@_isReloadVisible">Reload</DxButton>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
@code {
|
|
private LoggerClient<CreateAndManageTransfer> _logger;
|
|
private TransferWizardModel _data = new();
|
|
private List<Product> _hotels = [];
|
|
|
|
private static Product? _selectedHotel;
|
|
public Product? SelectedHotel
|
|
{
|
|
get => _selectedHotel;
|
|
set
|
|
{
|
|
if (_selectedHotel == value) return;
|
|
|
|
_selectedHotel = value;
|
|
StateHasChanged();
|
|
}
|
|
}
|
|
|
|
public List<string> TransferIgnorList =
|
|
[
|
|
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<CreateAndManageTransfer>(LogWriters.ToArray());
|
|
|
|
if (_sessionService.User != null)
|
|
{
|
|
if (_sessionService.User.UserModelDto.Products.Any())
|
|
{
|
|
if (_sessionService.User.UserModelDto.Products.Any(x => x.ProductType == ProductType.Hotel))
|
|
{
|
|
_hotels = _sessionService.GetHotels();
|
|
SelectedHotel = _hotels.FirstOrDefault(x => x.Id == _selectedHotel?.Id) ?? _hotels[0];
|
|
}
|
|
}
|
|
}
|
|
|
|
base.OnInitialized();
|
|
}
|
|
|
|
public async Task SubmitForm(object result)
|
|
{
|
|
if (_selectedHotel == null)
|
|
{
|
|
_logger.Error($"_selectedHotel == null");
|
|
return;
|
|
}
|
|
|
|
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<List<Company>>(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<TransferDestinationWizardModel>(result.GetType(), result);
|
|
|
|
var saveResult = await _adminSignalRClient.PostDataAsync<Transfer>(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();
|
|
}
|
|
|
|
|
|
}
|
|
|