You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
46 lines
1.3 KiB
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace BlazingPizza
|
|
{
|
|
public class OrderWithStatus
|
|
{
|
|
public readonly static TimeSpan PreparationDuration = TimeSpan.FromSeconds(10);
|
|
public readonly static TimeSpan DeliveryDuration = TimeSpan.FromMinutes(1); // Unrealistic, but more interesting to watch
|
|
|
|
public Order Order { get; set; }
|
|
|
|
public string StatusText { get; set; }
|
|
|
|
public bool IsDelivered => StatusText == "Delivered";
|
|
|
|
public static OrderWithStatus FromOrder(Order order)
|
|
{
|
|
// To simulate a real backend process, we fake status updates based on the amount
|
|
// of time since the order was placed
|
|
string statusText;
|
|
var dispatchTime = order.CreatedTime.Add(PreparationDuration);
|
|
|
|
if (DateTime.Now < dispatchTime)
|
|
{
|
|
statusText = "Preparing";
|
|
}
|
|
else if (DateTime.Now < dispatchTime + DeliveryDuration)
|
|
{
|
|
statusText = "Out for delivery";
|
|
}
|
|
else
|
|
{
|
|
statusText = "Delivered";
|
|
}
|
|
|
|
return new OrderWithStatus
|
|
{
|
|
Order = order,
|
|
StatusText = statusText
|
|
};
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|