Sistemati caricamenti

This commit is contained in:
2025-09-18 15:47:20 +02:00
parent 4645b2660e
commit c61093a942
5 changed files with 100 additions and 62 deletions

View File

@@ -232,7 +232,7 @@ public class ManageDataService(
return await MapActivity(activities); return await MapActivity(activities);
} }
private async Task<List<ActivityDTO>> MapActivity(List<StbActivity>? activities) public async Task<List<ActivityDTO>> MapActivity(List<StbActivity>? activities)
{ {
if (activities == null) return []; if (activities == null) return [];
@@ -291,7 +291,7 @@ public class ManageDataService(
} }
} }
dto.Commessa = jtbComtList.LastOrDefault(); dto.Commessa = jtbComtList.Find(x => x.CodJcom.Equals(dto.CodJcom));
return dto; return dto;
}) })
.ToList(); .ToList();

View File

@@ -149,10 +149,9 @@ else
await Task.Run(async () => await Task.Run(async () =>
{ {
var activities = await IntegryApiService.RetrieveActivity(new CRMRetrieveActivityRequestDTO { CodJcom = CodJcom }); var activities = await IntegryApiService.RetrieveActivity(new CRMRetrieveActivityRequestDTO { CodJcom = CodJcom });
ActivityList = Mapper.Map<List<ActivityDTO>>(activities) ActivityList = (await ManageData.MapActivity(activities)).OrderByDescending(x =>
.OrderBy(x => (x.EffectiveTime ?? x.EstimatedTime) ?? x.DataInsAct
(x.EffectiveTime ?? x.EstimatedTime) ?? x.DataInsAct ).ToList();
).ToList();
}); });
ActivityIsLoading = false; ActivityIsLoading = false;

View File

