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() 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) 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 GetTransfersAsync = 5;
public const int GetPropertiesByOwnerIdAsync = 6; public const int GetPropertiesByOwnerIdAsync = 6;
public const int UpdateTransferAsync = 7; public const int UpdateTransferAsync = 7;
public const int GetCompaniesAsync = 8;
} }

View File

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

View File

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

View File

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

View File

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

View File

@ -1,9 +1,11 @@
@page "/user/companies" @page "/user/companies"
@using AyCode.Core.Helpers
@using BlazorAnimation @using BlazorAnimation
@using TIAM.Core.Enums @using TIAM.Core.Enums
@using TIAM.Entities.ServiceProviders @using TIAM.Entities.ServiceProviders
@using TIAM.Entities.Transfers @using TIAM.Entities.Transfers
@using TIAM.Resources @using TIAM.Resources
@using TIAM.Services
@using TIAMSharedUI.Pages.Components @using TIAMSharedUI.Pages.Components
@using TIAMSharedUI.Shared @using TIAMSharedUI.Shared
@using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Interfaces
@ -22,6 +24,7 @@
@inject IStringLocalizer<TIAMResources> localizer @inject IStringLocalizer<TIAMResources> localizer
@inject IWizardProcessor wizardProcessor @inject IWizardProcessor wizardProcessor
@inject IServiceProviderDataService serviceProviderDataService @inject IServiceProviderDataService serviceProviderDataService
@inject IUserDataService userDataService
@inject ISessionService sessionService @inject ISessionService sessionService
@inject DevAdminSignalClient devAdminSignalClient; @inject DevAdminSignalClient devAdminSignalClient;
<PageTitle>Admin - Companies</PageTitle> <PageTitle>Admin - Companies</PageTitle>
@ -31,9 +34,24 @@
<h2 style="font-size:small">Manage transfers here!</h2> <h2 style="font-size:small">Manage transfers here!</h2>
</div> </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" <DxPopup CssClass="popup-demo-events"
@bind-Visible="@PopupVisible" @bind-Visible="@SendMailPopupVisible"
ShowFooter="true" ShowFooter="true"
CloseOnEscape="true" CloseOnEscape="true"
CloseOnOutsideClick="false" CloseOnOutsideClick="false"
@ -77,29 +95,32 @@
KeyFieldName="Id"> KeyFieldName="Id">
<Columns> <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="Id" ShowInColumnChooser="false" SortIndex="0" Visible="false" />
<DxGridDataColumn FieldName="Name" /> <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="AffiliateId" />
<DxGridDataColumn FieldName="CommissionPercent" /> <DxGridDataColumn FieldName="CommissionPercent" />
<DxGridDataColumn FieldName="Created" /> <DxGridDataColumn FieldName="Created" />
@* <DxGridDataColumn FieldName="ContactEmail"> @* <DxGridDataColumn FieldName="ContactEmail">
<CellDisplayTemplate>
@{ </DxGridDataColumn> *@
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" />
</Columns> </Columns>
<DetailRowTemplate> <DetailRowTemplate>
<CompaniesNestedUserProductMapping Customer="(TIAM.Entities.ServiceProviders.Company)context.DataItem" KeyboardNavigationEnabled="true" /> <CompaniesNestedUserProductMapping CurrentCompany="(TIAM.Entities.ServiceProviders.Company)context.DataItem" KeyboardNavigationEnabled="true" />
</DetailRowTemplate> </DetailRowTemplate>
<EditFormTemplate Context="EditFormContext"> <EditFormTemplate Context="EditFormContext">
@{ @{
@ -109,6 +130,9 @@
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="6" ColSpanLg="6" ColSpanSm="12"> <DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="6" ColSpanLg="6" ColSpanSm="12">
@EditFormContext.GetEditor("Name") @EditFormContext.GetEditor("Name")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="6" ColSpanLg="6" ColSpanSm="12">
@EditFormContext.GetEditor("CommissionPercent")
</DxFormLayoutItem>
</DxFormLayout> </DxFormLayout>
@ -116,7 +140,7 @@
</DxGrid> </DxGrid>
</div> </div>
@ -135,9 +159,10 @@
//public Transfer myModel = new Transfer(); //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 = public List<string> IgnoreList =
[ [
"ReceiverEmailAddress", "ReceiverEmailAddress",
@ -147,10 +172,10 @@
"SenderFullName", "SenderFullName",
"SenderId", "SenderId",
"ContextId", "ContextId",
]; ];
private MessageWizardModel _messageWizardModel = new(); private MessageWizardModel _messageWizardModel = new();
private string UpdateOwnerIdText;
DateTime StartDate { get; set; } = DateTime.Today; DateTime StartDate { get; set; } = DateTime.Today;
DxSchedulerDataStorage _dataStorage = new(); DxSchedulerDataStorage _dataStorage = new();
@ -163,13 +188,41 @@
_messageWizardModel.SenderEmailAddress = ""; _messageWizardModel.SenderEmailAddress = "";
_messageWizardModel.ReceiverEmailAddress = ""; _messageWizardModel.ReceiverEmailAddress = "";
_messageWizardModel.ReceiverFullName = ""; _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() void CancelCreateClick()
{ {
PopupVisible = false; SendMailPopupVisible = false;
} }
void EulaPopupClosed() void EulaPopupClosed()
{ {
@ -189,7 +242,7 @@
{ {
var messageModel = result as MessageWizardModel; var messageModel = result as MessageWizardModel;
messageModel.ContextId = _messageWizardModel.ContextId; messageModel.ContextId = _messageWizardModel.ContextId;
//messageModel.SenderId = sessionService.User.UserId; //messageModel.SenderId = sessionService.User.UserId;
string FormatEmailContent() string FormatEmailContent()
{ {
@ -197,7 +250,7 @@
<html> <html>
<body> <body>
<p>Dear {messageModel.SenderFullName},</p> <p>Dear {messageModel.SenderFullName},</p>
<p>{messageModel.Content}:</p> <p>{messageModel.Content}:</p>
<p>Best regards,<br/>Tour I Am team</p> <p>Best regards,<br/>Tour I Am team</p>
</body> </body>
</html>"; </html>";
@ -220,16 +273,16 @@
{ {
if (!e.IsNew) if (!e.IsNew)
{ {
} }
else else
{ {
var transferEditModel = (Company)e.EditModel; //TODO not valid cast var transferEditModel = (Company)e.EditModel; //TODO not valid cast
transferEditModel.Id = Guid.NewGuid(); transferEditModel.Id = Guid.NewGuid();
transferEditModel.AffiliateId = Guid.NewGuid(); transferEditModel.AffiliateId = Guid.NewGuid();
transferEditModel.Name = "Company name"; transferEditModel.Name = "Company name";
transferEditModel.OwnerId = Guid.Empty; transferEditModel.OwnerId = Guid.Empty;
transferEditModel.ProfileId = Guid.NewGuid(); transferEditModel.ProfileId = Guid.NewGuid();
} }
} }
@ -279,7 +332,8 @@
async Task UpdateDataAsync() async Task UpdateDataAsync()
{ {
ServiceProviderDataList = await serviceProviderDataService.GetPropertiesByOwnerIdAsync(sessionService.User.UserId); ServiceProviderDataList = await serviceProviderDataService.GetServiceProvidersAsync();
//StateHasChanged();
_logger.Info("orderData grid refreshed"); _logger.Info("orderData grid refreshed");
} }
@ -287,19 +341,20 @@
{ {
_logger = new LoggerClient<ManageServiceProviders>(LogWriters.ToArray()); _logger = new LoggerClient<ManageServiceProviders>(LogWriters.ToArray());
// devAdminSignalClient.SendRequestToServerAsync(SignalRTags.GetTransfersAsync, responseBytes => await UpdateDataAsync();
// {
// var transfers = responseBytes.MessagePackTo<string>(ContractlessStandardResolver.Options).JsonTo<List<Transfer>>();
// ServiceProviderDataList = transfers; //var transfers = await devAdminSignalClient.GetAllAsync<List<Transfer>>(SignalRTags.GetTransfersAsync);
// StateHasChanged(); //InitializeDataSources(transfers ?? []);
// }).Forget();
base.OnInitialized();
//InitializeDataSources(await transferDataService.GetTransfersAsync());
base.OnInitializedAsync();
} }
void ColumnChooserButton_Click() void ColumnChooserButton_Click()
{ {

View File

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

View File

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

View File

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

View File

@ -11,6 +11,7 @@ using System.ServiceModel.Channels;
using TIAM.Entities.Transfers; using TIAM.Entities.Transfers;
using TIAM.Services; using TIAM.Services;
using TIAMWebApp.Server.Controllers; using TIAMWebApp.Server.Controllers;
using TIAM.Entities.ServiceProviders;
namespace TIAMWebApp.Server.Services; 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); 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; return;
} }
catch (Exception ex) catch (Exception ex)

View File

@ -123,9 +123,12 @@ namespace TIAMWebApp.Shared.Application.Services
} }
//16. //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. //24.