@page "/User/{CodContact}/{IsContact:bool}" @attribute [Authorize] @using AutoMapper @using salesbook.Shared.Components.Layout @using salesbook.Shared.Core.Entity @using salesbook.Shared.Core.Interface @using salesbook.Shared.Components.Layout.Spinner @using salesbook.Shared.Core.Dto @using salesbook.Shared.Components.SingleElements @using salesbook.Shared.Core.Dto.JobProgress @using salesbook.Shared.Core.Dto.PageState @inject IManageDataService ManageData @inject IMapper Mapper @inject IDialogService Dialog @inject IIntegryApiService IntegryApiService @inject UserPageState UserState @if (IsLoading) { } else {
@UtilityString.ExtractInitials(Anag.RagSoc)
@Anag.RagSoc @if (Anag.Indirizzo != null) { @Anag.Indirizzo } @if (Anag is { Citta: not null, Cap: not null, Prov: not null }) { @($"{Anag.Cap} - {Anag.Citta} ({Anag.Prov})") }
@if (PersRif is { Count: > 0 }) {
@{ var index = PersRif.IndexOf(person); var isLast = index == PersRif.Count - 1; } @if (!isLast) {
}
}
Aggiungi contatto
@if (LoadCommessa) { } else { @if (Commesse.IsNullOrEmpty()) { } else {
} }
} @code { [Parameter] public string CodContact { get; set; } [Parameter] public bool IsContact { get; set; } private ContactDTO Anag { get; set; } = new(); private List? PersRif { get; set; } private List? Commesse { get; set; } private StbUser? Agente { get; set; } private Dictionary?> Steps { get; set; } = []; private bool IsLoading { get; set; } = true; private bool LoadCommessa { get; set; } = true; protected override async Task OnInitializedAsync() { if (UserState.CodUser != null && UserState.CodUser.Equals(CodContact)) { LoadDataFromSession(); } else { await LoadData(); } IsLoading = false; StateHasChanged(); } private async Task LoadData() { if (IsContact) { var clie = (await ManageData.GetTable(x => x.CodAnag.Equals(CodContact))).Last(); Anag = Mapper.Map(clie); } else { var pros = (await ManageData.GetTable(x => x.CodPpro.Equals(CodContact))).Last(); Anag = Mapper.Map(pros); } await LoadPersRif(); _ = LoadCommesse(); if (Anag.CodVage != null) { Agente = (await ManageData.GetTable(x => x.UserCode != null && x.UserCode.Equals(Anag.CodVage))).LastOrDefault(); } SetDataSession(); } private void LoadDataFromSession() { Anag = UserState.Anag; PersRif = UserState.PersRif; Commesse = UserState.Commesse; Agente = UserState.Agente; Steps = UserState.Steps; SortCommesse(); LoadCommessa = false; StateHasChanged(); } private void SetDataSession() { UserState.CodUser = CodContact; UserState.Anag = Anag; UserState.PersRif = PersRif; UserState.Agente = Agente; UserState.Steps = Steps; } private async Task LoadCommesse() { await Task.Run(async () => { Commesse = await ManageData.GetTable(x => x.CodAnag != null && x.CodAnag.Equals(CodContact)); UserState.Commesse = Commesse; foreach (var commessa in Commesse) { var steps = (await IntegryApiService.RetrieveJobProgress(commessa.CodJcom)).Steps; Steps.Add(commessa.CodJcom, steps); } LoadCommessa = false; }); SortCommesse(); StateHasChanged(); } private void SortCommesse() { Commesse = Commesse?.OrderBy(x => x.LastUpd.HasValue).ThenBy(x => x.LastUpd).ToList(); } private async Task LoadPersRif() { if (IsContact) { var pers = await ManageData.GetTable(x => x.CodAnag.Equals(Anag.CodContact)); PersRif = Mapper.Map>(pers); } else { var pers = await ManageData.GetTable(x => x.CodPpro.Equals(Anag.CodContact)); PersRif = Mapper.Map>(pers); } } private async Task OpenPersRifForm() { var result = await ModalHelpers.OpenPersRifForm(Dialog, null, Anag, PersRif); if (result is { Canceled: false, Data: not null } && result.Data.GetType() == typeof(PersRifDTO)) { await LoadPersRif(); } } private async Task OpenUserForm(ContactDTO anag) { var result = await ModalHelpers.OpenUserForm(Dialog, anag); } }