|
|
|
@@ -1,4 +1,5 @@
|
|
|
|
|
using LiteCharms.Features.S3.Abstractions;
|
|
|
|
|
using LiteCharms.Features.Shop.Products.Models;
|
|
|
|
|
using static LiteCharms.Features.S3.Constants;
|
|
|
|
|
|
|
|
|
|
namespace ShopAdmin.Components;
|
|
|
|
@@ -8,7 +9,6 @@ public partial class CreateProduct([FromKeyedServices(BookshopBucketName)] IS3Se
|
|
|
|
|
private bool isCalendarOpen = false;
|
|
|
|
|
private DateTime calendarViewingMonth = DateTime.Today;
|
|
|
|
|
private List<DateTime?> calendarDays = new();
|
|
|
|
|
private string currentCalendarMonthYearText => calendarViewingMonth.ToString("MMMM yyyy");
|
|
|
|
|
|
|
|
|
|
private readonly CancellationTokenSource cancellationTokenSource = new();
|
|
|
|
|
private CancellationToken cancellationToken;
|
|
|
|
@@ -185,37 +185,4 @@ public partial class CreateProduct([FromKeyedServices(BookshopBucketName)] IS3Se
|
|
|
|
|
isCalendarOpen = false; // Collapse popup smoothly on successful selection
|
|
|
|
|
StateHasChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class CreateProductModel
|
|
|
|
|
{
|
|
|
|
|
[Required(ErrorMessage = "Product name is required.")]
|
|
|
|
|
public string? Name { get; set; }
|
|
|
|
|
|
|
|
|
|
[Required(ErrorMessage = "Summary is required.")]
|
|
|
|
|
public string? Summary { get; set; }
|
|
|
|
|
|
|
|
|
|
[Required(ErrorMessage = "Description is required.")]
|
|
|
|
|
public string? Description { get; set; }
|
|
|
|
|
|
|
|
|
|
[Range(0.01, double.MaxValue, ErrorMessage = "Price must be greater than zero.")]
|
|
|
|
|
public decimal Price { get; set; }
|
|
|
|
|
|
|
|
|
|
[Required(ErrorMessage = "Author metadata is required.")]
|
|
|
|
|
public string? Author { get; set; }
|
|
|
|
|
|
|
|
|
|
[Required(ErrorMessage = "Publication Date is required.")]
|
|
|
|
|
public DateTime PublishDate { get; set; } = DateTime.Today;
|
|
|
|
|
|
|
|
|
|
[Required(ErrorMessage = "Copyright Information field is required.")]
|
|
|
|
|
public string? CopyrightInfo { get; set; }
|
|
|
|
|
|
|
|
|
|
[Required(ErrorMessage = "ISBN code is required.")]
|
|
|
|
|
[RegularExpression(@"^(?=(?:\D*\d){10}(?:(?:\D*\d){3})?$)[\d-]+$", ErrorMessage = "Please enter a valid ISBN-10 or ISBN-13 string.")]
|
|
|
|
|
public string? Isbn { get; set; }
|
|
|
|
|
|
|
|
|
|
[Required(ErrorMessage = "Primary image is required.")]
|
|
|
|
|
public string? ImageUrl { get; set; }
|
|
|
|
|
|
|
|
|
|
public List<string> Thumbnails { get; set; } = [];
|
|
|
|
|
}
|