2017-01-17 18:32:40 -08:00
|
|
|
|
namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate
|
2016-11-21 12:41:36 +01:00
|
|
|
|
{
|
2017-01-30 15:46:43 +01:00
|
|
|
|
using Seedwork;
|
2017-02-23 13:57:36 +01:00
|
|
|
|
using SeedWork;
|
2016-11-21 12:41:36 +01:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
public class OrderStatus
|
2017-02-23 13:57:36 +01:00
|
|
|
|
: Enumeration
|
2016-11-21 12:41:36 +01:00
|
|
|
|
{
|
|
|
|
|
public static OrderStatus InProcess = new OrderStatus(1, nameof(InProcess).ToLowerInvariant());
|
2016-11-24 14:59:25 +01:00
|
|
|
|
public static OrderStatus Shipped = new OrderStatus(2, nameof(Shipped).ToLowerInvariant());
|
|
|
|
|
public static OrderStatus Canceled = new OrderStatus(3, nameof(Canceled).ToLowerInvariant());
|
2016-11-21 12:41:36 +01:00
|
|
|
|
|
|
|
|
|
protected OrderStatus()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public OrderStatus(int id, string name)
|
2017-02-23 13:57:36 +01:00
|
|
|
|
: base(id, name)
|
2016-11-21 12:41:36 +01:00
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static IEnumerable<OrderStatus> List()
|
|
|
|
|
{
|
2016-11-24 14:59:25 +01:00
|
|
|
|
return new[] { InProcess, Shipped, Canceled };
|
2016-11-21 12:41:36 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static OrderStatus FromName(string name)
|
|
|
|
|
{
|
|
|
|
|
var state = List()
|
|
|
|
|
.SingleOrDefault(s => String.Equals(s.Name, name, StringComparison.CurrentCultureIgnoreCase));
|
|
|
|
|
|
|
|
|
|
if (state == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException($"Possible values for OrderStatus: {String.Join(",", List().Select(s => s.Name))}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return state;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static OrderStatus From(int id)
|
|
|
|
|
{
|
|
|
|
|
var state = List().SingleOrDefault(s => s.Id == id);
|
|
|
|
|
|
|
|
|
|
if (state == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException($"Possible values for OrderStatus: {String.Join(",", List().Select(s => s.Name))}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return state;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|