using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;

namespace Common
{
    /// <summary>
    /// 与第三方TV云端对接：将语音文字上报
    /// </summary>
    public static class TVOperation
    {
        private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(TVOperation));
        //private static readonly string _iptvURL = "http://iot.gooorun.com:8282/uis/smartVoiceSkill/commonSmartPreInterceptor";
        //http://192.168.1.210:8888/epg/api/audioControl/control
        //private static readonly string _tclURL = "";
        //private static readonly string _tclAppKey = "4a4b4c125608";
        //private static readonly string _tclAppSecret = "4a4b4c125608";
        /// <summary>
        /// 远程控制IPTV
        /// </summary>
        /// <param name="tvControlToken"></param>
        /// <param name="tvControlUrl">控制地址</param>
        /// <param name="hotelCode"></param>
        /// <param name="roomNumber"></param>
        /// <param name="value"></param>
        public static bool ReportIPTV(string tvControlToken, string tvControlUrl, string hotelCode, string roomNumber, string value)
        {
            if (!string.IsNullOrEmpty(tvControlUrl))
            {
                try
                {
                    if (string.IsNullOrEmpty(tvControlToken))
                    {
                        tvControlToken = "DEFAULT_TOKEN";
                    }
                    IPTVPostData postData = new IPTVPostData()
                    {
                        token = tvControlToken,
                        hotelId = "",//hotelCode
                        roomId = roomNumber,
                        value = value
                    };
                    string param = Newtonsoft.Json.JsonConvert.SerializeObject(postData);
                    string result = HttpWebRequestHelper.PostWebRequest(tvControlUrl, param);
                    IPTVPostDataResult returnResult = JsonConvert.DeserializeObject<IPTVPostDataResult>(result);
                    if (returnResult.retCode == "1")
                    {
                        return true;
                    }
                    logger.Error(string.Format("酒店({0})客房({1})调用iptv接口({2})失败：{3}", hotelCode, roomNumber, tvControlUrl, returnResult.retMsg));
                    return false;
                }
                catch (Exception ex)
                {
                    logger.Error(string.Format("酒店({0})客房({1})调用iptv接口({2})失败：{3}", hotelCode, roomNumber, tvControlUrl, ex));
                    return false;
                }
            }
            logger.Error(string.Format("酒店({0})客房({1})调用iptv接口({2})失败", hotelCode, roomNumber, tvControlUrl));
            return false;
        }
    }
    /// <summary>
    /// 发送数据
    /// </summary>
    internal class IPTVPostData
    {
        /// <summary>
        /// 机顶盒序列号
        /// </summary>
        public string token { get; set; }
        /// <summary>
        /// 酒店ID
        /// </summary>
        public string hotelId { get; set; }
        /// <summary>
        /// 房间ID
        /// </summary>
        public string roomId { get; set; }
        /// <summary>
        /// 用户语句
        /// </summary>
        public string value { get; set; }
    }
    /// <summary>
    /// 返回
    /// </summary>
    internal class IPTVPostDataResult
    {
        /// <summary>
        /// 返回码
        /// </summary>
        public string retCode { get; set; }
        /// <summary>
        /// 返回描述
        /// </summary>
        public string retMsg { get; set; }
    }
}
