TourIAm/TIAMSharedUI/Pages/User/CardComponents/CompanyCardComponent.razor

138 lines
4.3 KiB
Plaintext

@using BlazorAnimation
@using TIAM.Core.Enums
@using TIAM.Entities.Profiles
@using TIAM.Entities.ServiceProviders
@using TIAM.Entities.Transfers
@using TIAM.Entities.Users
@using TIAM.Models.Dtos.Users
@using TIAM.Services
@using TIAMSharedUI.Shared.Components.Cards
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI
@using TIAMWebApp.Shared.Application.Models.PageModels
@using TIAMWebApp.Shared.Application.Services
@inject IServiceProviderDataService ServiceProviderDataService
@inject IUserDataService UserDataService
@inject AdminSignalRClient AdminSignalRClient
@inject IJSRuntime JsRuntime
<div class="e-card cw-480">
<div class="e-main d-flex align-items-center">
<div class="flex-shrink-0">
<img class="e-photo" src="_content/TIAMSharedUI/images/defaultavatar_60.png" alt="" />
</div>
<div class="e-info flex-grow-1 ms-3">
<div class="e-name">@($"{Context.Name}")</div>
<p class="e-title"><i class="fa-solid fa-at"></i> @Context.Profile.EmailAddress</p>
<p class="e-title"><i class="fa-solid fa-location-dot"></i> @Context.Profile.Address.AddressText</p>
</div>
</div>
<hr class="hr" />
<div class="row">
<div class="col-12 col-md-6">
<h4>Information</h4>
@RenderDetailsItem("fa-solid fa-user", "Contact Name", companyProfile.FullName)
@RenderDetailsItem("fa-solid fa-circle-info", "Description", companyProfile.Description)
</div>
<div class="col-12 col-md-6">
<h4>Services in this company</h4>
@{
if (Context.Products.Count() > 0)
{
<DxAccordion SizeMode="@SizeMode.Small" ExpandMode="ExpandMode"
ExpandCollapseAction="ExpandCollapseAction"
AnimationType="LayoutAnimationType.Slide">
<Items>
@foreach (var item in Context.Products)
{
<DxAccordionItem Text=@($"{item.Name}")>
<ContentTemplate>
<div class="py-3 px-3">
<ProductCardComponent DataChanged="RefreshComponent" Context="@item" />
</div>
</ContentTemplate>
</DxAccordionItem>
}
</Items>
</DxAccordion>
}
}
</div>
<p>@msg</p>
</div>
</div>
@code {
[Parameter] public Company Context { get; set; }
[Parameter] public EventCallback<string> DataChanged { get; set; }
AccordionExpandMode ExpandMode { get; set; } = AccordionExpandMode.SingleOrNone;
AccordionExpandCollapseAction ExpandCollapseAction { get; set; } = AccordionExpandCollapseAction.HeaderClick;
string msg;
private bool isSaveActive = false;
private Profile companyProfile = new Profile();
void OnPasswordConfirmed(string password)
{
}
protected async Task ChangeName()
{
isSaveActive = false;
await DataChanged.InvokeAsync(msg);
}
protected override async Task OnInitializedAsync()
{
var CompanyProfiles = await AdminSignalRClient.GetByIdAsync<List<Profile>>(SignalRTags.GetProfileById, Context.ProfileId);
if (CompanyProfiles != null)
{
companyProfile = CompanyProfiles[0];
}
await base.OnInitializedAsync();
}
protected override async Task OnParametersSetAsync()
{
await base.OnParametersSetAsync();
}
RenderFragment RenderDetailsItem(string iconCssClass, string caption, string value)
{
return @<div class="d-flex m-1 align-items-center">
<div class="icon-container flex-shrink-0">
<span class="dxbl-image m-1 @iconCssClass"></span>
</div>
<div class="text-container m-1 flex-grow-1 ms-2">
<label>@caption:</label>
<div>@value</div>
</div>
</div>;
}
private void RefreshComponent()
{
StateHasChanged();
}
}