Creato form per Clienti/Prospect

This commit is contained in:
2025-07-08 15:33:33 +02:00
parent bf2e1b65f0
commit 65e48777e6
8 changed files with 272 additions and 10 deletions

View File

@@ -0,0 +1,210 @@
@using System.Text.RegularExpressions
@using salesbook.Shared.Core.Dto
@using salesbook.Shared.Components.Layout
@using salesbook.Shared.Core.Entity
@using salesbook.Shared.Core.Interface
@using salesbook.Shared.Components.Layout.Overlay
@inject IManageDataService ManageData
@inject INetworkService NetworkService
@inject IIntegryApiService IntegryApiService
<MudDialog Class="customDialog-form">
<DialogContent>
<HeaderLayout ShowProfile="false" Cancel="true" OnCancel="() => MudDialog.Cancel()" LabelSave="@LabelSave" OnSave="Save" Title="@(IsNew ? "Nuovo" : $"{UserModel.CodAnag}")"/>
<div class="content">
<div class="input-card">
<MudTextField ReadOnly="IsView"
T="string?"
Placeholder="Azienda"
Variant="Variant.Text"
Lines="1"
@bind-Value="UserModel.RagSoc"
@bind-Value:after="OnAfterChangeValue"
DebounceInterval="500"
OnDebounceIntervalElapsed="OnAfterChangeValue"/>
</div>
<div class="input-card">
<MudTextField ReadOnly="IsView"
T="string?"
Placeholder="Partita IVA"
Variant="Variant.Text"
Lines="1"
@bind-Value="UserModel.PartIva"
@bind-Value:after="OnAfterChangeValue"
DebounceInterval="500"
OnDebounceIntervalElapsed="OnAfterChangeValue" />
</div>
<div class="input-card">
<div class="form-container">
<MudTextField ReadOnly="IsView"
T="string?"
Placeholder="Indirizzo"
Variant="Variant.Text"
Lines="1"
@bind-Value="UserModel.Indirizzo"
@bind-Value:after="OnAfterChangeValue"
DebounceInterval="500"
OnDebounceIntervalElapsed="OnAfterChangeValue" />
</div>
<div class="divider"></div>
<div class="form-container">
<MudTextField ReadOnly="IsView"
T="string?"
Placeholder="CAP"
Variant="Variant.Text"
Lines="1"
@bind-Value="UserModel.Cap"
@bind-Value:after="OnAfterChangeValue"
DebounceInterval="500"
OnDebounceIntervalElapsed="OnAfterChangeValue" />
</div>
<div class="divider"></div>
<div class="form-container">
<MudTextField ReadOnly="IsView"
T="string?"
Placeholder="Città"
Variant="Variant.Text"
Lines="1"
@bind-Value="UserModel.Citta"
@bind-Value:after="OnAfterChangeValue"
DebounceInterval="500"
OnDebounceIntervalElapsed="OnAfterChangeValue" />
</div>
<div class="divider"></div>
<div class="form-container">
<MudTextField ReadOnly="IsView"
T="string?"
Placeholder="Provincia"
Variant="Variant.Text"
Lines="1"
@bind-Value="UserModel.Prov"
@bind-Value:after="OnAfterChangeValue"
DebounceInterval="500"
OnDebounceIntervalElapsed="OnAfterChangeValue" />
</div>
<div class="divider"></div>
<div class="form-container">
<MudTextField ReadOnly="IsView"
T="string?"
Placeholder="Nazione"
Variant="Variant.Text"
Lines="1"
@bind-Value="UserModel.Nazione"
@bind-Value:after="OnAfterChangeValue"
DebounceInterval="500"
OnDebounceIntervalElapsed="OnAfterChangeValue" />
</div>
</div>
<div class="input-card">
<div class="form-container">
<span class="disable-full-width">Tipo cliente</span>
@* @if (Commesse.IsNullOrEmpty())
{
<span class="warning-text">Nessuna commessa presente</span>
}
else
{
<MudSelectExtended FullWidth="true" ReadOnly="@(IsView || Commesse.IsNullOrEmpty())" T="string?" Variant="Variant.Text" @bind-Value="UserModel.CodJcom" @bind-Value:after="OnCommessaChanged" Class="customIcon-select" AdornmentIcon="@Icons.Material.Filled.Code">
@foreach (var com in Commesse)
{
<MudSelectItemExtended Class="custom-item-select" Value="@com.CodJcom">@($"{com.CodJcom} - {com.Descrizione}")</MudSelectItemExtended>
}
</MudSelectExtended>
} *@
</div>
</div>
@if (IsNew)
{
<div class="container-button">
<MudButton Class="button-settings gray-icon"
FullWidth="true"
StartIcon="@Icons.Material.Filled.PersonAddAlt1"
Size="Size.Medium"
OnClick="NewPersRif"
Variant="Variant.Outlined">
Persona di riferimento
</MudButton>
</div>
}
</div>
</DialogContent>
</MudDialog>
<SaveOverlay VisibleOverlay="VisibleOverlay" SuccessAnimation="SuccessAnimation"/>
@code {
[CascadingParameter] private IMudDialogInstance MudDialog { get; set; }
[Parameter] public string? CodAnag { get; set; }
[Parameter] public string? UserType { get; set; }
private UserDTO OriginalModel { get; set; } = new();
private UserDTO UserModel { get; set; } = new();
private List<StbActivityResult> ActivityResult { get; set; } = [];
private List<StbActivityType> ActivityType { get; set; } = [];
private List<StbUser> Users { get; set; } = [];
private List<JtbComt> Commesse { get; set; } = [];
private List<AnagClie> Clienti { get; set; } = [];
private List<PtbPros> Pros { get; set; } = [];
private bool IsNew => CodAnag.IsNullOrEmpty();
private bool IsView => !NetworkService.IsNetworkAvailable();
private string? LabelSave { get; set; }
//Overlay for save
private bool VisibleOverlay { get; set; }
private bool SuccessAnimation { get; set; }
protected override async Task OnInitializedAsync()
{
Snackbar.Configuration.PositionClass = Defaults.Classes.Position.TopCenter;
_ = LoadData();
LabelSave = IsNew ? "Aggiungi" : null;
}
private async Task Save()
{
SuccessAnimation = true;
StateHasChanged();
await Task.Delay(1250);
MudDialog.Close();
}
private async Task LoadData()
{
}
private void OnAfterChangeValue()
{
if (!IsNew)
{
LabelSave = !OriginalModel.Equals(UserModel) ? "Aggiorna" : null;
}
}
private void NewPersRif()
{
}
}