using System.ComponentModel;

namespace Lada.Framework.Data.Enums
{
    /// <summary>
    /// Danh sách các hành động cần ghi lịch sử của đơn hàng
    /// </summary>
    public enum TrackActionType
    {
        [Description("Tạo mới")]
        Add = 1,

        [Description("Nhận hàng")]
        Receive = 202,

        [Description("Cập nhật")]
        Update = 2,

        [Description("Xóa")]
        Delete = 3,

        [Description("Nhận quản lý")]
        Manage = 4,

        [Description("Xem thông tin")]
        ViewDetail = 5,

        [Description("Nhận hàng vào kho")]
        Inbound = 7,

        [Description("Chuyển hàng tới bưu cục kế tiếp")]
        Outbound = 8,

        [Description("Triển khai")]
        Deploy = 9,

        [Description("Hủy triển khai")]
        UnDeploy = 10,

        [Description("Fail")]
        Fail = 11,
        [Description("Sửa địa chỉ đơn hàng")]
        EditOrderAddress = 13,
        [Description("Sửa số điện thoại")]
        EditOrderPhone = 14,

        [Description("Đi giao hàng")]
        Delivery = 15,

        [Description("Đi giao hàng")]
        DeliveryFailed = 153,

        [Description("Đi giao hàng")]
        Delivered = 155,

        [Description("Hủy")]
        Cancel = 16,

        [Description("Bỏ hủy")]
        UnCancel = 17,

        [Description("Giao thành công")]
        Complete = 18,

        [Description("Nhận hàng vào kho từ giao hàng không thành công")]
        UnloadingFromDelivery = 20,

        [Description("Nhận hàng vào kho từ pickup thành công")]
        UnloadingFromPickup = 21,

        [Description("Nhận tiền COD")]
        CollectCod = 22,

        [Description("Chuyển tiền COD")]
        TransferCod = 25,

        [Description("Thanh toán COD cho đối tác")]
        Payment = 50,
        [Description("Hủy thanh toán COD cho đối tác")]
        PaymentRevert = 135,
        [Description("Thanh toán cước vận chuyển cho đối tác")]
        PaymentFee = 51,
        [Description("Thanh toán đối soát")]
        PaymentRegular = 52,
        [Description("Thanh toán đối soát FC")]
        PaymentRegularFc = 53,
        [Description("Hủy thanh toán cước cho đối tác")]
        PaymentFeeRevert = 115,
        [Description("Hủy thanh toán đối soát")]
        PaymentRegularRevert = 120,
        [Description("Triển khải chuyển hàng trả khách hàng")]
        DeployLoadingToCustomer = 54,
        [Description("Chuyển hàng trả khách hàng")]
        LoadingToCustomer = 55,
        [Description("Trả về không thành công")]
        ReturnFail = 56,
        [Description("Chuyển hàng trả khách hàng thành công")]
        Returned = 60,
        [Description("Nhập lại kho khi chuyển trả khách hàng không thành công")]
        UnloadingFromReturn = 65,
        [Description("Thay đổi chiều đi của đơn hàng")]
        OrderDirection = 83,
        [Description("Sửa tên sản phẩm và khuyến mãi")]
        EditProductNameAndBonus = 90,
        [Description("Lấy hàng từ đối tác")]
        Pickup = 100,
        [Description("Lấy hàng đơn thu hồi từ khách hàng")]
        PickupOrderCollect = 101,
        [Description("Nhận hàng vào kho từ phiếu pickup")]
        CollectGoodFromPickupBill = 102,
        [Description("Nhận hàng vào kho từ phiếu pickup")]
        CollectGoodFromReturnBill = 103,

        [Description("Lấy hàng không thành công")]
        PickupFail = 104,
        [Description("Lấy hàng thành công")]
        PickupComplete = 105,

        [Description("Bàn giao cho DVVC")]
        HandOverPartner = 109,
        [Description("Từ chối lấy hàng")]
        PickupReject = 106,
        [Description("Đơn thất lạc")]
        OrderLost = 107,
        [Description("Đơn hàng hỏng")]
        OrderDamage = 108,
        [Description("Thanh toán lương")]
        PaymentSalary = 130,
        [Description("Chuyển đơn hàng pickup")]
        TransferOrderPickup = 150,
        [Description("Chuyển đơn hàng đi giao")]
        TransferOrderDelivery = 151,
        [Description("Chuyển đơn trả hàng")]
        TransferOrderReturn = 152,
        [Description("Cập nhật trọng lượng, kích thước")]
        UpdateWeight = 160,
        [Description("Sửa địa chỉ lấy hàng")]
        EditSourceAddress = 170,
        [Description("Sửa địa chỉ giao hàng")]
        EditDestAddress = 171,
        [Description("Sửa địa chỉ trả hàng")]
        EditReturnAddress = 172,
        [Description("Cập nhật đơn hàng cấm bay")]
        UpdateProhibitedFlying = 175,
        [Description("Xác nhận chuyển hoàn")]
        ConfirmReturn = 178,
        [Description("Xóa trạng thái giao thành công")]
        DeleteCompleted = 180,
        [Description("Xóa trạng thái trả thành công")]
        DeleteReturned = 181,
        [Description("Cập nhập lưu kho")]
        StayReturn = 182,
        [Description("Gán lấy hàng")]
        AssignPickup = 201,
        [Description("Gán giao hàng")]
        AssignDelivery = 205,
        [Description("Gán giao hàng")]
        AssignReturn = 206,
        [Description("Cập nhật chiều đi giao")]
        UpdateToDelivery = 300,
        [Description("Cập nhật chiều trả về")]
        UpdateToReturn = 301,
        [Description("Thu tiền")]
        CollectMoney = 303,
        [Description("Tạo đối soát")]
        ReconciliationCreate = 400,
        [Description("Duyệt đối soát")]
        ReconciliationApprove = 401,
        [Description("Từ chối đối soát")]
        ReconciliationReject = 402,
        [Description("Chuyển tiền đối soát")]
        ReconciliationTransfer = 403
    }

    /// <summary>
    /// Phân loại hành trình theo người xem: Khách hàng, nội bộ hay cả 2
    /// </summary>
    public enum OrderTrackType
    {
        [Description("Track khách hàng tra cứu")]
        ForCustomer = 1,
        [Description("Track nội bộ")]
        ForInternal = 2,
        [Description("Tất cả")]
        ForAll = 3
    }

    /// <summary>
    /// Nguồn cập nhật: Mobile App Nội bộ, Mobile App khách hàng, Web nội bộ, Web khách hàng
    /// </summary>
    public enum ActionSource
    {
        [Description("App nội bộ")]
        InternalApp = 1,
        [Description("Web nội bộ")]
        InternalWeb = 2,
        [Description("App khách hàng")]
        CustomerApp = 3,
        [Description("Web khách hàng")]
        CustomerWeb = 4
    }
}
