using NEIntelligentControl2.Models;
using NEIntelligentControl2.Models.Windturbine;
using NEIntelligentControl2.Service.WebSocket;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NEIntelligentControl2.Service.Windturbine
{
    public class SuggestionManager : IMessage
    {
        public List<string> MessageTypes { get; set; }
        private MessageBridge _MessageBridge;
        /// <summary>
        /// 推荐数量更改
        /// </summary>
        public Action<int> OnCountChanged { get; set; }
        /// <summary>
        /// 获得推荐风机
        /// </summary>
        public Action<List<WindturbineSuggestion>> OnSuggestion { get; set; }
        public List<WindturbineSuggestion> WindturbineSuggestions { get; set; }
        public SuggestionManager(MessageBridge mb)
        {
            _MessageBridge = mb;
            MessageTypes = new List<string>() { "SubscribeSuggestion".GetConfiguration() };
            _MessageBridge.Register(this);
        }

        public async Task OnMessage(object message)
        {
            List<WindturbineSuggestion> vals = message as List<WindturbineSuggestion>;
            await Task.Run(() =>
            {
                if (vals == null) return;
                WindturbineSuggestions = vals;
                OnCountChanged?.Invoke(vals.Count);
                OnSuggestion?.Invoke(vals);
            });
        }
    }
}