diff --git a/MesaFabApproval.API/Controllers/ECNController.cs b/MesaFabApproval.API/Controllers/ECNController.cs index 1b8d431..92881d7 100644 --- a/MesaFabApproval.API/Controllers/ECNController.cs +++ b/MesaFabApproval.API/Controllers/ECNController.cs @@ -53,4 +53,36 @@ public class ECNController : ControllerBase { } } } + + [HttpGet] + [Route("ecn/allNumbers")] + public async Task GetAllECNNumbers() { + DateTime start = DateTime.Now; + bool isInternalError = false; + string errorMessage = ""; + + try { + _logger.LogInformation($"Attempting to get all ECN#s"); + + IEnumerable allEcnNumbers = await _ecnService.GetAllECNNumbers(); + + return Ok(allEcnNumbers); + } catch (Exception ex) { + isInternalError = true; + errorMessage = $"Cannot get all ECN#s, because {ex.Message}"; + return Problem(errorMessage); + } finally { + string metricName = "GetAllECNNumbers"; + DateTime end = DateTime.Now; + double millisecondsDiff = (end - start).TotalMilliseconds; + _monInClient.PostAverage(metricName + "Latency", millisecondsDiff); + + if (isInternalError) { + _logger.LogError(errorMessage); + _monInClient.PostStatus(metricName, StatusValue.Critical); + } else { + _monInClient.PostStatus(metricName, StatusValue.Ok); + } + } + } } \ No newline at end of file diff --git a/MesaFabApproval.API/Controllers/PCRBController.cs b/MesaFabApproval.API/Controllers/PCRBController.cs index f950583..79216eb 100644 --- a/MesaFabApproval.API/Controllers/PCRBController.cs +++ b/MesaFabApproval.API/Controllers/PCRBController.cs @@ -265,6 +265,7 @@ public class PCRBController : ControllerBase { [HttpPost] [Route("pcrb/attachment")] + [ApiExplorerSettings(IgnoreApi = true)] public async Task UploadAttachment([FromForm] IFormFile file, [FromForm] PCRBAttachment attachment) { DateTime start = DateTime.Now; bool isArgumentError = false; diff --git a/MesaFabApproval.API/Program.cs b/MesaFabApproval.API/Program.cs index 56916bd..0246239 100644 --- a/MesaFabApproval.API/Program.cs +++ b/MesaFabApproval.API/Program.cs @@ -132,9 +132,6 @@ builder.Services.AddSwaggerGen(c => { WebApplication app = builder.Build(); -if (Debugger.IsAttached) - app.Services.GetRequiredService(); - app.UseCors(); // Configure the HTTP request pipeline. diff --git a/MesaFabApproval.API/Services/ECNService.cs b/MesaFabApproval.API/Services/ECNService.cs index 5a89462..f5b278b 100644 --- a/MesaFabApproval.API/Services/ECNService.cs +++ b/MesaFabApproval.API/Services/ECNService.cs @@ -4,6 +4,7 @@ namespace MesaFabApproval.API.Services; public interface IECNService { Task IsValidECNNumber(int number); + Task> GetAllECNNumbers(); } public class ECNService : IECNService { @@ -43,4 +44,19 @@ public class ECNService : IECNService { throw; } } + + public async Task> GetAllECNNumbers() { + try { + _logger.LogInformation("Attempting to get all ECN#s"); + + string sql = "select ECNNumber from ECN where Deleted=0 and Cancelled=0"; + + IEnumerable allEcnNumbers = await _dalService.QueryAsync(sql); + + return allEcnNumbers; + } catch (Exception ex) { + _logger.LogError($"Unable to get all ECN#s, because {ex.Message}"); + throw; + } + } } \ No newline at end of file diff --git a/MesaFabApproval.Client/Pages/Components/PCR3DocumentForm.razor b/MesaFabApproval.Client/Pages/Components/PCR3DocumentForm.razor index 315f379..53fcd19 100644 --- a/MesaFabApproval.Client/Pages/Components/PCR3DocumentForm.razor +++ b/MesaFabApproval.Client/Pages/Components/PCR3DocumentForm.razor @@ -31,16 +31,16 @@ Immediate AutoGrow /> } else { - + } allEcnNumbers = new List(); + private string[] errors = { }; private bool complete = false; @@ -89,6 +91,8 @@ protected override async Task OnParametersSetAsync() { complete = document.CompletedByID > 0; + + allEcnNumbers = await ecnService.GetAllECNNumbers(); } private async Task Save() { @@ -155,4 +159,13 @@ StateHasChanged(); return result; } + + private async Task> Search(string searchValue, CancellationToken token) { + if (string.IsNullOrWhiteSpace(searchValue)) + return allEcnNumbers; + + return allEcnNumbers + .Where(x => x.ToString().StartsWith(searchValue, StringComparison.InvariantCultureIgnoreCase)) + .Order(); + } } diff --git a/MesaFabApproval.Client/Services/ECNService.cs b/MesaFabApproval.Client/Services/ECNService.cs index 2aed656..50a0cc1 100644 --- a/MesaFabApproval.Client/Services/ECNService.cs +++ b/MesaFabApproval.Client/Services/ECNService.cs @@ -5,6 +5,7 @@ namespace MesaFabApproval.Client.Services; public interface IECNService { Task ECNNumberIsValidStr(int ecnNumber); Task ECNNumberIsValid(int number); + Task> GetAllECNNumbers(); } public class ECNService : IECNService { @@ -49,4 +50,32 @@ public class ECNService : IECNService { throw new Exception($"Unable to determine if {number} is a valid ECN#, because {ex.Message}"); } } + + public async Task> GetAllECNNumbers() { + try { + HttpClient httpClient = _httpClientFactory.CreateClient("API"); + + HttpRequestMessage requestMessage = new(HttpMethod.Get, $"ecn/allNumbers"); + + HttpResponseMessage responseMessage = await httpClient.SendAsync(requestMessage); + + if (responseMessage.IsSuccessStatusCode) { + string responseContent = await responseMessage.Content.ReadAsStringAsync(); + + JsonSerializerOptions jsonSerializerOptions = new() { + PropertyNameCaseInsensitive = true + }; + + IEnumerable allEcnNumbers = + JsonSerializer.Deserialize>(responseContent, jsonSerializerOptions) ?? + new List(); + + return allEcnNumbers; + } else { + throw new Exception(responseMessage.ReasonPhrase); + } + } catch (Exception ex) { + throw new Exception($"Unable to get all ECN#s, because {ex.Message}"); + } + } }