@using salesbook.Shared.Core.Dto @using salesbook.Shared.Components.Layout @using salesbook.Shared.Core.Interface @using salesbook.Shared.Components.Layout.Overlay @using salesbook.Shared.Core.Entity @inject IManageDataService ManageData @inject INetworkService NetworkService @inject IIntegryApiService IntegryApiService @inject IDialogService Dialog P. IVA Cod. Fiscale Tipo cliente @if (VtbTipi.IsNullOrEmpty()) { Nessun tipo cliente trovato } else { @foreach (var tipo in VtbTipi) { @($"{tipo.CodVtip} - {tipo.Descrizione}") } } Indirizzo CAP Città Provincia Nazione PEC E-Mail Telefono @if (IsNew) { @if (!PersRifList.IsNullOrEmpty()) { foreach (var item in PersRifList!.Select((p, index) => new { p, index })) { @item.p.PersonaRif } } Persona di riferimento } @code { [CascadingParameter] private IMudDialogInstance MudDialog { get; set; } [Parameter] public ContactDTO? OriginalModel { get; set; } private ContactDTO ContactModel { get; set; } = new(); private List? VtbTipi { get; set; } private List? PersRifList { get; set; } private bool IsNew => OriginalModel is null; 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; await LoadData(); LabelSave = IsNew ? "Aggiungi" : null; } private async Task Save() { VisibleOverlay = true; StateHasChanged(); var requestDto = new CRMCreateContactRequestDTO { TipoAnag = ContactModel.IsContact ? "C" : "P", Cliente = ContactModel, PersRif = PersRifList }; await IntegryApiService.SaveContact(requestDto); SuccessAnimation = true; StateHasChanged(); await Task.Delay(1250); MudDialog.Close(); } private async Task LoadData() { if (IsNew) { ContactModel.IsContact = false; } else { ContactModel = OriginalModel!.Clone(); } VtbTipi = await ManageData.GetTable(); } private void OnAfterChangeValue() { if (!IsNew) { LabelSave = !OriginalModel.Equals(ContactModel) ? "Aggiorna" : null; } } private Task NewPersRif() => OpenPersRifForm(null, null); private async Task OpenPersRifForm(int? index, PersRifDTO? persRif) { var result = await ModalHelpers.OpenPersRifForm(Dialog, persRif); if (result is { Canceled: false, Data: not null } && result.Data.GetType() == typeof(PersRifDTO)) { if (index != null) OnRemovePersRif(index.Value); PersRifList ??= []; PersRifList.Add((PersRifDTO)result.Data); } } private void OnRemovePersRif(int index) { if (PersRifList is null || index < 0 || index >= PersRifList.Count) return; PersRifList.RemoveAt(index); StateHasChanged(); } }