Creato form per Clienti/Prospect
This commit is contained in:
@@ -78,8 +78,9 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)'=='net9.0-ios'">
|
<PropertyGroup Condition="'$(TargetFramework)'=='net9.0-ios'">
|
||||||
<CodesignKey>Apple Development: Created via API (5B7B69P4JY)</CodesignKey>
|
<CodesignKey>Apple Distribution: Integry S.r.l. (UNP26J4R89)</CodesignKey>
|
||||||
<CodesignProvision>VS: WildCard Development</CodesignProvision>
|
<CodesignProvision></CodesignProvision>
|
||||||
|
<ProvisioningType>manual</ProvisioningType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios' OR $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">
|
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios' OR $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<MudFab Class="custom-plus-button" Color="Color.Surface" Size="Size.Medium" IconSize="Size.Medium" IconColor="Color.Primary" StartIcon="@Icons.Material.Filled.Add" />
|
<MudFab Class="custom-plus-button" Color="Color.Surface" Size="Size.Medium" IconSize="Size.Medium" IconColor="Color.Primary" StartIcon="@Icons.Material.Filled.Add" />
|
||||||
</ActivatorContent>
|
</ActivatorContent>
|
||||||
<ChildContent>
|
<ChildContent>
|
||||||
<MudMenuItem Disabled="true">Nuovo contatto</MudMenuItem>
|
<MudMenuItem OnClick="() => CreateUser()">Nuovo contatto</MudMenuItem>
|
||||||
<MudMenuItem OnClick="() => CreateActivity()">Nuova attivit<69></MudMenuItem>
|
<MudMenuItem OnClick="() => CreateActivity()">Nuova attivit<69></MudMenuItem>
|
||||||
</ChildContent>
|
</ChildContent>
|
||||||
</MudMenu>
|
</MudMenu>
|
||||||
@@ -92,5 +92,10 @@
|
|||||||
Messenger.Send(new NewActivityMessage(((StbActivity)result.Data).ActivityId));
|
Messenger.Send(new NewActivityMessage(((StbActivity)result.Data).ActivityId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task CreateUser()
|
||||||
|
{
|
||||||
|
var result = await ModalHelpers.OpenUserForm(Dialog, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,16 +35,26 @@ else
|
|||||||
|
|
||||||
<div class="section-info">
|
<div class="section-info">
|
||||||
<div class="section-personal-info">
|
<div class="section-personal-info">
|
||||||
|
@if (!string.IsNullOrEmpty(Anag.Telefono))
|
||||||
|
{
|
||||||
|
<div>
|
||||||
|
<span class="info-title">Telefono</span>
|
||||||
|
<span class="info-text">
|
||||||
|
@Anag.Telefono
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<span class="info-title">Telefono</span>
|
<span class="info-title">P. IVA</span>
|
||||||
<span class="info-text">
|
<span class="info-text">
|
||||||
@if (string.IsNullOrEmpty(Anag.Telefono))
|
@if (string.IsNullOrEmpty(Anag.PartIva))
|
||||||
{
|
{
|
||||||
@("Nessuna mail configurata")
|
@("Nessuna partita iva configurata")
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@Anag.Telefono
|
@Anag.PartIva
|
||||||
}
|
}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -339,10 +339,10 @@
|
|||||||
{
|
{
|
||||||
OnAfterChangeValue();
|
OnAfterChangeValue();
|
||||||
|
|
||||||
// var result = await ConfirmMemo.ShowAsync();
|
var result = await ConfirmMemo.ShowAsync();
|
||||||
|
|
||||||
// if (result is true)
|
if (result is true)
|
||||||
// OpenAddMemo = !OpenAddMemo;
|
OpenAddMemo = !OpenAddMemo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OpenSelectEsito()
|
private void OpenSelectEsito()
|
||||||
|
|||||||
210
salesbook.Shared/Components/SingleElements/Modal/UserForm.razor
Normal file
210
salesbook.Shared/Components/SingleElements/Modal/UserForm.razor
Normal 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()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
.container-button {
|
||||||
|
background: var(--mud-palette-background-gray) !important;
|
||||||
|
box-shadow: unset;
|
||||||
|
}
|
||||||
13
salesbook.Shared/Core/Dto/UserDTO.cs
Normal file
13
salesbook.Shared/Core/Dto/UserDTO.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
namespace salesbook.Shared.Core.Dto;
|
||||||
|
|
||||||
|
public class UserDTO
|
||||||
|
{
|
||||||
|
public string? CodAnag { get; set; }
|
||||||
|
public string? RagSoc { get; set; }
|
||||||
|
public string? Indirizzo { get; set; }
|
||||||
|
public string? Cap { get; set; }
|
||||||
|
public string? Citta { get; set; }
|
||||||
|
public string? Prov { get; set; }
|
||||||
|
public string? Nazione { get; set; }
|
||||||
|
public string? PartIva { get; set; }
|
||||||
|
}
|
||||||
@@ -25,4 +25,23 @@ public class ModalHelpers
|
|||||||
|
|
||||||
return await modal.Result;
|
return await modal.Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async Task<DialogResult?> OpenUserForm(IDialogService dialog, string? codAnag)
|
||||||
|
{
|
||||||
|
var modal = await dialog.ShowAsync<UserForm>(
|
||||||
|
"User form",
|
||||||
|
new DialogParameters<UserForm>
|
||||||
|
{
|
||||||
|
{ x => x.CodAnag, codAnag }
|
||||||
|
},
|
||||||
|
new DialogOptions
|
||||||
|
{
|
||||||
|
FullScreen = true,
|
||||||
|
CloseButton = false,
|
||||||
|
NoHeader = true
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return await modal.Result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user