using Kean.Domain.Task.Events;
using Kean.Domain.Task.SharedServices.Proxies;
using System.Threading;

namespace Kean.Domain.Task.EventHandlers
{
    /// <summary>
    /// 创建输送命令成功时,下达控制任务
    /// </summary>
    public sealed class BypassEmptySuccessEventHandler_Wcs : EventHandler<BypassEmptySuccessEvent>
    {
        private readonly WcsProxy _wcsProxy; // 控制域

        /// <summary>
        /// 依赖注入
        /// </summary>
        public BypassEmptySuccessEventHandler_Wcs(
            WcsProxy wcsProxy)
        {
            _wcsProxy = wcsProxy;
        }


        /// <summary>
        /// 处理程序
        /// </summary>
        public override async System.Threading.Tasks.Task Handle(BypassEmptySuccessEvent @event, CancellationToken cancellationToken)
        {
            //if (!@event.Manual && !@event.Previous.HasValue)
            if (!@event.Manual)
            {
                await _wcsProxy.SendOutput(
                    @event.Id,
                    @event.Original.Warehouse.ToString(),
                    4,
                    @event.Priority ?? 0,
                    @event.Barcode,
                    @event.Original.Device,
                    @event.Destination.Device,
                    @event.Destination.Warehouse.ToString(),
                    @event.Timestamp,
                    @event.Operator);
            }
        }
    }
}