@page "/tickets/ticketform/{TicketId}" @page "/tickets/ticketform" @inject HttpClient _httpClient @inject NavigationManager Navigation @inject IToastService toastService @inject AuthenticationStateProvider authenticationStateProvider
@foreach (var option in prioridadOptions) { }
@foreach (var option in estadoOptions) { }
@foreach (var option in impactoOptions) { }
@foreach (var option in urgenciaOptions) { }



@code { private ETicket ticket { get; set; } = new ETicket(); // private string? userName; public string Title { get; set; } = string.Empty; private string urlReturn = "/dashboardpanel"; [Parameter] public Guid? TicketId { get; set; } private List prioridadOptions = new List { "Alta", "Media", "Baja" }; private List estadoOptions = new List { "En Proceso", "Completado", "Pendiente", "Cancelado" }; private List impactoOptions = new List { "Alto", "Medio", "Bajo" }; private List urgenciaOptions = new List { "Alta", "Media", "Baja" }; //const int MAX_FILESIZE = 5000 * 1024; // 2 MB public Task FileUploaded(InputFileChangeEventArgs e) { var browserFile = e.File; if (browserFile != null) { ticket.AdjuntoArchivo= browserFile.Name; } return Task.CompletedTask; } protected override void OnInitialized() { if (TicketId.HasValue) { // Cargar datos del ticket existente si estás en modo edición // (puedes implementar esta lógica según tu estructura) ticket = GetTicketById(TicketId.Value); // } // else // { // // Crear un nuevo ticket si estás en modo nuevo // ticket = new ETicket(); } } private async Task HandleValidSubmit() { try { // Lógica para registro de ticket if (ticket.TicketId == Guid.Empty) { var authState = await authenticationStateProvider.GetAuthenticationStateAsync(); var user = authState.User; if (user?.Identity?.IsAuthenticated == true) { ticket.CreadorUsuarioId = user.Identity.Name ?? string.Empty; // Si Name es null, asignar cadena vacía } // var user = authState.User; // if (user.Identity.IsAuthenticated) // { // ticket.CreadorUsuarioId = user.Identity.Name; // } // Lógica para guardar un nuevo ticket var response = await _httpClient.PostAsJsonAsync("/api/Ticket/InsertTicket", ticket); if (response.IsSuccessStatusCode) { toastService.ShowSuccess("Ticket guardado exitosamente"); Navigation.NavigateTo(urlReturn); } else { var jsonResponse = await response.Content.ReadAsStringAsync(); toastService.ShowError(jsonResponse); } } else { // Lógica para actualizar un ticket existente } } catch (HttpRequestException ex) { // Manejo de errores de la solicitud HTTP toastService.ShowError($"Error al realizar la solicitud HTTP: {ex.Message}"); } catch (Exception ex) { // Manejo de errores generales toastService.ShowError($"Error: {ex.Message}"); } } // Método para obtener un ticket por su ID (puedes implementarlo según tu estructura) private ETicket GetTicketById(Guid ticketId) { // Lógica para obtener datos del ticket por su ID // (esto podría ser una llamada a tu API o una consulta a la base de datos) return new ETicket(); // Reemplaza esto con la lógica real } public void Cancel() { Navigation.NavigateTo(urlReturn); } }