diff --git a/MyFirstBlazor/BlazingPizza/Model/Address.cs b/MyFirstBlazor/BlazingPizza/Model/Address.cs index 05819c8..ed26988 100644 --- a/MyFirstBlazor/BlazingPizza/Model/Address.cs +++ b/MyFirstBlazor/BlazingPizza/Model/Address.cs @@ -1,20 +1,38 @@  +using System.ComponentModel.DataAnnotations; + namespace BlazingPizza { public class Address { public int Id { get; set; } + [Required, + MinLength(3, ErrorMessage = "Please use a value bigger than 3 letters."), + MaxLength(100, ErrorMessage = "Please use a value less than 100 letters."),] public string Name { get; set; } + [Required, + MinLength(5, ErrorMessage = "Please use a value bigger than 5 letters."), + MaxLength(100, ErrorMessage = "Please use a value less than 100 letters.")] public string Line1 { get; set; } + [Required, + MaxLength(100, ErrorMessage = "Please use a value less than 100 letters.")] public string Line2 { get; set; } + [Required, + MinLength(3, ErrorMessage = "Please use a value bigger than 3 letters."), + MaxLength(50, ErrorMessage = "Please use a value less than 50 letters.")] public string City { get; set; } + [Required, + MinLength(3, ErrorMessage = "Please use a value bigger than 3 letters."), + MaxLength(20, ErrorMessage = "Please use a value less than 20 letters.")] public string Region { get; set; } + [Required, + RegularExpression(@"^([0-9]{5})$", ErrorMessage = "Please use a valid postal code with five numbers.")] public string PostalCode { get; set; } } } diff --git a/MyFirstBlazor/BlazingPizza/Pages/Checkout.razor b/MyFirstBlazor/BlazingPizza/Pages/Checkout.razor index f9c849a..494a357 100644 --- a/MyFirstBlazor/BlazingPizza/Pages/Checkout.razor +++ b/MyFirstBlazor/BlazingPizza/Pages/Checkout.razor @@ -4,9 +4,10 @@ @inject OrderState OrderState @inject HttpClient HttpClient @inject NavigationManager NavigationManager +@implements IDisposable
- +

Review order

@@ -23,29 +24,28 @@
- +
@code { Order Order => OrderState.Order; - bool isSubmitting; - bool isError = false; + EditContext editContext; + bool isError = true; - async Task CheckSubmission(EditContext editContext) + protected override void OnInitialized() { - isSubmitting = true; - - var model = editContext.Model as Address; - isError = string.IsNullOrWhiteSpace(model?.Name) - || string.IsNullOrWhiteSpace(model?.Line1) - || string.IsNullOrWhiteSpace(model?.PostalCode); - if (!isError) - await PlaceOrder(); + editContext = new EditContext(Order.DeliveryAddress); + editContext.OnFieldChanged += HandleFieldChanged; + } - isSubmitting = false; + void HandleFieldChanged(object sender, FieldChangedEventArgs e) + { + isError = !editContext.Validate(); + StateHasChanged(); } async Task PlaceOrder() @@ -56,4 +56,14 @@ NavigationManager.NavigateTo($"myorders/{newOrderId}"); } + + protected void ShowError() + { + isError = true; + } + + public void Dispose() + { + editContext.OnFieldChanged -= HandleFieldChanged; + } } diff --git a/MyFirstBlazor/BlazingPizza/Shared/AddressEditor.razor b/MyFirstBlazor/BlazingPizza/Shared/AddressEditor.razor index bf2e444..05e7641 100644 --- a/MyFirstBlazor/BlazingPizza/Shared/AddressEditor.razor +++ b/MyFirstBlazor/BlazingPizza/Shared/AddressEditor.razor @@ -2,6 +2,7 @@
+
@@ -9,6 +10,7 @@
+
@@ -16,6 +18,7 @@
+
@@ -23,6 +26,7 @@
+
@@ -30,6 +34,7 @@
+
@@ -37,6 +42,7 @@
+
diff --git a/MyFirstBlazor/BlazingPizza/pizza.db-wal b/MyFirstBlazor/BlazingPizza/pizza.db-wal index 3fa0a25..941063c 100644 Binary files a/MyFirstBlazor/BlazingPizza/pizza.db-wal and b/MyFirstBlazor/BlazingPizza/pizza.db-wal differ