Thank you for your feedback AgaveJoe
I've made 100% sure to select a date from the datepicker before placing the order. Below is my customerOrderHeaderModel and my full controller method and service. Please let me know if you need any further info, i'm stumped on this one.
public partial class CustomerOrderHeaderModel
{
[Key]
[DisplayName("Order Id:")]
public Guid OrderId { get; set; }
[DisplayName("Order Date:")]
public DateTime OrderDate { get; set; }
[DisplayName("Customer Id:")]
public Guid CustomerId { get; set; }
[DisplayName("Order No:")]
public string OrderNumber { get; set; } = null!;
[DisplayName("Order Status:")]
public string OrderStatus { get; set; } = null!;
[DisplayName("Total Amount:")]
public decimal TotalAmount { get; set; }
[DisplayName("Notes:")]
public string? Notes { get; set; }
[DisplayName("Date Required:")]
[BindProperty, DataType(DataType.Date)]
public DateTime DateRequired { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TempOrderId { get; set; }
}
[HttpPost]
public async Task<IActionResult> PlaceOrder(CustomerOrderViewModel orderModel)
{
var orderNumber = await _customerOrdersService.PlaceOrder(orderModel.OrderHeaderModel.CustomerId, orderModel);
TempData["NotificationType"] = "success";
TempData["Notification"] = $"Order placed successfully. Your order number is: {orderNumber}.";
return RedirectToAction("NewCustomerOrderProductList", "CustomerProducts");
}
public async Task<string> PlaceOrder(Guid customerId, CustomerOrderViewModel orderModel)
{
var newOrderNumber = await GenerateOrderNumber();
var orderHeader = new CustomerOrderHeaderModel
{
OrderId = Guid.NewGuid(),
OrderDate = DateTime.Now,
CustomerId = customerId,
OrderNumber = newOrderNumber.ToString(),
OrderStatus = "Placed",
TotalAmount = orderModel.OrderLinesModels.Sum(l => l.UnitPrice * l.OrderQty),
DateRequired = orderModel.OrderHeaderModel.DateRequired,
Notes = orderModel.OrderHeaderModel.Notes,
};
await _orderHeaderRepository.CreateOrderHeaderAsync(orderHeader);