using Lada.Framework.Data.Enums;

namespace Lada.Framework.Infrastructures.Extensions
{
    /// <summary>
    /// Extension methods cho OrderStatus và OrderPhysicalStatus
    /// </summary>
    public static class OrderStatusExtensions
    {
        /// <summary>
        /// Lấy CSS class tương ứng với trạng thái đơn hàng
        /// </summary>
        /// <param name="status">Trạng thái đơn hàng</param>
        /// <returns>CSS class name</returns>
        public static string GetStatusTagClass(this OrderStatus status)
        {
            switch (status)
            {
                case OrderStatus.New:
                    return "tag-default";
                case OrderStatus.Cancelled:
                    return "tag-red";
                case OrderStatus.Received:
                    return "tag-lime";
                case OrderStatus.PickupFail:
                    return "tag-blue";
                case OrderStatus.Delivered:
                    return "tag-green";
                case OrderStatus.DeliveryFail:
                    return "tag-warning";
                case OrderStatus.Returned:
                    return "tag-red";
                default:
                    return "tag-default";
            }
        }

        /// <summary>
        /// Lấy CSS class tương ứng với trạng thái vật lý của đơn hàng
        /// </summary>
        /// <param name="status">Trạng thái vật lý đơn hàng</param>
        /// <returns>CSS class name</returns>
        public static string GetPhysicalStatusTagClass(this OrderPhysicalStatus status)
        {
            switch (status)
            {
                case OrderPhysicalStatus.WaitToPickup:
                    return "tag-default";
                case OrderPhysicalStatus.Cancelled:
                    return "tag-red";
                case OrderPhysicalStatus.AssignedPickup:
                    return "tag-indigo";
                case OrderPhysicalStatus.OnPicking:
                    return "tag-blue";
                case OrderPhysicalStatus.Picked:
                    return "tag-lime";
                case OrderPhysicalStatus.PickFailed:
                    return "tag-warning";
                case OrderPhysicalStatus.Inbound:
                    return "tag-teal";
                case OrderPhysicalStatus.Outbound:
                    return "tag-cyan";
                case OrderPhysicalStatus.Delivered:
                    return "tag-green";
                default:
                    return "tag-default";
            }
        }
    }
}
