namespace ApiTerceiroSimulador.Models.OpenDelivery
{
    public static class OrderEvents
    {
        /// <summary>
        /// Order created.
        /// </summary>
        public static string Created => "CREATED";

        /// <summary>
        /// Order confirmed.
        /// </summary>
        public static string Confirmed => "CONFIRMED";

        /// <summary>
        /// Informs the Software Service that they can start prepare the order.
        /// </summary>
        public static string PreparationRequested => "PREPARATION_REQUESTED";

        /// <summary>
        /// Preparation of the order has started
        /// </summary>
        public static string Preparing => "PREPARING";

        /// <summary>
        /// Order ready for pickup by the customer or delivery person.
        /// </summary>
        public static string ReadyForPickup => "READY_FOR_PICKUP";

        /// <summary>
        /// Order went out for delivery.
        /// </summary>
        public static string Dispatched => "DISPATCHED";

        /// <summary>
        /// Informs the Software Service the designated area to pick up the order.
        /// </summary>
        public static string PickupAreaAssigned => "PICKUP_AREA_ASSIGNED";

        /// <summary>
        /// Order has been picked up by customer.
        /// </summary>
        public static string PickedUp => "PICKED_UP";

        /// <summary>
        /// Order has been delivered to customer.
        /// </summary>
        public static string Delivered => "DELIVERED";

        /// <summary>
        /// Order completed.
        /// </summary>
        public static string Concluded => "CONCLUDED";

        /// <summary>
        /// Sent by the Software Service to the Ordering Application.
        /// </summary>
        public static string CancellationRequested => "CANCELLATION_REQUESTED";

        /// <summary>
        /// It must be sent from the Ordering Application to the Software Service.
        /// </summary>
        public static string CancellationRequestDenied => "CANCELLATION_REQUEST_DENIED";

        /// <summary>
        /// When the order is actually cancelled.
        /// </summary>
        public static string Cancelled => "CANCELLED";

        /// <summary>
        /// It must be sent from the Ordering Application to the Software Service.
        /// </summary>
        public static string OrderCancellationRequest => "ORDER_CANCELLATION_REQUEST";

        /// <summary>
        /// When the cancellation request from the Ordering Application is denied by the Software Service.
        /// </summary>
        public static string CancelledDenied => "CANCELLED_DENIED";
    }
}
