@page "/sales/institutionform" @page "/sales/institutionform/{InstitutionId:int?}" @using System.ComponentModel.DataAnnotations @using phronCare.UIBlazor.Services.Sales @using phronCare.UIBlazor.Shared.Modals @inject InstitutionService institutionService @inject NavigationManager Navigation @inject IToastService ToastService @inject IModalService Modal

@((InstitutionId.HasValue ? "Editar institución" : "Nueva institución"))

@foreach (var type in InstitutionTypes) { }
@foreach (var province in provinces) { }
@if (_model.Latitude.HasValue && _model.Longitude.HasValue) { } else {
Ingrese coordenadas para visualizar el mapa
}
@code { [Parameter] public int? InstitutionId { get; set; } [Parameter] public string? returnUrl { get; set; } = "/sales/institutions"; private string searchQuery = string.Empty; private EInstitution _model = new(); private bool isSaving = false; private List provinces = new() { "Buenos Aires", "CABA", "Catamarca", "Chaco", "Chubut", "Córdoba", "Corrientes", "Entre Ríos", "Formosa", "Jujuy", "La Pampa", "La Rioja", "Mendoza", "Misiones", "Neuquén", "Río Negro", "Salta", "San Juan", "San Luis", "Santa Cruz", "Santa Fe", "Santiago del Estero", "Tierra del Fuego", "Tucumán" }; private List<(string Code, string Description)> InstitutionTypes = new() { ("ESCIG", "Establecimiento de salud con internación general"), ("ESCIEP", "Internación especializada en pediatría"), ("ESCIEM", "Internación especializada en maternidad/materno infantil"), ("ESCIESM", "Internación especializada en salud mental"), ("ESCIE", "Internación especializada en otras especialidades"), ("ESCIRES", "Establecimientos Residenciales"), ("ESSIDT", "Ambulatorio diagnóstico y tratamiento"), ("ESSID", "Ambulatorio diagnóstico"), ("ESSIT", "Ambulatorio tratamiento"), ("ESCL", "Establecimiento complementario"), ("ESIAIS", "Ambulatorios de inclusión social") }; protected override async Task OnInitializedAsync() { if (InstitutionId.HasValue) { _model = await institutionService.GetByIdAsync(InstitutionId.Value); } } private async Task HandleLocationChanged((double lat, double lng) location) { _model.Latitude = location.lat; _model.Longitude = location.lng; } private async Task HandleValidSubmit() { var parameters = new ModalParameters(); parameters.Add("Message", "¿Desea guardar los cambios de la institución?"); 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 institutionService.CreateAsync(_model); else response = await institutionService.UpdateAsync(_model); if (response.IsSuccessStatusCode) { ToastService.ShowSuccess("Institución guardada 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/institutions"); } }