@page "/sales/patientform" @page "/sales/patientform/{PatientId:int?}" @using System.ComponentModel.DataAnnotations @using phronCare.UIBlazor.Services.Sales @using phronCare.UIBlazor.Shared.Modals @inject DocumentTypeService documentTypeService @inject PatientService patientService @inject NavigationManager Navigation @inject IToastService ToastService @inject IModalService Modal

@((PatientId.HasValue ? "Editar paciente" : "Nuevo paciente"))

@foreach (var type in documentTypes) { }
@code { [Parameter] public int? PatientId { get; set; } [Parameter] public string? returnUrl { get; set; } = "/sales/patients"; private EPatient _model = new(); private List documentTypes = new(); private bool isSaving = false; protected override async Task OnInitializedAsync() { await LoadDocumentTypes(); if (PatientId.HasValue) { _model = await patientService.GetByIdAsync(PatientId.Value); } } private async Task LoadDocumentTypes() { documentTypes = await documentTypeService.GetAllAsync(); } private async Task HandleValidSubmit() { var parameters = new ModalParameters(); parameters.Add("Message", "¿Desea guardar los cambios del paciente?"); var modal = Modal.Show("Confirmación", parameters); var result = await modal.Result; if (result.Cancelled) return; try { HttpResponseMessage response; if (_model.Id == 0) response = await patientService.CreateAsync(_model); else response = await patientService.UpdateAsync(_model); if (response.IsSuccessStatusCode) { ToastService.ShowSuccess("Paciente guardado correctamente."); NavigateBack(); } else { var error = await response.Content.ReadAsStringAsync(); ToastService.ShowError($"Error: {error}"); } } catch (Exception ex) { ToastService.ShowError($"Error: {ex.Message}"); } } private void NavigateBack() { Navigation.NavigateTo(returnUrl ?? "/sales/patients"); } }