diff --git a/salesbook.Shared/Components/Pages/User.razor b/salesbook.Shared/Components/Pages/User.razor index 015ca26..dedce52 100644 --- a/salesbook.Shared/Components/Pages/User.razor +++ b/salesbook.Shared/Components/Pages/User.razor @@ -156,19 +156,15 @@ else { var clie = (await ManageData.GetTable(x => x.CodAnag.Equals(CodContact))).Last(); Anag = Mapper.Map(clie); - - var pers = await ManageData.GetTable(x => x.CodAnag.Equals(Anag.CodContact)); - PersRif = Mapper.Map>(pers); } else { var pros = (await ManageData.GetTable(x => x.CodPpro.Equals(CodContact))).Last(); Anag = Mapper.Map(pros); - - var pers = await ManageData.GetTable(x => x.CodPpro.Equals(Anag.CodContact)); - PersRif = Mapper.Map>(pers); } + await LoadPersRif(); + Commesse = await ManageData.GetTable(x => x.CodAnag != null && x.CodAnag.Equals(CodContact)); if (Anag.CodVage != null) @@ -180,9 +176,28 @@ else StateHasChanged(); } + 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); + 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) diff --git a/salesbook.Shared/Components/SingleElements/Modal/PersRifForm.razor b/salesbook.Shared/Components/SingleElements/Modal/PersRifForm.razor index a9778ed..b95a1ac 100644 --- a/salesbook.Shared/Components/SingleElements/Modal/PersRifForm.razor +++ b/salesbook.Shared/Components/SingleElements/Modal/PersRifForm.razor @@ -112,6 +112,9 @@ [CascadingParameter] private IMudDialogInstance MudDialog { get; set; } [Parameter] public PersRifDTO? OriginalModel { get; set; } + [Parameter] public ContactDTO? ContactModel { get; set; } + [Parameter] public List? PersRifList { get; set; } + private PersRifDTO PersRifModel { get; set; } = new(); private bool IsNew => OriginalModel is null; @@ -137,6 +140,42 @@ VisibleOverlay = true; StateHasChanged(); + if (ContactModel != null && PersRifList != null) + { + PersRifList.Add(PersRifModel); + + var requestDto = new CRMCreateContactRequestDTO + { + TipoAnag = ContactModel.IsContact ? "C" : "P", + Cliente = ContactModel, + PersRif = PersRifList, + CodVage = ContactModel.CodVage, + CodAnag = ContactModel.CodContact + }; + + var response = await IntegryApiService.SaveContact(requestDto); + + switch (response) + { + case null: + VisibleOverlay = false; + StateHasChanged(); + return; + case {AnagClie: null, PtbPros: not null}: + await ManageData.InsertOrUpdate(response.PtbPros); + await ManageData.InsertOrUpdate(response.PtbProsRif); + break; + case { AnagClie: not null, PtbPros: null }: + await ManageData.InsertOrUpdate(response.AnagClie); + await ManageData.InsertOrUpdate(response.VtbCliePersRif); + break; + default: + VisibleOverlay = false; + StateHasChanged(); + return; + } + } + SuccessAnimation = true; StateHasChanged(); diff --git a/salesbook.Shared/Core/Dto/CRMCreateContactRequestDTO.cs b/salesbook.Shared/Core/Dto/CRMCreateContactRequestDTO.cs index cc2c341..d50fd45 100644 --- a/salesbook.Shared/Core/Dto/CRMCreateContactRequestDTO.cs +++ b/salesbook.Shared/Core/Dto/CRMCreateContactRequestDTO.cs @@ -4,6 +4,9 @@ namespace salesbook.Shared.Core.Dto; public class CRMCreateContactRequestDTO { + [JsonPropertyName("codAnag")] + public string? CodAnag { get; set; } + [JsonPropertyName("codVdes")] public string? CodVdes { get; set; } diff --git a/salesbook.Shared/Core/Helpers/ModalHelpers.cs b/salesbook.Shared/Core/Helpers/ModalHelpers.cs index a5a8be3..52e11fe 100644 --- a/salesbook.Shared/Core/Helpers/ModalHelpers.cs +++ b/salesbook.Shared/Core/Helpers/ModalHelpers.cs @@ -45,13 +45,16 @@ public class ModalHelpers return await modal.Result; } - public static async Task OpenPersRifForm(IDialogService dialog, PersRifDTO? persRif) + public static async Task OpenPersRifForm(IDialogService dialog, PersRifDTO? persRif, + ContactDTO? contactModel = null, List? persRifList = null) { var modal = await dialog.ShowAsync( "Pers rif form", new DialogParameters { - { x => x.OriginalModel, persRif } + { x => x.OriginalModel, persRif }, + { x => x.ContactModel, contactModel}, + { x => x.PersRifList, persRifList } }, new DialogOptions {