using Edge.Core.Parser.BinaryParser.Util;
using ShellChina_EPS_Project_CarPlatePay_EpsClient_App.MessageEntity.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ShellChina_EPS_Project_CarPlatePay_EpsClient_App.MessageEntity.Outgoing
{
    public class MembershipInquiryRequest : MembershipInquiryCommand
    {
        /// <summary>
        /// P-3, P-34, P-41
        /// </summary>
        /// <param name="processCode">定长,3个字节的BCD码</param>
        /// <param name="carPlateNumber">变长,最大长度64字节的ASCII码</param>
        /// <param name="terminalId">定长,12 个字节ASCII码</param>
        public MembershipInquiryRequest(string carPlateNumber, string terminalId)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            base.P_3_处理码 = 020031;
            base.P_34_车牌号码 = carPlateNumber;
            base.P_41_终端编号 = terminalId;
            this.GenerateBitMapAndValue();
        }

        private void GenerateBitMapAndValue()
        {
            base.Content?.Clear();
            base.Content = new List<byte>()
                .Concat(base.P_3_处理码.GetBCDBytes(3))
                .Concat(Encoding.GetEncoding("GBK").GetBytes(base.P_34_车牌号码).Length.GetBCDBytes(2)).Concat(Encoding.GetEncoding("GBK").GetBytes(base.P_34_车牌号码))
                .Concat(Encoding.ASCII.GetBytes(base.P_41_终端编号.PadLeft(12, '0')))
                .ToList();
            //var fullMsgLen = base.Content.Count + 16;
            base.BitMap = BitMapHelper.CreateMap(3, 34, 41).ToList();
            //base.Content = fullMsgLen.GetBCDBytes(2)
            //    .Concat(base.MessageTypeIdentifier.GetBCDBytes(2))
            //    .Concat(base.BitMap)
            //    .Concat(base.Content).ToList();
        }
    }
}