ManageServiceProvidrers

This commit is contained in:
Adam 2024-05-27 19:24:22 +02:00
parent e5457cba63
commit e3c26ccd35
12 changed files with 140 additions and 70 deletions

View File

@ -236,7 +236,12 @@ namespace TIAM.Database.DataLayers.Admins
public Task<List<Company>> GetServiceProvidersAsync()
{
return Context.ServiceProviders.ToListAsync();
return SessionAsync(ctx => ctx.ServiceProviders.ToList());
}
public Task<string> GetServiceProvidersAsyncJson()
{
return SessionAsync(ctx => ctx.ServiceProviders.ToJson());
}
public virtual Task<Company?> GetServiceProviderByIdAsync(Guid id)

View File

@ -7,4 +7,5 @@ public class SignalRTags : AcSignalRTags
public const int GetTransfersAsync = 5;
public const int GetPropertiesByOwnerIdAsync = 6;
public const int UpdateTransferAsync = 7;
public const int GetCompaniesAsync = 8;
}

View File

@ -422,6 +422,7 @@ new HeroSliderItem
"Destination",
"PickupAddress",
"ProductId",
"PaymentId",
"FlightNumber",
"TripDate",
"FirstName",

View File

@ -130,7 +130,8 @@
{
"Id",
"UserId",
"ProductId",
"ProductId",
"PaymentId",
"FirstName",
"LastName",
"UserProductMappingId",

View File

@ -97,6 +97,7 @@ new HeroSliderItem
"Id",
"UserId",
"ProductId",
"PaymentId",
"TripDate",
"FirstName",
"LastName",

View File

@ -30,23 +30,23 @@
<DxGridCommandColumn NewButtonVisible="true" Width="8%" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" GroupIndex="0" />
<DxGridDataColumn FieldName="UserId" />
<DxGridDataColumn FieldName="ProductId" Width="40%" />
<DxGridDataColumn FieldName="Permissions" />
<DxGridDataColumn FieldName="ServiceProviderId" Width="40%" />
@* <DxGridDataColumn FieldName="Permissions" /> *@
</Columns>
<EditFormTemplate Context="EditFormContext">
@{
var transfer2 = (UserProductMapping)EditFormContext.EditModel;
var transfer2 = (UserToCompany)EditFormContext.EditModel;
}
<DxFormLayout CssClass="w-100">
<DxFormLayoutItem Caption="UserId" ColSpanMd="4">
@EditFormContext.GetEditor("UserId")
</DxFormLayoutItem>
<DxFormLayoutItem Caption="Product:" ColSpanMd="4">
<DxComboBox Data="@_availableServices" TextFieldName="Name" @bind-Value="((UserProductMapping)EditFormContext.EditModel).ProductId" />
<DxFormLayoutItem Caption="User:" ColSpanMd="4">
<DxComboBox Data="@_availableUsers" TextFieldName="Name" @bind-Value="((UserToCompany)EditFormContext.EditModel).UserId" />
</DxFormLayoutItem>
<DxFormLayoutItem Caption="Permissions" ColSpanMd="4">
@* <DxFormLayoutItem Caption="Permissions" ColSpanMd="4">
@EditFormContext.GetEditor("Permissions")
</DxFormLayoutItem>
</DxFormLayoutItem> *@
@ -59,11 +59,11 @@
[Parameter]
public bool KeyboardNavigationEnabled { get; set; }
[Parameter]
public UserModelDtoDetail UserModelDtoDetail { get; set; }
public Company CurrentCompany { get; set; }
List<Company> _detailGridData;
List<UserToCompany> _detailGridData;
List<Company> _availableServices;
List<User> _availableUsers;
public UserModelDtoDetail UserInfo;
@ -71,10 +71,9 @@
protected override async Task OnInitializedAsync()
{
_logger = new LoggerClient<UserGrid_MasterDetail_NestedGrid_ServiceProviders>(LogWriters.ToArray());
_logger = new LoggerClient<CompaniesNestedUserProductMapping>(LogWriters.ToArray());
_detailGridData = UserModelDtoDetail.ServiceProviders ?? new List<Company>();
_availableServices = await ServiceProviderDataService.GetServiceProvidersAsync();
_detailGridData = CurrentCompany.UserToServiceProviders ?? new List<UserToCompany>();
_logger.Info($"DetailGridData: {_detailGridData.Count}");
}
@ -83,12 +82,11 @@
{
if (!e.IsNew) return;
var newProductMapping = new UserProductMapping
{
ProductId = Guid.NewGuid(),
UserId = UserModelDtoDetail.Id,
Permissions = 1
};
var newProductMapping = new UserToCompany
{
ServiceProviderId = CurrentCompany.Id,
UserId = Guid.Empty
};
e.EditModel = newProductMapping;
}
@ -97,7 +95,8 @@
{
if (e.IsNew)
//add new orderData to orderData array
_logger.Info("New orderData added");
_logger.Info("New user added to the company");
else
_logger.Info("orderData updated");

View File

@ -1,9 +1,11 @@
@page "/user/companies"
@using AyCode.Core.Helpers
@using BlazorAnimation
@using TIAM.Core.Enums
@using TIAM.Entities.ServiceProviders
@using TIAM.Entities.Transfers
@using TIAM.Resources
@using TIAM.Services
@using TIAMSharedUI.Pages.Components
@using TIAMSharedUI.Shared
@using TIAMWebApp.Shared.Application.Interfaces
@ -22,6 +24,7 @@
@inject IStringLocalizer<TIAMResources> localizer
@inject IWizardProcessor wizardProcessor
@inject IServiceProviderDataService serviceProviderDataService
@inject IUserDataService userDataService
@inject ISessionService sessionService
@inject DevAdminSignalClient devAdminSignalClient;
<PageTitle>Admin - Companies</PageTitle>
@ -31,9 +34,24 @@
<h2 style="font-size:small">Manage transfers here!</h2>
</div>
<DxPopup
@bind-Visible="@SetOwnerPopupVisible"
ShowFooter="true"
HeaderText="Set owner"
>
<BodyContentTemplate>
<DxTextBox CssClass="form-field" @Bind-Text="@UpdateOwnerIdText">
</DxTextBox>
</BodyContentTemplate>
<FooterContentTemplate>
<DxButton CssClass="popup-button my-1 ms-2" RenderStyle="ButtonRenderStyle.Primary" Text="OK" Click="@(() => SetOwnerPopupVisible = false)" />
@* <DxButton CssClass="popup-button my-1 ms-2" RenderStyle="ButtonRenderStyle.Secondary" Text="Cancel" Click="@(() => SetOwnerPopupVisible = false)" /> *@
</FooterContentTemplate>
</DxPopup>
<DxPopup CssClass="popup-demo-events"
@bind-Visible="@PopupVisible"
@bind-Visible="@SendMailPopupVisible"
ShowFooter="true"
CloseOnEscape="true"
CloseOnOutsideClick="false"
@ -77,29 +95,32 @@
KeyFieldName="Id">
<Columns>
<DxGridCommandColumn NewButtonVisible="false" Width="8%" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridCommandColumn NewButtonVisible="true" Width="8%" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" ShowInColumnChooser="false" SortIndex="0" Visible="false" />
<DxGridDataColumn FieldName="Name" />
<DxGridDataColumn FieldName="OwnerId" />
<DxGridDataColumn FieldName="OwnerId">
<CellDisplayTemplate>
@{
var keyField = context.Value;
var keyItem = (Company)context.DataItem;
string buttonText = "Set owner";
if(keyField == null)
{
<DxButton Click="() => SetOwnerPopup(keyItem)" Text="@buttonText" RenderStyle="ButtonRenderStyle.Primary" />
}
}
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn FieldName="AffiliateId" />
<DxGridDataColumn FieldName="CommissionPercent" />
<DxGridDataColumn FieldName="Created" />
@* <DxGridDataColumn FieldName="ContactEmail">
<CellDisplayTemplate>
@{
var keyField = context.Value;
var keyItem = (TiamServiceProvider)context.DataItem;
string buttonText = "Contact";
<DxButton Click="() => SendMail(keyItem.)" Text="@buttonText" RenderStyle="ButtonRenderStyle.Primary" />
}
</CellDisplayTemplate>
</DxGridDataColumn> *@
<DxGridDataColumn FieldName="PassengerCount" />
</DxGridDataColumn> *@
</Columns>
<DetailRowTemplate>
<CompaniesNestedUserProductMapping Customer="(TIAM.Entities.ServiceProviders.Company)context.DataItem" KeyboardNavigationEnabled="true" />
<CompaniesNestedUserProductMapping CurrentCompany="(TIAM.Entities.ServiceProviders.Company)context.DataItem" KeyboardNavigationEnabled="true" />
</DetailRowTemplate>
<EditFormTemplate Context="EditFormContext">
@{
@ -109,6 +130,9 @@
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="6" ColSpanLg="6" ColSpanSm="12">
@EditFormContext.GetEditor("Name")
</DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="6" ColSpanLg="6" ColSpanSm="12">
@EditFormContext.GetEditor("CommissionPercent")
</DxFormLayoutItem>
</DxFormLayout>
@ -116,7 +140,7 @@
</DxGrid>
</div>
@ -135,9 +159,10 @@
//public Transfer myModel = new Transfer();
public Dictionary<Guid, string> ServiceProviderDataList { get; set; }
public List<Company> ServiceProviderDataList { get; set; }
bool PopupVisible { get; set; }
bool SendMailPopupVisible { get; set; }
bool SetOwnerPopupVisible { get; set; }
public List<string> IgnoreList =
[
"ReceiverEmailAddress",
@ -147,10 +172,10 @@
"SenderFullName",
"SenderId",
"ContextId",
];
];
private MessageWizardModel _messageWizardModel = new();
private string UpdateOwnerIdText;
DateTime StartDate { get; set; } = DateTime.Today;
DxSchedulerDataStorage _dataStorage = new();
@ -163,13 +188,41 @@
_messageWizardModel.SenderEmailAddress = "";
_messageWizardModel.ReceiverEmailAddress = "";
_messageWizardModel.ReceiverFullName = "";
PopupVisible = true;
SendMailPopupVisible = true;
}
void SetOwnerPopup(Company item)
{
_logger.Info($"Setting owner of {item.OwnerId}, {item.Id}");
SetOwnerPopupVisible = true;
}
async Task<bool> SetOwner(Guid CompanyId)
{
//get user id from DB
var userModelDto = await userDataService.GetUserByEmailAsync(UpdateOwnerIdText);
//overwrite ServiceProvider ownerid
var target = await serviceProviderDataService.GetServiceProviderByIdAsync(CompanyId);
if (target == null)
{
return false;
}
else
{
target.OwnerId = userModelDto.Id;
var result = await serviceProviderDataService.UpdateServiceProviderAsync(target);
return result;
}
}
void CancelCreateClick()
{
PopupVisible = false;
SendMailPopupVisible = false;
}
void EulaPopupClosed()
{
@ -189,7 +242,7 @@
{
var messageModel = result as MessageWizardModel;
messageModel.ContextId = _messageWizardModel.ContextId;
//messageModel.SenderId = sessionService.User.UserId;
//messageModel.SenderId = sessionService.User.UserId;
string FormatEmailContent()
{
@ -197,7 +250,7 @@
<html>
<body>
<p>Dear {messageModel.SenderFullName},</p>
<p>{messageModel.Content}:</p>
<p>{messageModel.Content}:</p>
<p>Best regards,<br/>Tour I Am team</p>
</body>
</html>";
@ -220,16 +273,16 @@
{
if (!e.IsNew)
{
}
else
{
{
var transferEditModel = (Company)e.EditModel; //TODO not valid cast
transferEditModel.Id = Guid.NewGuid();
transferEditModel.AffiliateId = Guid.NewGuid();
transferEditModel.Name = "Company name";
transferEditModel.OwnerId = Guid.Empty;
transferEditModel.ProfileId = Guid.NewGuid();
transferEditModel.OwnerId = Guid.Empty;
transferEditModel.ProfileId = Guid.NewGuid();
}
}
@ -279,7 +332,8 @@
async Task UpdateDataAsync()
{
ServiceProviderDataList = await serviceProviderDataService.GetPropertiesByOwnerIdAsync(sessionService.User.UserId);
ServiceProviderDataList = await serviceProviderDataService.GetServiceProvidersAsync();
//StateHasChanged();
_logger.Info("orderData grid refreshed");
}
@ -287,19 +341,20 @@
{
_logger = new LoggerClient<ManageServiceProviders>(LogWriters.ToArray());
// devAdminSignalClient.SendRequestToServerAsync(SignalRTags.GetTransfersAsync, responseBytes =>
// {
// var transfers = responseBytes.MessagePackTo<string>(ContractlessStandardResolver.Options).JsonTo<List<Transfer>>();
await UpdateDataAsync();
// ServiceProviderDataList = transfers;
// StateHasChanged();
// }).Forget();
//var transfers = await devAdminSignalClient.GetAllAsync<List<Transfer>>(SignalRTags.GetTransfersAsync);
//InitializeDataSources(transfers ?? []);
base.OnInitialized();
//InitializeDataSources(await transferDataService.GetTransfersAsync());
base.OnInitializedAsync();
}
void ColumnChooserButton_Click()
{

View File

@ -94,6 +94,7 @@
<DxGridCommandColumn NewButtonVisible="false" Width="8%" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" ShowInColumnChooser="false" SortIndex="0" Visible="false" />
<DxGridDataColumn FieldName="OrderId" />
<DxGridDataColumn FieldName="PaymentId" />
<DxGridDataColumn FieldName="FromAddress" />
<DxGridDataColumn FieldName="ToAddress" />
<DxGridDataColumn FieldName="Appointment" DisplayFormat="f" />
@ -352,8 +353,8 @@
{
_logger.Info("orderData updated at id " + ((Transfer)e.EditModel).Id);
transfer = await devAdminSignalClient.UpdateAsync(SignalRTags.UpdateTransferAsync, (Transfer)e.EditModel);
//transfer = await transferDataService.UpdateTransferAsync((Transfer)e.EditModel);
//transfer = await devAdminSignalClient.UpdateAsync(SignalRTags.UpdateTransferAsync, (Transfer)e.EditModel);
transfer = await transferDataService.UpdateTransferAsync((Transfer)e.EditModel);
}
//get transfer from TransferData by Id

View File

@ -79,11 +79,9 @@ namespace TIAMWebApp.Server.Controllers
[AllowAnonymous]
[HttpGet]
[Route(APIUrls.GetServiceProvidersRouteName)]
public Task<List<Company>> GetServiceProviders()
{
//var users = await _serviceProviderDal.Ctx.Users.ToListAsync();//.GetUsersAsync();
//return users;
return _adminDal.GetServiceProvidersAsync();
public async Task<string> GetServiceProviders()
{
return await _adminDal.GetServiceProvidersAsyncJson();
}
//18.

View File

@ -405,7 +405,7 @@ namespace TIAMWebApp.Server.Controllers
[Route(APIUrls.UpdateTransferRouteName)]
public async Task<Transfer> UpdateTransfer(Transfer transferToModify)
{
_logger.Info("UpdateTransfer called!");
_logger.Info($"UpdateTransfer called! + {Request.ReadFormAsync()}");
await _adminDal.UpdateTransferAsync(transferToModify);
return transferToModify;

View File

@ -11,6 +11,7 @@ using System.ServiceModel.Channels;
using TIAM.Entities.Transfers;
using TIAM.Services;
using TIAMWebApp.Server.Controllers;
using TIAM.Entities.ServiceProviders;
namespace TIAMWebApp.Server.Services;
@ -75,6 +76,10 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController
await ResponseToCaller(messageTag, new SignalResponseMessage<string>(SignalResponseStatus.Success, transfer.ToJson()), requestId);
}
else if (messageTag == SignalRTags.GetCompaniesAsync)
{
await ResponseToCaller(messageTag, new SignalResponseMessage<string>(SignalResponseStatus.Success, await serviceProviderAPIController.GetServiceProviders()), requestId);
}
return;
}
catch (Exception ex)

View File

@ -123,9 +123,12 @@ namespace TIAMWebApp.Shared.Application.Services
}
//16.
public Task<List<Company>> GetServiceProvidersAsync()
public async Task<List<Company>> GetServiceProvidersAsync()
{
throw new NotImplementedException();
var companies = await _devAdminSignalClient.GetAllAsync<List<Company>>(SignalRTags.GetCompaniesAsync);
if (companies != null) _logger.DetailConditional($"companies: {string.Join("; ", companies.Count)}");
return companies;
}
//24.