@inject IInventoryService InventorySvc @inject AuthenticationStateProvider AuthState @foreach (var r in Repuestos) { @r.CodigoInterno — @r.Descripcion } @foreach (var a in Almacenes) { @a.Nombre } Entrada por compra Devolución de cliente Ajuste positivo (+) Ajuste negativo (-) Salida (consumo OT) Devolución a proveedor @if (!string.IsNullOrEmpty(error)) { @error } Cancelar @(guardando ? "Procesando..." : "Registrar") @code { [CascadingParameter] private MudDialogInstance MudDialog { get; set; } = default!; [Parameter] public MovimientoFormDto Movimiento { get; set; } = new(); [Parameter] public List<(int Id, string CodigoInterno, string Descripcion)> Repuestos { get; set; } = new(); [Parameter] public List Almacenes { get; set; } = new(); private MudForm? form; private bool guardando; private string? error; private async Task Guardar() { if (form == null) return; await form.Validate(); if (!form.IsValid) return; guardando = true; error = null; try { var auth = await AuthState.GetAuthenticationStateAsync(); var usuario = auth.User.Identity?.Name; await InventorySvc.RegistrarMovimientoAsync(Movimiento, usuario); MudDialog.Close(DialogResult.Ok(true)); } catch (Exception ex) { error = ex.Message; } finally { guardando = false; } } private void Cancelar() => MudDialog.Cancel(); }