Company page

This commit is contained in:
Adam 2024-07-02 15:17:36 +02:00
parent d1a8f706d4
commit 7a6fe38b9f
8 changed files with 237 additions and 19 deletions

View File

@ -46,7 +46,7 @@ namespace TIAM.Database.Test
//_userDal = new UserDal(_mockContext.Object);
}
[TestMethod]
//[TestMethod]
public async Task ConvertOldPassword()
{
//var loginService = new LoginService(Dal, AppSettingsConfiguration);

View File

@ -346,7 +346,29 @@ namespace TIAM.Database.DataLayers.Admins
//}
//14. (IserviceProviderDataService) Update service provider
public Task<bool> UpdateCompanyAsync(Company company) => TransactionAsync(ctx => ctx.UpdateCompany(company));
public Task<bool> UpdateCompanyAsync(Company company)
{
var result = NewUpdateCompanyAsync(company);
if (result.Result != null || (result.Result).Id != Guid.Empty)
{
return Task.FromResult(true);
}
else
{
return Task.FromResult(false);
}
}
public Task<Company?> NewUpdateCompanyAsync(Company company) => UpdateSafeAsync(company, (ctx, safeCompany) => ctx.UpdateCompany(safeCompany));
public Task<bool> UpdateCompanyAsync(Company company, Profile profile)
=> TransactionAsync(ctx =>
{
ctx.UpdateProfile(profile);
ctx.SaveChanges();
return ctx.UpdateCompany(company);
});
//13. (IserviceProviderDataService) delete service provider
public Task<bool> RemoveCompanyAsync(Guid companyId) => TransactionAsync(ctx => ctx.RemoveProductsByCompanyId(companyId) && ctx.RemoveCompany(companyId));

View File

@ -15,7 +15,7 @@
<div class="container">
<HotelComponent Id="@id"></HotelComponent>
<HotelComponent Id="@Guid.Parse(id)"></HotelComponent>
<!-- Stats admin-->
<hr />
@ -24,7 +24,7 @@
@code {
[Parameter] public Guid id { get; set; }
[Parameter] public string id { get; set; }
bool isUserLoggedIn;
int userType = 0;
@ -35,7 +35,7 @@
{
return;
}
var check = SessionService.User.UserModelDto.UserProductMappings.Any(x => x.ProductId == id);
var check = SessionService.User.UserModelDto.UserProductMappings.Any(x => x.ProductId == Guid.Parse(id));
if (!check)
{
return;

View File

@ -0,0 +1,183 @@
@page "/user/serviceprovider/{id}"
@using AyCode.Core
@using AyCode.Services.Loggers
@using BlazorAnimation
@using TIAM.Entities.ServiceProviders
@using TIAM.Resources
@using TIAM.Services
@using TIAMSharedUI.Pages.User.SysAdmins
@using TIAMSharedUI.Shared
@using TIAMSharedUI.Shared.Components.Grids
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Services
@using TIAMWebApp.Shared.Application.Utility
@layout AdminLayout
@inject NavigationManager navigationManager
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject IStringLocalizer<TIAMResources> localizer
@inject IServiceProviderDataService serviceProviderDataService
@inject IUserDataService userDataService
@inject ISessionService sessionService
@inject AdminSignalRClient AdminSignalRClient;
<PageTitle>Admin - Companies</PageTitle>
<div class="text-center m-5">
<h1>@CompanyName</h1>
<h2 style="font-size:small">Manage your service provider details</h2>
</div>
<div class="container-fluid">
<div class="row">
<div class=" col-12">
<Animation Effect="@Effect.Pulse" Speed="@Speed.Fast" Delay="@TimeSpan.FromMilliseconds(500)">
<div class="card">
<DxTabs>
<DxTabPage Text="Details">
@if (resultCompany != null)
{
<div class="card">
<div class="card-header">
<h2>@(isEditMode ? "Edit Service Provider" : "Service Provider Details")</h2>
</div>
<div class="card-body">
@if (isEditMode)
{
<EditForm Model="@resultCompany">
<DataAnnotationsValidator />
<div class="form-group">
<label for="name">Name</label>
<InputText id="name" class="form-control" @bind-Value="resultCompany.Name" />
</div>
<div class="form-group">
<label for="email">Public Email</label>
<InputText id="email" class="form-control" @bind-Value="resultCompany.Profile.EmailAddress" />
</div>
<div class="form-group">
<label for="publicName">Public name</label>
<InputText id="publicName" class="form-control" @bind-Value="resultCompany.Profile.Name" />
</div>
<div class="form-group">
<label for="profileDescription">Public description</label>
<InputText id="profileDescription" class="form-control" @bind-Value="resultCompany.Profile.Description" />
</div>
<button type="button" class="btn btn-primary" @onclick="Save">Save</button>
<button type="button" class="btn btn-secondary" @onclick="() => isEditMode = false">Cancel</button>
</EditForm>
}
else
{
<div class="p-5">
<dl class="row">
<dt class="col-sm-3">Name</dt>
<dd class="col-sm-9">@resultCompany.Name</dd>
<dt class="col-sm-3">Affiliate ID</dt>
<dd class="col-sm-9">@resultCompany.AffiliateId</dd>
<dt class="col-sm-3">Created</dt>
<dd class="col-sm-9">@resultCompany.Created</dd>
<dt class="col-sm-3">Modified</dt>
<dd class="col-sm-9">@resultCompany.Modified</dd>
</dl>
</div>
<div class="p-5">
<dl class="row">
<dt class="col-sm-3">Name</dt>
<dd class="col-sm-9">@resultCompany.Profile.Name</dd>
<dt class="col-sm-3">Public email address</dt>
<dd class="col-sm-9">@resultCompany.Profile.EmailAddress</dd>
<dt class="col-sm-3">Description</dt>
<dd class="col-sm-9">@resultCompany.Profile.Description</dd>
<dt class="col-sm-3">Address</dt>
<dd class="col-sm-9">@resultCompany.Profile.Address.AddressText</dd>
</dl>
</div>
<button type="button" class="btn btn-primary" @onclick="Edit">Edit</button>
}
</div>
</div>
}
else
{
<p>Loading...</p>
}
</DxTabPage>
<DxTabPage Text="Profile">
<ProfileGridComponent ParentData="resultCompany" />
</DxTabPage>
<DxTabPage Text="Address">
<AddressDetailGridComponent ParentData="resultCompany.Profile" />
</DxTabPage>
<DxTabPage Text="Services">
<ProductDetailGridComponent GetAllTag="SignalRTags.GetProductsByOwnerId" ContextId="@resultCompany.Id" ParentData="@resultCompany" />
</DxTabPage>
</DxTabs>
</div>
</Animation>
</div>
</div>
</div>
@code {
[Parameter]
public string Id { get; set; }
public string ProfileUrl => $"/images/serviceprovider/{Id}.png";
private LoggerClient<ServiceProvider> _logger;
private Company resultCompany;
private string CompanyName;
private bool isEditMode = false;
private void Edit()
{
isEditMode = true;
}
private async Task Save()
{
_logger.Debug($"Saving {resultCompany.Name}");
var result = await serviceProviderDataService.UpdateServiceProviderAsync(resultCompany);
isEditMode = false;
navigationManager.NavigateTo($"/user/serviceprovider/{resultCompany.Id}");
}
protected override void OnInitialized()
{
base.OnInitialized();
_logger = new LoggerClient<ServiceProvider>(LogWriters.ToArray());
}
protected override async Task OnParametersSetAsync()
{
if (string.IsNullOrEmpty(Id))
{
navigationManager.NavigateTo("/user/properties");
}
else
{
resultCompany = await serviceProviderDataService.GetServiceProviderByIdAsync(Guid.Parse(Id));
CompanyName = resultCompany.Name;
}
base.OnParametersSet();
}
}

View File

@ -50,18 +50,20 @@
EditMode="GridEditMode.EditRow">
<Columns>
<DxGridCommandColumn Width="160px" />
<DxGridDataColumn FieldName="Id" MinWidth="80">
<DxGridDataColumn FieldName="Id" Visible="false" MinWidth="130" />
<DxGridDataColumn FieldName="Name" MinWidth="80" />
<DxGridDataColumn FieldName="AffiliateId" MinWidth="80" />
<DxGridDataColumn FieldName="Id" Width="130">
<CellDisplayTemplate>
<a class="d-block text-left" href="user/serviceprovider/@context.Value.ToString()">@context.Value</a>
<a class="btn btn-primary" href="user/serviceprovider/@context.Value.ToString()">Manage</a>
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn Caption="Address" FieldName="Profile.Address.AddressText" MinWidth="80" />
<DxGridDataColumn FieldName="Name" MinWidth="80" />
<DxGridDataColumn Caption="Address" FieldName="Profile.Address.AddressText" Width="280" />
</Columns>
<DetailRowTemplate>
@{
<p>@(((Company)context.DataItem).Profile.Address.AddressText)</p>
<p>Address: @(((Company)context.DataItem).Profile.Address.AddressText)</p>
}
</DetailRowTemplate>
</CompanyGrid>

View File

@ -1,4 +1,4 @@
@page "/user/serviceprovider/{id}"
@page "/user/serviceproviderold/{id}"
@using AyCode.Core
@using AyCode.Services.Loggers
@using TIAM.Entities.ServiceProviders
@ -21,14 +21,14 @@
<PageTitle>Admin - Companies</PageTitle>
<div class="text-center m-5">
<h1>Company</h1>
<h1>@CompanyName</h1>
<h2 style="font-size:small">Manage your service provider details</h2>
</div>
<div class="container">
<div class="w-100 ch-220">
<CompanyByIdDetailGrid @ref="_gridCompany"
Context="myContext"
<CompanyByIdDetailGrid @ref="_gridCompany"
Context="myContext"
ContextIds="@CompanyId"
Logger="_logger"
SignalRClient="AdminSignalRClient"
@ -101,6 +101,8 @@
private LoggerClient<ServiceProvider> _logger;
private string CompanyName;
protected override void OnInitialized()
{
base.OnInitialized();
@ -116,16 +118,20 @@
else
{
CompanyId[0] = Guid.Parse(Id);
var result = serviceProviderDataService.GetServiceProviderByIdAsync(Guid.Parse(Id));
}
base.OnParametersSet();
}
void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
{
//TODO mark non active partners
}
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{
if (!e.IsNew)

View File

@ -29,6 +29,7 @@
GetAllMessageTag="GetAllTag"
Logger="_logger"
SignalRClient="AdminSignalRClient"
CustomizeEditModel="CustomizeEditModel"
OnGridEditModelSaving="DataItemSaving"
OnGridItemDeleting="DataItemDeleting"
OnGridItemChanged="DataItemChanged"
@ -73,7 +74,10 @@
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.Price) ColSpanMd="4">
@editFormContext.GetEditor("Price")
</DxFormLayoutItem>
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.ProductDescription) ColSpanMd="4">
<DxFormLayoutItem Caption="Company Id" ColSpanMd="4">
<p>@(((Product)editFormContext.EditModel).ServiceProviderId)</p>
</DxFormLayoutItem>
<DxFormLayoutItem Caption=@Localizer.GetString(ResourceKeys.ProductDescription) ColSpanMd="12">
@editFormContext.GetEditor("Description")
</DxFormLayoutItem>
@ -135,7 +139,7 @@
if (e.IsNew)
{
_logger.Debug($"DataItemSaving");
// product.ServiceProviderId = ((Company)ParentData).Id;
// var profileId = Guid.NewGuid();
// product.Profile = new Profile(profileId, product.Name);
// product.ProfileId = profileId;
@ -152,7 +156,7 @@
}
_logger.Debug($"Saving: {product.Name}, {product.ServiceProviderId}");
//var result = serviceProviderDataService.CreateProductAsync((Product)e.EditModel);
//_logger.Debug($"saved product: {product.ServiceProviderId}");
}
@ -172,7 +176,8 @@
newProduct.ServiceProviderId = (Guid)ContextId!;
newProduct.Price = 0;
newProduct.ProductType = TIAM.Core.Enums.ProductType.Hotel;
newProduct.Description = "Type a description";
newProduct.Description = "Type a description";
}
}

View File

@ -22,5 +22,5 @@ public class CompanyDetailGrid : CompanyGrid
if (isFirst)
{
}
}
}
}