using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;

namespace TellerSystem.Contract.Function
{
    /// <summary>
    /// 机构信息查询
    /// 根据输入机构编号查询机构信息
    /// </summary>
    public class QueryDepartmentInformation : TFOutput
    {
        #region Output

        /// <summary>
        /// 交易类型 0540
        ///
        /// </summary>
        public string JYLX { get; internal set; }

        /// <summary>
        /// 上级机构号 0580
        ///
        /// </summary>
        public string SJJGH { get; internal set; }

        /// <summary>
        /// 所属清算机构 0590
        ///
        /// </summary>
        public string SSQSJG { get; internal set; }

        /// <summary>
        /// 通存通兑标志 0600
        /// [空格表示没有查询相关数据]Bit[0]:(1-辖内可通存 2-辖内可通兑 3-辖内可通存通兑 4-辖内不可通存通兑) Bit[1]: 非辖内本行介质在他行通存通兑标志(1-可在他行可通存 2-可在他行可通兑 3-可在他行通存通兑 4-非辖内不可通存通兑) Bit[2]:是否可以查询他行数据(1-可以查他行 2-不可以查他行) BIT3:储蓄结息多进程分组标志
        /// </summary>
        public string TCTDBZ { get; internal set; }

        /// <summary>
        /// 电话号码 0620
        ///
        /// </summary>
        public string DHHM { get; internal set; }

        /// <summary>
        /// 网点营业状态 0640
        /// 0.网点正常签退 1.网点签到状态 2.可签到状态 *.关闭
        /// </summary>
        public string WDYYZT { get; internal set; }

        /// <summary>
        /// 机构类型 0670
        /// 0.科技部（做日终处理） 1.总行清算中心 2.总行财务部 3.总行营业部 4.支行（联社）清算中心 5.支行（联社）财务中心 6.支行(联社)营业部；7.营业网点（信用社） 8.总行 9.管理机构（虚拟）
        /// </summary>
        public string JGLX { get; internal set; }

        /// <summary>
        /// 机构名称 0810
        ///
        /// </summary>
        public string JGMC { get; internal set; }

        /// <summary>
        /// 机构地址 0820
        ///
        /// </summary>
        public string JGDZ { get; internal set; }

        /// <summary>
        /// 支付系统行号 0860
        ///
        /// </summary>
        public string ZFXTXH { get; internal set; }

        /// <summary>
        /// 农信银行号 0870
        ///
        /// </summary>
        public string NXYXH { get; internal set; }

        /// <summary>
        /// 同城批次 0550
        ///
        /// </summary>
        public string TCPC { get; internal set; }

        /// <summary>
        /// 银联机构码 0880
        ///
        /// </summary>
        public string YLJGM { get; internal set; }

        #endregion Output

        #region Input

        /// <summary>
        /// 参数清单
        /// </summary>
        public class Input : TFInput
        {
            /// <summary>
            /// 机构号 0910
            ///
            /// </summary>
            public string JGH { get; set; }

            /// <summary>
            /// 定义业务逻辑
            /// </summary>
            /// <returns></returns>
            public override TFOutput Raise()
            {
                //拉取数据
                var output = new QueryDepartmentInformation();
                PageData.TradeAPIs.InitFd(MessageData);
                PageData.TradeAPIs.CommSend(MessageData);
                MessageData.Fd126_5 = MainCode;
                MessageData.Fd16 = "K024";
                MessageData.Fd91 = JGH;

                PageData.TradeAPIs.CallServer(MessageData);
                if (MessageData.Fd12 != "0000")
                {
                    output.IsFailed = true;
                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
                }
                output.JYLX = (MessageData.Fd54);
                output.SJJGH = (MessageData.Fd58);
                output.SSQSJG = (MessageData.Fd59);
                output.TCTDBZ = (MessageData.Fd60);
                output.DHHM = (MessageData.Fd62);
                output.WDYYZT = (MessageData.Fd64);
                output.JGLX = (MessageData.Fd67);
                output.JGMC = (MessageData.Fd81);
                output.JGDZ = (MessageData.Fd82);
                output.ZFXTXH = (MessageData.Fd86);
                output.NXYXH = (MessageData.Fd87);
                output.TCPC = (MessageData.Fd55);
                output.YLJGM = (MessageData.Fd88);
                return output;
            }
        }

        #endregion Input
    }
}