Created ECN# autocomplete for PCR3 docs
This commit is contained in:
@ -31,16 +31,16 @@
|
||||
Immediate
|
||||
AutoGrow />
|
||||
} else {
|
||||
<MudTextField @bind-Value="@document.ECNNumber"
|
||||
Required
|
||||
RequiredError="You must provide a valid ECN#"
|
||||
Clearable
|
||||
Variant="Variant.Outlined"
|
||||
InputType="@InputType.Number"
|
||||
Validation="@(new Func<int, Task<string>>(ECNNoIsValid))"
|
||||
Label="ECN#"
|
||||
Immediate
|
||||
AutoGrow />
|
||||
<MudAutocomplete @bind-Value="@document.ECNNumber"
|
||||
T="int"
|
||||
SearchFunc="Search"
|
||||
Required
|
||||
Clearable
|
||||
RequiredError="You must provide a valid ECN#"
|
||||
Variant="Variant.Outlined"
|
||||
Validation="@(new Func<int, Task<string>>(ECNNoIsValid))"
|
||||
Label="ECN#"
|
||||
Immediate />
|
||||
}
|
||||
<MudCheckBox Label="Complete"
|
||||
Color="Color.Tertiary"
|
||||
@ -79,6 +79,8 @@
|
||||
[Parameter]
|
||||
public required PCR3Document document { get; set; }
|
||||
|
||||
private IEnumerable<int> allEcnNumbers = new List<int>();
|
||||
|
||||
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<IEnumerable<int>> Search(string searchValue, CancellationToken token) {
|
||||
if (string.IsNullOrWhiteSpace(searchValue))
|
||||
return allEcnNumbers;
|
||||
|
||||
return allEcnNumbers
|
||||
.Where(x => x.ToString().StartsWith(searchValue, StringComparison.InvariantCultureIgnoreCase))
|
||||
.Order();
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ namespace MesaFabApproval.Client.Services;
|
||||
public interface IECNService {
|
||||
Task<string> ECNNumberIsValidStr(int ecnNumber);
|
||||
Task<bool> ECNNumberIsValid(int number);
|
||||
Task<IEnumerable<int>> 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<IEnumerable<int>> 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<int> allEcnNumbers =
|
||||
JsonSerializer.Deserialize<IEnumerable<int>>(responseContent, jsonSerializerOptions) ??
|
||||
new List<int>();
|
||||
|
||||
return allEcnNumbers;
|
||||
} else {
|
||||
throw new Exception(responseMessage.ReasonPhrase);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
throw new Exception($"Unable to get all ECN#s, because {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user