@page "/sales/patientform"
@page "/sales/patientform/{PatientId:int?}"
@using System.ComponentModel.DataAnnotations
@using phronCare.UIBlazor.Services.Sales
@using phronCare.UIBlazor.Pages.Shared.Modals
@inject PatientService patientService
@inject DocumentTypeService documentTypeService
@inject IToastService ToastService
@inject NavigationManager Navigation
@inject IModalService Modal
@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");
}
}