using Hotline.Caching.Interfaces;
using Hotline.CallCenter.Tels;
using Hotline.DI;
using Hotline.Share.Enums.CallCenter;
using Hotline.Share.Notifications.NewRockCallCenter;
using MediatR;
using XF.Domain.Cache;

namespace Hotline.Application.Handlers.CallCenter.ExtState
{
    [Injection(EventHandlerType = EEventHandlerType.CallCenter, Label = AppDefaults.CallCenterType.XunShi)]
    public class BusyNotificationHandler : INotificationHandler<BusyNotification>
    {
        private readonly ITelRepository _telRepository;
        private readonly ITelCacheManager _telCacheManager;
        private readonly ITypedCache<Tel> _typedCache;

        public BusyNotificationHandler(ITelRepository telRepository, ITelCacheManager telCacheManager, ITypedCache<Tel> typedCache)
        {
            _telRepository = telRepository;
            _telCacheManager = telCacheManager;
            _typedCache = typedCache;
        }

        public async Task Handle(BusyNotification notification, CancellationToken cancellationToken)
        {
            var telModel = _telCacheManager.GetTel(notification.TelNo);
            telModel.TelStatus = ETelStatus.Active;
            //await _telRepository.UpdateAsync(telModel, cancellationToken);
            await _typedCache.SetAsync(telModel.No, telModel, cancellationToken: cancellationToken);
        }
    }
}