@@ -24,11 +24,11 @@
Back="true" Back="true"
BackOnTop="true" BackOnTop="true"
Title="" Title=""
ShowProfile="false" /> ShowProfile="false"/>
@if (IsLoading) @if (IsLoading)
{ {
<SpinnerLayout FullScreen="true" /> <SpinnerLayout FullScreen="true"/>
} }
else else
{ {
@@ -123,7 +123,7 @@ else
<div class="container-pers-rif"> <div class="container-pers-rif">
@foreach (var person in PersRif) @foreach (var person in PersRif)
{ {
<ContactCard Contact="person" /> <ContactCard Contact="person"/>
@if (person != PersRif.Last()) @if (person != PersRif.Last())
{ {
<div class="divider"></div> <div class="divider"></div>
@@ -147,11 +147,11 @@ else
<div class="tab-content" style="display: @(ActiveTab == 1 ? "block" : "none")"> <div class="tab-content" style="display: @(ActiveTab == 1 ? "block" : "none")">
@if (IsLoadingCommesse) @if (IsLoadingCommesse)
{ {
<MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="my-7" /> <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="my-7"/>
} }
else if (Commesse?.Count == 0) else if (Commesse?.Count == 0)
{ {
<NoDataAvailable Text="Nessuna commessa presente" /> <NoDataAvailable Text="Nessuna commessa presente"/>
} }
else if (Commesse != null) else if (Commesse != null)
{ {
@@ -162,13 +162,13 @@ else
Variant="Variant.Text" Variant="Variant.Text"
@bind-Value="SearchTermCommesse" @bind-Value="SearchTermCommesse"
OnDebounceIntervalElapsed="() => ApplyFiltersCommesse()" OnDebounceIntervalElapsed="() => ApplyFiltersCommesse()"
DebounceInterval="500" /> DebounceInterval="500"/>
</div> </div>
<div class="commesse-container"> <div class="commesse-container">
@if (IsLoadingSteps) @if (IsLoadingSteps)
{ {
<MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="my-3" /> <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="my-3"/>
} }
@foreach (var commessa in CurrentPageCommesse) @foreach (var commessa in CurrentPageCommesse)
@@ -176,14 +176,14 @@ else
<div class="commessa-wrapper" style="@(IsLoadingStep(commessa.CodJcom) ? "opacity: 0.7;" : "")"> <div class="commessa-wrapper" style="@(IsLoadingStep(commessa.CodJcom) ? "opacity: 0.7;" : "")">
@if (Steps.TryGetValue(commessa.CodJcom, out var steps)) @if (Steps.TryGetValue(commessa.CodJcom, out var steps))
{ {
<CommessaCard Steps="@steps" RagSoc="@Anag.RagSoc" Commessa="commessa" /> <CommessaCard Steps="@steps" RagSoc="@Anag.RagSoc" Commessa="commessa"/>
} }
else else
{ {
<CommessaCard Steps="null" RagSoc="@Anag.RagSoc" Commessa="commessa" /> <CommessaCard Steps="null" RagSoc="@Anag.RagSoc" Commessa="commessa"/>
@if (IsLoadingStep(commessa.CodJcom)) @if (IsLoadingStep(commessa.CodJcom))
{ {
<MudProgressLinear Indeterminate="true" Color="Color.Primary" Class="my-1" Style="height: 2px;" /> <MudProgressLinear Indeterminate="true" Color="Color.Primary" Class="my-1" Style="height: 2px;"/>
} }
} }
</div> </div>
@@ -194,7 +194,7 @@ else
<div class="custom-pagination"> <div class="custom-pagination">
<MudPagination BoundaryCount="1" MiddleCount="1" Count="@TotalPagesCommesse" <MudPagination BoundaryCount="1" MiddleCount="1" Count="@TotalPagesCommesse"
@bind-Selected="SelectedPageCommesse" @bind-Selected="SelectedPageCommesse"
Color="Color.Primary" /> Color="Color.Primary"/>
</div> </div>
<div class="SelectedPageSize"> <div class="SelectedPageSize">
@@ -217,11 +217,11 @@ else
<div class="tab-content" style="display: @(ActiveTab == 2 ? "block" : "none")"> <div class="tab-content" style="display: @(ActiveTab == 2 ? "block" : "none")">
@if (ActivityIsLoading) @if (ActivityIsLoading)
{ {
<MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="my-7" /> <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="my-7"/>
} }
else if (ActivityList?.Count == 0) else if (ActivityList?.Count == 0)
{ {
<NoDataAvailable Text="Nessuna attivit<69> presente" /> <NoDataAvailable Text="Nessuna attivit<69> presente"/>
} }
else if (ActivityList != null) else if (ActivityList != null)
{ {
@@ -232,13 +232,13 @@ else
Variant="Variant.Text" Variant="Variant.Text"
@bind-Value="SearchTermActivity" @bind-Value="SearchTermActivity"
OnDebounceIntervalElapsed="() => ApplyFiltersActivity()" OnDebounceIntervalElapsed="() => ApplyFiltersActivity()"
DebounceInterval="500" /> DebounceInterval="500"/>
</div> </div>
<div class="attivita-container"> <div class="attivita-container">
@foreach (var activity in CurrentPageActivity) @foreach (var activity in CurrentPageActivity)
{ {
<ActivityCard ShowDate="true" Activity="activity" /> <ActivityCard ShowDate="true" Activity="activity"/>
} }
@if (TotalPagesActivity > 1) @if (TotalPagesActivity > 1)
@@ -246,7 +246,7 @@ else
<div class="custom-pagination"> <div class="custom-pagination">
<MudPagination BoundaryCount="1" MiddleCount="1" Count="@TotalPagesActivity" <MudPagination BoundaryCount="1" MiddleCount="1" Count="@TotalPagesActivity"
@bind-Selected="CurrentPageActivityIndex" @bind-Selected="CurrentPageActivityIndex"
Color="Color.Primary" /> Color="Color.Primary"/>
</div> </div>
<div class="SelectedPageSize"> <div class="SelectedPageSize">
@@ -265,9 +265,9 @@ else
} }
</div> </div>
</div> </div>
<MudScrollToTop Selector="#topPage" VisibleCssClass="visible absolute" TopOffset="100" HiddenCssClass="invisible"> <MudScrollToTop Selector="#topPage" VisibleCssClass="visible absolute" TopOffset="100" HiddenCssClass="invisible">
<MudFab Size="Size.Small" Color="Color.Primary" StartIcon="@Icons.Material.Rounded.KeyboardArrowUp" /> <MudFab Size="Size.Small" Color="Color.Primary" StartIcon="@Icons.Material.Rounded.KeyboardArrowUp"/>
</MudScrollToTop> </MudScrollToTop>
</div> </div>
} }
@@ -527,10 +527,9 @@ else
await Task.Run(async () => await Task.Run(async () =>
{ {
var activities = await IntegryApiService.RetrieveActivity(new CRMRetrieveActivityRequestDTO { CodAnag = Anag.CodContact }); var activities = await IntegryApiService.RetrieveActivity(new CRMRetrieveActivityRequestDTO { CodAnag = Anag.CodContact });
ActivityList = Mapper.Map<List<ActivityDTO>>(activities) ActivityList = (await ManageData.MapActivity(activities)).OrderByDescending(x =>
.OrderByDescending(x => (x.EffectiveTime ?? x.EstimatedTime) ?? x.DataInsAct
(x.EffectiveTime ?? x.EstimatedTime) ?? x.DataInsAct ).ToList();
).ToList();
}); });
UserState.Activitys = ActivityList; UserState.Activitys = ActivityList;
@@ -794,4 +793,5 @@ else
} }
#endregion #endregion
} }

View File

@@ -39,18 +39,26 @@
<div class="form-container"> <div class="form-container">
<span class="disable-full-width">Commessa</span> <span class="disable-full-width">Commessa</span>
<MudAutocomplete @if (ActivityModel.CodJcom != null && SelectedComessa == null)
Disabled="ActivityModel.Cliente.IsNullOrEmpty()" {
T="JtbComt?" ReadOnly="IsView" <MudSkeleton />
@bind-Value="SelectedComessa" }
@bind-Value:after="OnCommessaSelectedAfter" else
SearchFunc="SearchCommesseAsync" {
ToStringFunc="@(c => c == null ? string.Empty : $"{c.CodJcom} - {c.Descrizione}")" <MudAutocomplete
Clearable="true" Disabled="ActivityModel.Cliente.IsNullOrEmpty()"
ShowProgressIndicator="true" T="JtbComt?" ReadOnly="IsView"
DebounceInterval="300" @bind-Value="SelectedComessa"
MaxItems="50" @bind-Value:after="OnCommessaSelectedAfter"
Class="customIcon-select" AdornmentIcon="@Icons.Material.Filled.Code"/> SearchFunc="SearchCommesseAsync"
ToStringFunc="@(c => c == null ? string.Empty : $"{c.CodJcom} - {c.Descrizione}")"
Clearable="true"
OnClearButtonClick="OnCommessaClear"
ShowProgressIndicator="true"
DebounceInterval="300"
MaxItems="50"
Class="customIcon-select" AdornmentIcon="@Icons.Material.Filled.Code"/>
}
</div> </div>
</div> </div>
@@ -90,19 +98,27 @@
<div class="form-container"> <div class="form-container">
<span class="disable-full-width">Assegnata a</span> <span class="disable-full-width">Assegnata a</span>
<MudAutocomplete @if (ActivityModel.UserName != null && SelectedUser == null)
Disabled="Users.IsNullOrEmpty()" ReadOnly="IsView" {
T="StbUser" <MudSkeleton />
@bind-Value="SelectedUser" }
@bind-Value:after="OnUserSelectedAfter" else
SearchFunc="SearchUtentiAsync" {
ToStringFunc="@(u => u == null ? string.Empty : u.FullName)" <MudAutocomplete
Clearable="true" Disabled="Users.IsNullOrEmpty()" ReadOnly="IsView"
ShowProgressIndicator="true" T="StbUser"
DebounceInterval="300" @bind-Value="SelectedUser"
MaxItems="50" @bind-Value:after="OnUserSelectedAfter"
Class="customIcon-select" SearchFunc="SearchUtentiAsync"
AdornmentIcon="@Icons.Material.Filled.Code"/> ToStringFunc="@(u => u == null ? string.Empty : u.FullName)"
Clearable="true"
OnClearButtonClick="OnUserClear"
ShowProgressIndicator="true"
DebounceInterval="300"
MaxItems="50"
Class="customIcon-select"
AdornmentIcon="@Icons.Material.Filled.Code"/>
}
</div> </div>
<div class="divider"></div> <div class="divider"></div>
@@ -110,12 +126,19 @@
<div class="form-container"> <div class="form-container">
<span class="disable-full-width">Tipo</span> <span class="disable-full-width">Tipo</span>
<MudSelectExtended ReadOnly="IsView" FullWidth="true" T="string?" Variant="Variant.Text" @bind-Value="ActivityModel.ActivityTypeId" @bind-Value:after="OnAfterChangeValue" Class="customIcon-select" AdornmentIcon="@Icons.Material.Filled.Code"> @if (ActivityType.IsNullOrEmpty())
@foreach (var type in ActivityType) {
{ <MudSkeleton />
<MudSelectItemExtended Class="custom-item-select" Value="@type.ActivityTypeId">@type.ActivityTypeId</MudSelectItemExtended> }
} else
</MudSelectExtended> {
<MudSelectExtended ReadOnly="IsView" FullWidth="true" T="string?" Variant="Variant.Text" @bind-Value="ActivityModel.ActivityTypeId" @bind-Value:after="OnAfterChangeValue" Class="customIcon-select" AdornmentIcon="@Icons.Material.Filled.Code">
@foreach (var type in ActivityType)
{
<MudSelectItemExtended Class="custom-item-select" Value="@type.ActivityTypeId">@type.ActivityTypeId</MudSelectItemExtended>
}
</MudSelectExtended>
}
</div> </div>
<div class="divider"></div> <div class="divider"></div>
@@ -370,14 +393,14 @@
{ {
return Task.Run(async () => return Task.Run(async () =>
{ {
if (!IsNew && Id != null) SelectedComessa = ActivityModel.Commessa;
ActivityFileList = await IntegryApiService.GetActivityFile(Id);
Users = await ManageData.GetTable<StbUser>(); Users = await ManageData.GetTable<StbUser>();
if (!ActivityModel.UserName.IsNullOrEmpty()) if (!ActivityModel.UserName.IsNullOrEmpty())
SelectedUser = Users.FindLast(x => x.UserName.Equals(ActivityModel.UserName)); SelectedUser = Users.FindLast(x => x.UserName.Equals(ActivityModel.UserName));
SelectedComessa = ActivityModel.Commessa; if (!IsNew && Id != null)
ActivityFileList = await IntegryApiService.GetActivityFile(Id);
ActivityResult = await ManageData.GetTable<StbActivityResult>(); ActivityResult = await ManageData.GetTable<StbActivityResult>();
Clienti = await ManageData.GetClienti(new WhereCondContact { FlagStato = "A" }); Clienti = await ManageData.GetClienti(new WhereCondContact { FlagStato = "A" });
@@ -510,6 +533,20 @@
OnAfterChangeValue(); OnAfterChangeValue();
} }
private async Task OnCommessaClear()
{
ActivityModel.Commessa = null;
ActivityModel.CodJcom = null;
StateHasChanged();
}
private async Task OnUserClear()
{
ActivityModel.UserName = null;
ActivityType = [];
StateHasChanged();
}
private void OnAfterChangeTimeBefore() private void OnAfterChangeTimeBefore()
{ {
if (ActivityModel.EstimatedTime is not null) if (ActivityModel.EstimatedTime is not null)

View File

@@ -25,5 +25,7 @@ public interface IManageDataService
Task Delete<T>(T objectToDelete); Task Delete<T>(T objectToDelete);
Task DeleteActivity(ActivityDTO activity); Task DeleteActivity(ActivityDTO activity);
Task<List<ActivityDTO>> MapActivity(List<StbActivity>? activities);
Task ClearDb(); Task ClearDb();
} }