@using RobotNet10.FleetManager.Shared.DTOs.RobotModel @using RobotNet10.FleetManager.Client.Services @inject ISnackbar Snackbar Delete Robot Model Are you sure you want to delete the robot model @RobotModel.ModelName? @if (usageInfo != null) { @if (usageInfo.RobotCount > 0) { This robot model is currently being used by @usageInfo.RobotCount robot(s). You must delete or reassign all robots using this model before you can delete it. } else { This action cannot be undone. } } else if (isLoadingUsageInfo) { } Cancel @if (isDeleting) { Deleting... } else { Delete } @code { [CascadingParameter] private IMudDialogInstance? MudDialog { get; set; } [Parameter] public RobotModelApiService ApiService { get; set; } = null!; [Parameter] public RobotModelDto RobotModel { get; set; } = null!; private RobotModelUsageInfoDto? usageInfo; private bool isLoadingUsageInfo = true; private bool isDeleting = false; protected override async Task OnInitializedAsync() { await LoadUsageInfoAsync(); } private async Task LoadUsageInfoAsync() { isLoadingUsageInfo = true; try { usageInfo = await ApiService.GetUsageInfoAsync(RobotModel.Id); } catch (Exception ex) { Snackbar.Add($"Error loading usage info: {ex.Message}", Severity.Error); } finally { isLoadingUsageInfo = false; StateHasChanged(); } } private void Cancel() { MudDialog?.Cancel(); } private async Task Submit() { if (usageInfo != null && !usageInfo.CanDelete) { Snackbar.Add("Cannot delete robot model that is in use", Severity.Warning); return; } isDeleting = true; StateHasChanged(); try { await ApiService.DeleteAsync(RobotModel.Id); Snackbar.Add($"Robot model '{RobotModel.ModelName}' deleted successfully", Severity.Success); MudDialog?.Close(DialogResult.Ok(true)); } catch (Exception ex) { Snackbar.Add($"Error deleting robot model: {ex.Message}", Severity.Error); } finally { isDeleting = false; StateHasChanged(); } } }