using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
using NewRock.Sdk.Control.Response;

namespace NewRock.Sdk.Control.Request
{
    [XmlRoot(ElementName = "Control")]
    public class AssginConfigExtRequest: INewRockRequest<AssginConfigExtResponse>
    {

        [XmlAttribute("attribute")]
        public string Attribute { get; set; }

        [XmlElement("ext")]
        public ConfigExt Ext { get; set; }
    }

    public class ConfigExt
    {
        /// <summary>
        /// 分机的线路编码
        /// 注：通过查询设备信息可获取线路编号
        /// </summary>
        [XmlAttribute("lineid")]
        public string Lineid { get; set; }

        /// <summary>
        /// 分机号码
        /// </summary>
        [XmlElement("id")]
        public string Id { get; set; }

        /// <summary>
        /// 工号，分机接通前会向来电方播放该工号
        /// </summary>
        [XmlElement("staffid")]
        public string Staffid { get; set; }

        /// <summary>
        /// 分机绑定的手机号，该手机号可作为分机同振、或呼叫转移时的缺省配置
        /// </summary>
        [XmlElement("mobile")]
        public string Mobile { get; set; }

        /// <summary>
        /// 分机所属的分机组，同一分机可属多个分机组。
        /// 注：若配置分机时未携带group 信息，则分机将从该分机组中被清除。
        /// </summary>
        [XmlElement("group")]
        public List<string> Groups { get; set; }

        /// <summary>
        /// 语音文件，这里为分机队列中排队等待时播放的语音文件
        /// </summary>
        [XmlElement("voicefile")]
        public string VoiceFile { get; set; }

        /// <summary>
        /// 员工的电子邮件地址（暂无对应功能）
        /// </summary>
        [XmlElement("email")]
        public string Email { get; set; }

        /// <summary>
        /// 呼叫权限
        /// </summary>
        [XmlElement("Call_Restriction")]
        public string Call_Restriction { get; set; }

        /// <summary>
        /// 代接权限，是否允许来电被其它分机代接
        /// </summary>
        [XmlElement("Call_Pickup")]
        public string Call_Pickup { get; set; }

        /// <summary>
        /// 免打扰功能开关
        /// （注：该分机为总机时无效），开启免打扰后分机将屏蔽所有来电，但能主动发起呼叫
        /// </summary>
        [XmlElement("No_Disturb")]
        public string No_Disturb { get; set; }

        /// <summary>
        /// 呼叫转移方式
        /// (注：该分机为总机时无效
        /// </summary>
        [XmlElement("Fwd_Type")]
        public string Fwd_Type { get; set; }

        /// <summary>
        /// 呼叫转移号码
        /// （注：该分机为总机时无效）
        /// </summary>
        [XmlElement("Fwd_Number")]
        public string Fwd_Number { get; set; }

        /// <summary>
        /// 同振号码
        /// </summary>
        [XmlElement("Fork")]
        public string Fork { get; set; }

        /// <summary>
        /// 叫醒闹钟时间
        /// 24 小时制，精确到分钟。
        /// （该功能相对局限，可通过其他方式扩展）
        /// </summary>
        [XmlElement("WAKEUP")]
        public string WAKEUP { get; set; }

        /// <summary>
        /// 实时录音功能开关
        /// </summary>
        [XmlElement("record")]
        public string Record { get; set; }

        /// <summary>
        /// API 的功能开关
        /// </summary>
        [XmlElement("api")]
        public string Api { get; set; }

        /// <summary>
        /// IP 分机点击拨号是否自动应答
        /// (注：该参数仅对 IP 分机有效，且需要 IP 话机支持。如，迅时、方位等大部分品牌的话机）
        /// </summary>
        [XmlElement("autoAnswer")]
        public string AutoAnswer { get; set; }

    }
}
